Is there a distinction between being a software developer and a software engineer?
Photos by https://unsplash.com/@radowanrehan and https://unsplash.com/@thisisengineering

Is there a distinction between being a software developer and a software engineer?

More often than not, I see people using "developer" and "engineer" as synonyms or interchangeably. I took the time to check what English dictionaries have to say about this, and to my surprise, they also include the terms "programmer" and "coder" alongside the previous ones. Some might argue that all these labels refer to the same group of people and that it is just a matter of which term we are more comfortable using.

In the past, there was a term coined, "code monkey," which referred to a person (programmer or developer) who would just type code, probably in a fast fashion, without much thought put into design or proper development. This could be due to a lack of knowledge or inexperience. If we can now isolate "programmer," "developer," and "coder," we can already see a bit of distinction between these terms and "engineer."

I have come to the conclusion that there might be a difference between being an engineer and a developer. Now, this is solely my personal view and opinion and is not an official statement of any sort. Some people might agree, and some might disagree, but this is how I view this matter.

In my opinion, software developers focus on creating specific computer systems and application software. In contrast, software engineers operate on a broader scale, designing, developing, and testing entire computer systems and application software for companies or organizations. Essentially, software development is a specialized aspect within the broader field of software engineering.

What this means is that a software developer is someone who is specialized in a particular programming language, but more so in specific libraries or frameworks. They might not fully understand the concepts behind those and would not know what the quirks or gotchas are since they have learned to do things a certain way by previously developing in it or by reading documentation. They wouldn’t necessarily understand what could happen if they use it in a certain way.

To make things clearer, while interviewing people for a software engineer position, we might ask what hooks are in general, and people would focus on hooks in React. We would later ask why we should not program in React in a certain way, and they would not know why it is bad practice. They might know that ESLint rules would prevent them from doing it a certain way, but they would not understand why.

These individuals might not have taken a deep dive into the internals of the technology itself, either because there was no need for them to do so or because they have simply been functioning without understanding all the implementation details. On the other hand, I would say the people who develop libraries and frameworks are actually software engineers, because they have and are applying all those concepts and principles that help others achieve something.

So, my take is that software engineers are people who have deep knowledge in the field. They know how to apply good design principles and concepts and think further in designing systems to be scalable, maintainable, and testable, whereas developers might just know how to glue certain pieces together to bring you from A to B.

What is your take on this? Do you differentiate between these terms, or do you have some other distinctions?

To view or add a comment, sign in

More articles by 🍉 Danijel Hrvaćanin

Explore content categories