So if we see there is a lot of confusion around certain names like software engineer, software developer. Some people even use a programmer or coder, etc. So here is a guide towards the difference between all of them.
Programmer! Let's start with ''programmer''. So the 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 that 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 one is talking with laypeople or talking to Uber drivers, or waitresses in a restaurant, how would one explain what he's doing? Hey, ''programmer'' - they know what that is. They don't know any software engineers. They know engineers in manufacturing, architecture or building construction.
Next, let's talk about the word ''coder''. What is a coder? It's a little bit on the step beneath the programmer. The coder doesn't necessarily need 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 fewer 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 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.
Next, let's quickly fast forward to a software developer, okay? To be short, the software developer is much more than just a programmer or a coder. A software developer needs to understand all the cycles of software development, not just implementation (which sometimes won't even 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? An engineer is typically a person who finished either a 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 a typically narrow field (e.g., Solidity Rockstar) or someone junior but who can handle low pay and be a 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 advanced than developer. Most laypeople will understand if you say, Software Engineers or Software Developer. Just don't forget the word ''SOFTWARE''.