This article is for those software developers who dislike being treated as code monkeys. The ones that love to create products and see the impact of their work on the world (a.k.a. making a segment of the human population happier).
This article is also for developers who love to be told what to do, write some code and call it a day. I’m not judging you, I just want to show you a different perspective and hope that you find it insightful.
Let’s start with the question: What is a software developer? Stop for a second and answer it before going ahead with the article.
I tried to answer that question, and that brought me back in time to when I was 14 (I’m 30 now). At that time I was editing my MSN blog to look pretty and impress girls with my poems and short stories. It was just simple CSS, but man, IT was powerful! After that came HTML, and then PHP and MySQL, and I went all-in building websites from scratch. What came out of that period was a series of failed projects: my personal website, a social network, and a browser game. I wasn’t alone during those adventures, one of my dearest friends also got into “the web stuff” and created a fantasy football app that he used for several years with his friends. We loved technology, we loved building products with it, and we were dreaming big!
We were amazed about what you could achieve with such technologies. And we didn’t care about clean code, best practices, design patterns, and Agile. We just wanted to create something great.
So, what was a developer for us? Someone who knew how to use technology to build cool stuff that they thought could be useful for the world. We failed miserably in the last part.
Fast forward 15 years and I’m now working as a software engineer, and I’ve been doing so for the last 7 years. How did my opinion change during that time?
The product thinkers
I may be wrong here to say that nowadays developers fall mainly into two categories: the ones that love to be told what to build and the ones that love building software, but also have at heart the impact on the final users and business. I’ll call them the “product thinkers”.
Product thinkers see technology as a means to an end, not the end itself. They take joy in product discovery, suggesting improvements for new features or how to improve the existing ones. They weigh every technical choice against the impact on the user experience or on the business. They want to see their work being used by real people, see how they react and be happy to know that they’re making their life better or worst and act on it. They don’t go all-in in developing a feature, but they like to understand the why behind it. They like to have the big picture, and understand the domain within the product works, so they can make good decisions. They like to prototype, they like feedback. They are product thinkers!
There’s nothing wrong with the “tell-me-what-to-do-type”. Some people love the tools more than the problems they solve and that’s fine, but IMHO there’s so much potential wasted. They thrive in feature factories (someone creates requirements ⇒ developers build them without many questions asked), which are usually agencies, but also product companies.
The “product thinkers” find those places mind-numbing after a bit. That spirit that brought them into the industry is caged and trying to get out constantly kicks in, forced to be quiet by common beliefs (developers should only focus on code) and managers who don’t understand software development (a highly collaboratively set of activities aimed to make people’s lives better)
I have the feeling that product thinkers are a minority in the industry, or maybe they haven’t just gotten a chance to speak up and express what they think since it goes against the common belief about what a developer should be.
I don’t have a solution for that (but I have some ideas I’ll be exploring), if not writing about it in the hope to reach more people that feel the same. In my everyday job, I try to act as a product thinker as much as I can, asking questions, challenging assumptions, and caring about the impact of the work. It can be uncomfortable sometimes, but change is never comfortable.
Follow me on Twitter: @peppesilletti