Following on my previous article, I thought to delve a little further into the difference in people’s understanding of these titles. Not surprisingly I found that the confusion is quite wide-spread, and in fact it seems to be the source topic of an ongoing debate.

A lot has been said on the topic, ranging from casual indifference to vehement opposition to what is perceived to be the “other camp”. Personally I find the debate somewhat pointless beyond the simple explanations of the terms. The best I’ve found is from a recent uncredited [article on Hacknot].

Programmer:
A modern programmer loves cutting code – and only cutting code. They delight in code the way a writer delights in text. Programmers see their sole function in an organization as being the production of code, and view any task that doesn’t involve having their hands on the keyboard as an unwanted distraction.

Developer:
Developers like to code as well, but they see it as being only a part of their job function. They focus more on delivering value than delivering program text, and know that they can’t create value without having an awareness of the business context into which they will deploy their application, and the organizational factors that impact upon its success once delivered.

The article further holds a fair number of valid points, but in its entirety seems to become slightly emotionally biased towards deriding the role of a programmer. In my opinion there can be no derision of either by the other. Each has a specific skill set, and adds different value. Programming is to software what Mathematics is to science; it is a pure discipline with specific methods and clear-set goals. Conversely, Software Development is an extension of the technical skills required for programming into disciplines that appreciate business principles and the potential of proposed solutions, with the ultimate aim of maximised value.

Thus whilst one cannot fault the hard-core programmer for viewing themselves as “elite”, the young aspiring developer should not hamper the development of their career path in the single-minded pursuit of technical programming knowledge to the exclusion of the other disciplines of Software Development.

That being said, programming still remains the core skill of Software Development and – while design skills are the most prominent step away from “pure” programming – recent movement by the industry towards “agile” software development methodologies such as Extreme Programming has refocused our attention on programming, by introducing concepts such as “design by code” and iterative processes.

In conclusion, the difference between Programming and Software Development is one of role and function, and not necessarily skill. The aspiring Software Developer needs to understand that – while they must become a technical expert in their chosen language and technologies – attempting to withhold themselves from business in pursuit of the image of the “elite lone cowboy” programmer is tantamount to professional suicide. If you hold the title “Junior Software Developer”, I urge you to read the abovementioned [article on Hacknot] to gain a deep understanding of your role and leave behind any naïve notions about being a programmer – unless you can land a job at NASA, that is.

EDIT: [article on Hacknot]: I removed the broken links… the original article was at http://www.hacknot.info/hacknot/action/showEntry?eid=90