Programmer vs developer

I read this tweet today:

I’ve seen variations of that statement many times over the years. It’s a statement that resonnates with many people. It’s easy to see why. After all, we’re not mere programmers. We do lots of things.

And yet I find myself going in the opposite direction. I am increasingly referring to myself as a programmer these days. You might say I’ve come full circle.

Many years ago, I started out thinking of myself as a programmer. I was naive, I didn’t know what software development was really about. Then, quite quickly, I started thinking of myself as a software developer instead. But now I think of myself as a programmer again. This despite doing a lot more “non-programmer” tasks now than I used to. I also think code is less important than I used to. In fact, I’m more of a software developer and less of a programmer than ever. And yet I’ve started going back to the designation of programmer. How come?

How can I explain these two switches, first from programmer to developer, then back to programmer again?

The switches correspond to exactly two realizations.

The first realization, maybe twenty years ago, was that programming isn’t everything. To be effective in my work, I soon figured that I had to do more – much more! – than just write code. And so I called myself a software developer in reflection of that.

I realized that there were many things I needed to master that were just as important as programming. For one thing, I needed to learn to collaborate effectively with other people (how to negotiate, explain opinions, share ideas, handle being challenged, compromise, how to speak up and how to shut up). I also needed to learn that figuring out what the problem should be is just as important as chasing a solution as quickly as possible, that there are many problems for which there are no technical solutions, and a slew of other things. I even realized that code quality is largely determined by contextual forces, not coding chops. I realized that agility is primarily a property of organizations. To deal with all of this, I started looking into domain-driven design, thinking about language, categorization, abstraction, systems thinking. I grew aware of socio-technical factors.

Along that path, I’ve eventually come to a second realization. That realization, made only recently, is that programming isn’t everything.

Ha ha! Gotcha! It’s the exact same realization! But my interpretation is different now.

Here’s how I think about it these days: If we really mean that programming isn’t everything, if software development is a multi-disciplinary, cross-team effort, then how come only programmers are referred to as software developers? That doesn’t sound right at all. Why aren’t the user experience experts software developers? The testers? The graphic designers? The product owners? They all develop software, don’t they?

Hence, the reason I’ve started referring to myself as a programmer again is not that I’m not a software developer. I am. It’s that I’m not the only software developer. By referring to myself as a software developer, I feel like I’m perpetuating the view that as a programmer, I am somehow special in this effort. Like I’m the one doing the real work. I’d like to get away from that. It’s not true.

The one activity that I do do that people with other specialities don’t do, is program. I am a programmer. Some of the other software developers I work with are not.