Yes, that’s right. Agile teams don’t need software programmers, they need software developers. I don’t mean this as some English vocabulary usage. I think the key difference is, if you ask a programmer to build some code, you will get code. If that programmer is good, you might get good, reasonably commented and reasonably efficient code which works.
If you ask a software developer to build some code, you will first get questions before you get a solution.
- How does it fit in the business process? Are the requirements thought out?
- Are you sure you understand what it will cost?
- Who will support it? What about diagnostics and instrumentation?
- What kind of documentation will it need?
- How might it interact with other code?
- What platform will it run on. Are the scalability issues?
- How might it impact future development? How might it be enhanced in the future?
Another key difference is, programmers focus on languages, software developers focus on language characteristics. A programmer might see himself/herself as a Java programmer, C# programmer or a Ruby programmer. But a developer focuses on language characteristics such as strong or loosely typed? Object oriented or functional? Interpreted or compiled? Etc. This allows developers to quickly adapt and pick up new languages and technologies.
So, the key mantra for agile teams is to deliver high business value software with high quality. This cannot happen with programmers whose focus is just to code and ignore everything else.
Code is not always ‘THE’ solution but its ‘a’ solution.
Credit: This blog is inspired by a talk from Dan Appleman