This is a blog post for people who are not technical but have to work with technical people and want to have a better understanding of their job titles.
Coder vs Developer vs Programmer vs Software Engineer
9 times out of 10, you can consider these job titles to be synonymous. The main specialty of all three is that they will write code to build custom software. If you meet one person that refers to themselves as a Coder and another that refers to themselves as a Programmer, you can think of them as doing the same thing.
But, a Software Engineer has the connotation of treating software development as a craft that he is constantly trying to improve. He’s not just slapping things together recklessly, he’s engineering what he builds. That’s not to say that the others are thought of as reckless, just that a Software Engineer has the connotation of not being reckless.
It’s essential that you know that anyone who can code can call themselves a Software Engineer if they want. So don’t put too much importance on the difference between these titles.
For the rest of the article I am going to refer to Coders, Developers, Programmers and Software Engineers as CDPSEs.
Software Lead vs CDPSEs
A Software Lead is 25% manager and 75% CDPSE. They oversee other CDPSEs but they work on code with them day to day. In simple terms, a Software Lead is a CDPSE with some management responsibilities.
Software Architect vs Software Lead vs CDPSEs
Architects (should*) have the skills of the CDPSEs but a Software Architect usually thinks at a higher level of abstraction. They think about how large modules of software will interact with each other but not necessarily about the inner workings of an individual module. They design the software with best practices so that it scales and has redundancy (for example). The Leads and CDPSEs, by comparison, are normally focused on the concrete details and write the inner workings of the components that the Architect designs. Software Architects usually manage other Leads and CDPSEs.
To use an analogy with traditional architecture, a Software Architect creates the blue print and the CDPSEs build the walls.
* There are some people out there who call themselves Software Architects but don’t code. This is usually a bad sign.
I hope this clears up a lot of confusion I’ve heard from people in the past. Feel free to contact me / comment if there are other terms you’ve heard of that you have questions about and I may update this blog article to include them.