Mike Sutton recently wrote about the distinction between developer and programmer and why it matters . Like everyone else in the field, I do consider there is a distinction, although perhaps, my view is slightly different than Mike’s.
I am, was and forever will be a developer. I always avoided the word programmer/coder because I consider myself to be a business minded person who knows how to code. I am a developer because I like to build (virtual) products. It just happens that I’m using code to do it. I’m not the type who learns new programming languages just for fun. Programming is a tool for me, but it’s a tool I find very suitable for my style.
My concern and focus is mainly on the product but I’m well aware that as a developer you really have to know how to properly use your tools. That’s why I’ve learned about designed patterns, DDD, TDD etc. They’re good tools or mindsets that help me worry less about the code itself.
I know a lot of developers who love programming itself. They always want to know about the latest cool languages or smart algorithms. They are passionate about the art of coding and they could talk for days about how python is elegant or how awesome F# is. They are the people who live and breath technology, the people you want to call when you need to someone who can squeeze any last bit of optimization from a tech. They are experts programming wise.
The main distinction (in my opinion) between the developer and the programmer is that the former is focusing on the software result (the what and why) while the latter favours the** how**. A (software) developer must be a programmer as well, but the art of code isn’t his priority.
I agree with Mike that being developer is more of an attitude than a function, after all, everyone involved is ‘building’ something. A QA tester helps with development, but is he a developer? The project manager, well… manages the whole thing, is he a developer? However, as stated above, for me the attitude is about a programmer’s primary focus.
However, from the Client/Product Owner’s point of view, the developer is an abstraction of the whole team and this tells us that for the rest of the world, anyone involved in creating a software product is viewed as a developer, although functionally there are 3 backend programmers, 1 frontend programmer, 2 designers and 3 testers lead by a manager.
About Mike’s redefining the team concept, I don’t see things that way. I believe that anyone in a team, developer or not, should learn and know more than strictly their codecise function. Flexibility and communication are important skills no matter what you do and I don’t see a developer being an ‘evolved’ programmer who now knows how to do some QA work. I’m expecting every team member to be aware of what they’re building and to understand each other roles in the process.
I do think that while many people will agree there is a difference between developer and programmer/coder, each will have their own slightly different definitions. So I’m aware you might not totally agree with what I’ve wrote above.