Hello everyone! In this post, I want to contrast the terms with which other people and we ourselves call us. There are a lot of confusion around the names for our trade. People use terms such as software engineer, software developer. Some people even use programmer or coder, etc., etc. And some event go as far as ninja, guru, or rock star. So let’s take a look at the differences. Of course, it’s all just my opinion but I’ve been in this industry for 15 years. I know a bit or two. So let’s go ahead.
Programmer! Let’s start with “programmer”. So programmer is a person who is programming. Okay? And typically you would hear this from someone who is far from tech, who is not in the technology in IT, who is not doing the software development.
People from outside, basically, they call as programmers. Why? Because they think all we do is just programming. Really? Is that all what we do? Absolutely not! That’s not true in 2018–2019. To develop software a lot of the times you don’t even have to program. There are certain tools and frameworks so you don’t have to program. A lot of them are about configuration and customizations. Thus, programming is just a small part of our jobs.
But when I’m talking with laypeople, when I’m talking to Uber drivers, or waitresses in a restaurant, how would I explain what I’m doing? Hey, “programmer” — they know what that is. They don’t know any software engineers. They know engineers in manufacturing, architecture or building construction. They think I’m engineering some some widgets in a factory or I’m engineering buildings. No, not a good thing to call your self a developer or an engineer to laypeople. We have to add “software” in front and even then they might be confused. But a term “programmer”? They understand it.
Next let’s talk about the word “coder”. What is a coder? It’s little bit on the step beneath the programmer. Coder doesn’t necessarily needs to write programs or architecture software systems. Coder will write code which might not be even a program! That’s because code can be just some very dumb markup, not a powerful programming language. Excel spreadsheets have functions, that’s code too! Haha.
Also HTML is code. Think about HTML. HTML is a very simple markup language. The HTML code has those angle braces, those more and less signs, the HTML tags, right? There are even jobs like HTML coder or XML coder. It could be some very, very, low level position where all they do is just write divs and spans which is not even a programming code.
So someone who is just doing HTML, they take the designs and they put it in HTML. They change the text and the tags. There are coders. They are HTML coders or, if they’re using a different code, they’re different coders… but they don’t have to write computer programs. Coders don’t think about integration, performance, clusters, cloud, 99.999 availability, or user experience. They just crank up lines and lines of static listings. So that’s why I’m saying it’s a level down, because programming requires more skills and more knowledge.
Of course again, if we’re talking with laypeople they would use coder as programmer. They would use that interchangeably. Argh. That’s because they don’t know those nuances which you and I know (now you know, right?).
Next, let’s quickly fast forward to software developer, okay? To be short, software developer is a much more than just a programmer or a coder. Software developer needs to understand all the cycles of software development not just implementation (which sometimes won’t event need any programming or coding). Implementation is a tiny fraction of a serious software product. According to The Mythical Man-Month, programming should take no more than 1/6 of all time.
Software developers need to gather requirements. They need to talk with shareholders. They need to architect the scalability and the robustness of the entire system. They need to document, test, and support. If it’s a web application, software developers need to think about load balancers and disaster recovery. If it’s a web application they need to think about browser optimization done right. Often software development could be niched down into web development, mobile application development, Internet of Things development. I will do a separate post on all those niches of software development one day. Software developers are the best of the best. For example, if you go to Amazon you will see “Software Developer” job titles throughout their entire company. They use that title a lot.
What about software engineers? They are, in my opinion, even more advanced than software developers. Why? Engineer is typically a person who finished either bachelor degree in Computer Science or Master’s degree, and/or who reads a lot. They also have a lot of experience in addition to theory (books or courses). They know a lot and can do a lot. They know everything at a very thorough level: best practices, algorithms, data structures, scalability, languages (plural!). Note that it might be not necessarily true in some companies because the titles and job functions differ a lot from company to company. Some companies don’t have titles “Software Engineer” because they use “Software Developer” (Amazon) and vice versa, some companies use “Software Engineers”, not “Software Developer” (Indeed).
Lastly, ninja, guru, sensei and rockstar and other nonsense are all terms which don’t say much. It could be someone with above average expertise, someone with world-class expertise in typically narrow field (e.g., Solidity Rockstar) or someone junior but who can handle low pay and be generalist in a small startup. Yes, these terms are often overused by startups because startup founders want to be perceived as more hip and cool than big companies. The startups can’t offer a good salary, but they can offer you a VP or CTO title. Take the bigger title. It’ll look good on your resume once the startup runs out of VC money, and you’ll be looking for a new job at Indeed. A new job at a more stable and bigger company than this failed startup.
Thus, engineer and developer are interchangeable for the most part but engineer rings as prestigious and more advance than developer. Most laypeople will understand if you say Software Engineers or Software Developer. Just don’t forget the word “SOFTWARE”. Otherwise they’ll think you are developing real estate properties or engineering chicken coops.