Developer versus Programmer

What's the difference between a (Software) Developer and a (Computer) Programmer? Joe Spolsky's had a good post this week on his Joel on Software blog discussing at length by comparing the difference between two Hebrew words...which are all Greek to me until he started explaining it in English. Joel also pointed to another good blog entry by Eric Sink, entitled Small ISVs: You need Developers, not Programmers, which makes a similar distinction. In effect, from a responsibilities perspective, they both say that a programmer is someone who does what's sufficient, no more, no less. And a developer is one who does what's necessary.

Although I appreciate and understand the need to make the distinction, I think the distinction is borne from a human resource or management perspective, not one of a technical perspective. The title Software Developer only started appearing in employment ads in recent years. Before that, back in the days where computer programmers are still a rare species, all the relevant titles you would see in a job posting are Programmer/Analyst, Application Programmer, System Programmer, or simply Programmer. And it is not unplausible to see the following responsibilities mentioned in the job description: responsible for writing functional specification, implementing programming logic as per specs, writing test cases to be executed by testers, perform bug fixes, may involve writing of user documentation, etc... My point is that back then a programmer was not necessarily someone who just does the coding, and good programmers didn't just do what they were told.

Back then when I went to my high school guidance counsellor to try to chart my career path, the brochure only had about a couple of career options for computers: Computer Programmer (meant for those interested in software) and Computer Engineer (meant for those interested in hardware).

Now, with the explosion of jobs created by the computer industry in the past few decades, suddenly there's a need to differentiate between a Developer and a Programmer. That's unfortunate, because to me they both mean the same thing. When I explain what I do to someone who's computer challenged, I'd say I'm a computer programmer, eventhough my job title says "Software Developer". They know, albeit acutely, what "computers" are, and I can easily explain away what "programmer" means. Instead, with a fancy term like "Software Developer", I'd have to explain the difference between software and hardware--a much more difficult thing to explain to someone with zero knowledge of computers.