Difference between coder, programmer, developer and engineer
Back when I first started in 1984 there was little difference between these roles and are no longer similar to today's culture.
However I believe there exists a mind-set that still embodies these former tiles and I will go through them below.
- Coder - Does no analysis and just writes code as dictated by a specification or a task sheet. This role hardly exists any longer but the mind set remains. To advance to the next level it is not enough to just know your language or languages well you must understand the application and it relationship to other components or the real world. Coders see the code.
- Programmer - I lived in this camp for many years. A programmer is good at writing up ad-hoc, one-off and one dimensional scripts or programs. However the programmer rarely tries to find greater solutions to systemic issue or consider refactoring the programs that exist. The programmer is perpetually in "bugfix" mode. Programmers see the utility.
- Developer - The developer understands the systems involved and how they interface with the inside and outside world, uses multiple disciplines, probably uses multiple stacks and languages and understands multiple tools and works in a team and with multiple teams to accomplish design goals. Developers used to see the lifecycle of an applications but more and more the waterfall approach is no longer used. Developers see the application.
- Engineer - Same as the developer however that person works in close team disciplines and works based on stories based on narratives in an agile workflow. Engineers see the infrastructure not juet the application. They also see the cost and the value of their work. Engineers see the problem.
And of course the architect:
Used to be:
Software or system architects oversee high-level design and interface choices based on their understanding of the whole. The whole might be the company's suite of application or service offerings as well as the infrastructure available and the customers desires. Old school architects see the system.
Agile architects goal is to deliver a solution which best meets the needs and aspirations of all the stakeholders, recognising that this may sometimes mean a trade-off. The Agile Architect must work in a way that makes the best use of the various resources invested in the project. Agile architects see the solution.