Categories
Programming

Programmers vs Developers

I have noticed this trend emerging, whereby people in the software industry start trying to attach meaning to already-in-use-terms. You may have recently seen people trying to differentiate between a “programmer” and a “developer” – trying to angle these titles as if one is a positive title and the other negative.

Here’s an example:

“A programmer is someone who doesn’t write unit tests. A developer does”

What rubbish!

A programmer is; “a person who writes computer programs” whereas a developer is “a person or organization that develops something”. So the difference is in specificity – in fact, you probably ought to avoid the word “developer” unless it is prefixed with an industry, for example software developer or property developer. You can even be a developer without being a programmer – Scrum teams count all team members as developers, and some of them may not be able to write code at all.

So really, what people actually mean is: “A bad programmer is someone who doesn’t write unit tests. A good programmer does”. This is still way under any character limit I’m aware of, so there’s no need to skimp on saying what you mean rather than trying to inject meaning into existing words.

So don’t rush to update your CV just yet if you’ve called yourself a programmer.

Now let’s handle a couple of other apparently confusing terms.

Designer

This is someone who “plans the form, look, or workings of something before its being made or built”. This word is not interchangeable with the word “developer”. A “web designer” and a “web developer” are indeed two very different things, although an individual may have both sets of skills.

Engineer

This officially means “a person who designs, builds, or maintains engines, machines, or public works”, but has been acquired by the software industry thanks to a style of building software that is based on engineering principles. If you aren’t working based on engineering principles you should probably avoid this word – at least until you have read Pete McBreen’s book, Software Craftsmanship.

Guru

Or Ninja. etc. These terms have been borrowed from various places to be used in smoke-pumping factories the world over. Essentially, this is the hip way of making the point that you are looking for a “proper expert” in something. Whenever you use one of these phrases, please read up on the original meaning and think about the connotations of the name. I would cringe at being called an Agile-Guru, because I’m not religious about Agile, I am pragmatic about it, for example. I’d happily be called a Rockstar Programmer though.