Tl; dr: Title does matter.
Sunlight is something you can not always find in Amsterdam. Therefore, it is valuable. If it is more than 15°C outside (59°F), and there is enough sun out there, you can find the Dutch everywhere in the beautiful parks of Amsterdam. On a day like this, after working hard before lunch, my colleagues and I wanted to combine our lunch break with a beautiful Keizersgracht view. While having a friendly chat with a bunch of smart people, a girl joined our conversation by introducing herself. It turned out she was working in the same building with us. She finished her introduction by asking the question: “What do you do, guys?”
“Oh, we are Software Developers and working at . . .” I got a “hey, hey, hey” here.
“We are engineers, aren't we?”
“Does that matter?”
Indeed, I was wrong. He had a point, and it does matter.
For me, with all my respect, I couldn't see much difference between a Software Developer and Software Engineer. However, the meridian salary gap between those two titles (based on the information who call themselves as that) does not say the same. According to Glassdoor, it is 25K for the US. A beautiful BMW can fit into this gap, right? So, of course, there should be some differences between these roles.
I discussed it a bit with the people who are “Engineer, not Developer.”
Almost all of these people think there should be some theoretic knowledge required of Software Engineers. That makes sense. Indeed, it is a big discipline that covers plenty of problem-solving concepts that are being developed day by day. But without much exception, all of these people also think having a formal education in this field is a must in order to further define yourself as an engineer. However, I’m afraid I have to disagree with that. Even though I studied for a bachelor’s degree in Computer Engineering, I believe universities are not the only place to learn about Software Engineering. There are plenty of resources around, like books and online courses.
Also, education should not be the only thing that matters to be an engineer, right? What practices are unique to engineers as distinct from developers? What makes the difference in real life? Applying software engineering practices, of course, you might say. That was the confusing part for me. Take the design pattern concepts of Software Design field as an example. When I apply them, would people call me an engineer?
That is confusing, indeed, because there is no such concept as Software Developering; instead, we have Software Engineering. And the only concept-specific boundary we can draw is between Programming and Software Engineering. However, this is off-topic.
As far as I got, this part is not as clean as it was with the topic of education, in large part because there is no consensus. However, most people think of engineers as architects. You might think an engineer plans, whereas a developer applies. I am also not sure how this works in real life. I see a lot of people calling themselves Software Architect (not Software Engineer) and Glassdoor puts an extra BMW for this role. Let’s say this is a wrong assumption.
Another thing I heard often is that a software engineer is a jack of all trades, whereas a software developer has proficiency in a single programming language. Well, this might be something, but being able to code in different languages also sounds fallacious. Of course, it is good to know some pros and cons of different coding languages, but what is the benefit of having lots of engineers in your company if they are not good enough as developers to write code in a language you choose?
Personally, I still can’t see a clean line between developers and engineers. However, people I talked with helped me make some progress in understanding the differences between these two titles. With their help, I will start calling myself an engineer rather than a developer since that better fits my professional responsibilities. Still, again, the difference is not crystal clear to me.
So, what do you think about the differences between a developer and an engineer?
PS: You can read Software Engineering at Google to understand the distinction between Programming and Software Engineering.
Top comments (11)
I always find this debate interesting. Sometimes I'm not sure it matters, but sometimes I do.
I think matters when the perception of what you do will affect your ability to perform and progress in you career.
But, academically, I've always considered these titles differently. To me the difference is in how you approach a problem.
An engineer should approach problems by evaluating risk, cost, feasibility, etc. They should also be concerned with the design and how it affects the rest of the system.
A developer may be given smaller problems, and sometimes in isolation from the rest of the system, for right or wrong. They may also design and build at the same time and be more concerned about implementing.
Just my take on it. I agree anyone can become an engineer, but it's all about learning how to solve problems, which is why doing so for 4 years at a university has an advantage.
This is pretty much how "Software Engineering at Google" describes a Software Engineer 👍
I think you are comparing a subset with its master set. Engineering is master set while software engineering is subset of it. An Engineer need to know more... more means more... In India, First year Computer Engineers have mechanical work shop, chemistry , physics etc. Also , they made to understand process engineering etc. But a Software engineer is limited to languages etc. The wide difference you can see in MCA and B tech Computer Science curriculum.
On Application Part: It depends upon the problem you are solving. If its software related then you are software engineer :). This is my personal view. Yes, your article present the question in very nice manner : Was I a Developer or an Engineer?
I guess this is one of those debate prompts that pops up every now and then. Software Developering might not be a thing, but Software Development definitely is!
I think it's good to keep in mind not everybody who develops software can apply engineering principles. I don't study computer science and my masters also won't be in computer science. However I have worked as webdev at an agency and can apply basic engineering principles. I see myself as a developer because I can create software but lack a lot of the general engineering skills.
A lot of people genuinely don't care about their official title, and to be fair I don't really care either. The difference between development and engineering in software are pretty hard to identify. I think software design, algorithmic thinking and knowledge about performance optimisation are expected of engineers but not always from developers.
Hopefully you're doing great here in holland 😁
Thanks 😊 I'm doing more than great at the beautiful Netherlands. To be honest, I do not care about the title at all too, but it looks like the industry does.
Well I am confused to but I see this trend that companies do
Hire Software Development Engineers.
I think the meaning is changing with time
In my point of view, Software Development Engineers stand for Software Engineers. I see that big companies tend to put this title for some of their job postings. TBH I can't see the difference clear enough.
In my country, those that want to pursue a degree have 2 choices: go to a technical university and study computer science for 4 years OR go to the other university and study informatics for 3 years. (both universities are just as good).
The main difference, besides the extra year is that after finishing the technical university you get a digree that says you are an engineer. If your work involves developing code then you are a software engineer.
Someone that finished the other university might be just as good, or even better, but he doesn't hold the Engineering title.
Similar to this situation is the PhD one. No matter how much I study on my own, I can never call myself a doctor if I don't have the degree.
Besides that, when I'm hired I'm usually hired to solve problems by writing code. Nobody cares what my official position is.
Agreed.
A similar thing happens in India too
My totally subjective observation of the roles:
Architect - Conceptual, system design, super high level, technological choices on highest level with high impact, strategical (also in combination with higher business goals), sometimes overlapping with higher management, very few actual coding involved, very high / long-term stakes involved (<-- the last is the reason for the high payment)
Engineer - Conceptual on the actual software project (requirements, design pattern, methodology, teams etc.), designs and "lives" the whole development llifecycle, mentoring other developers, strong theoretical (also mathematics, security, algorithms etc.) AND practical (language features, performance etc.) knowledge and skills, high / mid-to-long-term stakes involved, also often makes choices about things like code quality / formatting, test-design, documentation style, variable naming etc., reason for high payment is the overall high level of knowledge and skill in various areas
Developer - Conceptual on parts of the software (designing components and features, may also involve design pattern, algorithmic choices etc.), more focus on the practical side, lot's of implementation of classes, routines, tests etc. but still with principles in mind like kiss/dry/solid etc., mid level stakes, if architects and engineers are on a strategical level then developers are like the "tactical" unit
Programmer - Very few conceptual work, mostly implementing by given requirements, often work that can be outsourced, few to no stakes (component can be broken but also being replaced)
Thank you very much for helping me to understand differences clearly.