Ask HN: Software Developer vs. Software Engineer

25 points by bliblablubb2 ↗ HN
Hi, what is the difference, really? I feel like everyone is using them at random or making up their own or new job titles...

64 comments

[ 2.9 ms ] story [ 110 ms ] thread
I would say one just plays, and builds things in pre-existing frameworks (Software Developer)... And Software Engineer, makes new things or new frameworks from scratch. Both are capable of programming though, it's the level at which they operate. As for the title themselves to HR, I don't think it really matters they think you can create "The Next Facebook" in 5 minutes.
> it's the level at which they operate

I don't think this is true. From what I've seen the terms are completely interchangeable.

Sorry, Meant level as in low level coding versus high level... Software developer tend to use templates/framework to do most of the work, engineers build the darn frameworks, or more raw low level code. Both are coding, but it's sort of the difference in say crew member dumping out concrete vs the concrete finisher smooth or brooming the finish.
The terms are interchangeable.

Now and then I like to use "programmer" in informal conversation, because it feels refreshingly direct, and sometimes I think we forget that whilst developers need non technical skills, the technical stuff is still the critical part!

But for hiring, etc., they're all just synonyms.

That's the feeling I'm getting as well. There are different definitions on the Internet, but again, everyone is making up their own. Makes looking for open positions not easier.
While I don't have an answer to your exact question (I suspect its somewhat arbitrary), it's interesting to note that some countries (I think Germany?) have strict regulations about using the term "Engineer" as a job position title. I believe they require you to have passed specific qualifications and have engineering accreditations.
Funny, I actually am from Germany and it feels just as arbitrary.
May well be wrong about Germany then.

I do know there are regular arguments here in the UK about the "Architect" title, the RIBA (the Royal Institute of British Architects) regularly sue people who call themselves Architects but don't have the qualification or aren't payed up members. This includes "software architects". People who work in building architecture but haven't got enough qualifications often call themselves "architectural designers" to get around the rules.

Really? I've worked in small and large local and multinational companies in the UK - many people have an architect job title without any qualifications and it's never been a problem. It's not just "architect" on its own, there's usually some prefix like software/cloud/data/infrastructure/solutions architect.
Your right, looks like there was a debate about it all about 10-15 years ago but from the ARB:

> "We take a common sense approach to the use of ‘architect’ that isn’t connected to building and design, for example with ‘software architect’ or ‘systems architect’ which are increasingly used by the computer and IT industry."

https://arb.org.uk/architect-information/what-we-do-to-regul...

I don’t think you are wrong about Engineer in Germany but it just doesn’t apply to software. If you go into classical engineering there are rules. For example you couldn’t call yourself a civil engineer (‘Bauingenieur’) in Germany. If you are outside of classical engineering fields nobody gives a shit. You could call your self a “culinary engineer” and nobody would care. Computer sience is usualy grouped with mathematics so it too falls outside of classical engineering. We as a group just LIKE to see what we are doing as engineering to differentiate us from those that "just code".
"Engineer" is a protected job title like doctor in many jurisdictions not just in EU but it's just seldom enforced so nobody really cares. In Ontario, it's somewhat more strict so many large company job listings use "developer" to avoid lawsuits

https://www.peo.on.ca/public-protection/complaints-and-illeg...

For example in Waterloo Ontario, Google job listings all use Developer: https://careers.google.com/jobs/results/?location=Waterloo,%...

Whereas in San Francisco, Google job listings use Engineer: https://careers.google.com/jobs/results/?location=San%20Fran...

What sets the Engineer apart from the Developer for me is:

* the engineer can work with other developers/engineers

* the engineer writes code that is maintainable

* the engineers code has an architecture

* the engineer can find a solution to problems that don’t have a lib or stackoverflow entry

In other words:

A Developer is more likely to work on smaller codebases, most likely alone, that are comprised of known problems. If you are lucky there will be some sort of rough architecture.

An Engineer is more likely to work on larger codebases, most likely in a team, that has a core of problems that are specific to the product or a domain and need to be implemented by the Engineer. The code architecture exists to facilitate maintainability and cooperation between Engineers.

One thing you forgot:

An Engineer is just like a Developer, but an Engineer read it online on Hacker News once that if you call yourself an Engineer, some people will automatically assume that your code is maintainable, you design your app better, and you don't need stackoverflow.

The Engineer decided to change his/her title on LinkedIn (because nobody can actually check your real title). This Engineer (former Developer) then went on to look down on Developers because they are messy script kiddies and code monkeys that write bad code and copy from stackoverfliw.

My degree is in Computer Engineering :-)
And then the engineer upgrades himself to a software architect!
I for one prefer to look down on the masses by choice of programming language not job title!

But in all seriousness, yes our job titles are BS to a large degree and we have the tendency to look down on other programmers for various reasons like job title, programming language, operating system and editor/IDE of choice.

What I said about the progression of skill still holds true and if I would include Architect in that list I would define him as:

* is able to set up an architecture for a system

* is able to consider all layers of the system (frontend, backend, services, deployment…)

* is able to change/update an architecture of a system if the requirements change and is capable to predict possible requirement changes in the original architecture

Honestly you can’t be an “architect” if you haven’t been an “engineer” and to become one you will have to have been a “developer”. You just can’t start at the top. What is more interesting is that not every “engineer” wants to become an “architect”. There is theoretical prestige in that title but it also takes you away from the code and I know people who have quit their jobs when their role started to become to detached from actual day to day coding.

(comment deleted)
Couldn't we just say there are levels of quality of developer's output?
Not sure if this was for real. The distinctions you made could be applicable as well between experienced developers/engineers and non-experienced ones.

Engineer is just an HR term used exclusively by companies to hire and to classify employees.

I like to use "software developer" because it's the most straight forward description of what I do. When I need to describe my role to people who don't work in the software industry, it's useful to have a simple title.

Development is more than programming, as it includes other aspects of creating software. I'm not sure we should use the words engineer or architect, as both have strong meanings in other professions, which might not completely fit.

Another reason I like the word "developer", is it implies that there is an ongoing process of "development" - a process which changes direction as it progresses and develops continuously. That fits perfectly with the agile practise I use.

In theory there might be a difference. In reality, they're synonyms, and it's random which is used.
There's no difference. Some people think that engineer is a special word because of industry regulations in some countries - if you don't live in one of those countries, this doesn't concern you at all. Developer and engineer mean the same thing when they have the "software" prefix. The whole "a software developer does x but a software engineer does y" smells of snotty gatekeeping.
I'm in Canada so the distinction does matter. I'm not allowed to call myself an engineer because I didn't do an engineering degree.

When interviewing candidates, I treat these as interchangeable.

Unfortunately they are interchangeable in the industry.

Ideally engineer would require an engineering degree and encapsulate more engineering skills such as fault analysis, risk analysis / mitigation, requirement capture and traceability, design capture and verification, etc. Things that are done in traditional engineering capacity that is required in a regulated environment.

As a software "engineer" working in an engineering company, what I do is not even remotely close to engineering. Indeed the terms are interchangeable. I guess with the latter you can ask for more money? Back in my home country to be a SE instead of a SD you need to have gotten a master's degree from university. In practice there is no difference whatsoever.
Pro tip: They really are making up their own job titles.

Nobody really cares, so long as you can do the job you claim to. If you say "software engineer" but can't do more than add jQuery plugins to a web form, they're going to politely tell you that the interview is over.

If your resume says "senior software engineer" and you apply for a job that just needs someone to add jQuery to a form, they aren't even going to call you.

So far as I'm concerned, the title only matters on your resume, and is just for getting the right kind of attention.

On a resume, "developer" is going to speak to lower and mid-level developer jobs, and "engineer" is going to be for jobs where you have to spend significant amounts of time designing systems that need to be maintained for a long time. If you think you're up for it, go ahead and use it. If you misrepresent yourself on your resume, you'll either not get the job, or you'll fail at the job when you get it, so it's up to you to get it right.

The only difference is in how smart you want to feel when you call yourself one over the other.
Developer is easier to pronounce and to spell than engineer for me. I guess life is well done.
I once got asked this question by a technical recruiter in a phone call. I said I don't think there is a difference. She started explaining how Software Developer is someone who just codes and that's it, and Software Engineer is someone who understands business requirements and different constraints to come up with the best solution, and how their company is looking for Software Engineers like this. I almost wanted to hang up on the call. I understand the importance of going beyond "just coding", but titles vary by company.

Right now my title is "Software Development Engineer" so I basically have both. My previous contracts stated "Software Developer" or "Software Engineer" in the past, and it was the same job.

My job title says engineer, but I always refer to myself as a developer simply because I don't have a degree
I see many commenters suggesting that the distinction is a subtle one of ability and scope. This is interesting to observe and definitely not what I had anticipated in the responses.

In my experience the titles are interchangeable in practice. I can see how one might make a spirited argument that there should be a meaningful difference and how that could be useful in hiring.

Taking a look at Google Trends for both terms it is interesting note seeming regional preferences: https://trends.google.com/trends/explore?date=all&q=software...

I have never particularly cared. They both denote discipline, skill, and end-product focus.

I usually refer to myself as an "engineer," but "developer," in my opinion, works better with less technical folks, and is less alienating.

There is no difference. They made up labels that mean whatever a particular company or person wants them to mean.
The "correct" answer is that Margaret Hamilton coined the term "software engineering" while working on the Apollo program back in the 1960's. As a way of declaring that software people can have the same level of rigor and respectability as hardware people. This branding finally caught on in the 2010's.

However, to talk about the "real" answer, let me start by saying that I've been doing this for a little over 20 years now. When I first started out, my job title was "Computer Programmer".

After awhile, my title (and those of all my peers) changed to "Software Developer". After a laughably short period of time, it stretched into "Senior Software Developer".

After I'd been doing that for some years, my job title changed to "Software Architect".

After awhile, the industry decided to stop pretending that most architects do full-time architecture for a living. So my job title changed to "Staff Engineer", and then "Principal Engineer" when I started making too much money.

I don't know that the day-to-day activities of my job have actually changed all that fundamentally. I have a LOT more influence with Product Managers and executive leadership than I did in my early years, and I find myself doing more mentorship and informal leadership. But by and large, I think this industry just changes job titles every so often because: (1) it wants to stay trendy and copy whatever Google is doing, and (2) technology and H.R. play games with each other over salary bands. So I wouldn't meditate too deeply on it.

At least we're not ops or QA. It feels like those poor souls re-brand every six months, chasing after pay parity with the devs.

In my mind the distinction is there, but it's gonna feel arbitrary no matter what. If I had to make an attempt I'd describe the developer as someone who writes code and the engineer as someone who writes the software level spec, sets the overall architecture/design, inputs on interface design and do declaration work (paperwork, really). I would assume most projects have people taking on both roles to certain extent.
It’s all psychology… if they call you an engineer will you want the job more? Longer?
Depending on who I'm talking to, I'm either a Software developer, Backend API developer, or I fix computers.
There's no technical difference. Titles are used in corporations to separate pay grades and hierarchy, so a "Software Engineer" might be higher up the food chain, but they do the same work.

I keep saying we need a real engineering discipline in software and not the "arts & crafts" it currently is. A real engineer can tell you whether a steel beam will support a given load; a software developer has no clue what load her software supports.

I like this analogy, and it explains all the issues when online services are launched by game developers (I kid).
Remember, some of the best work ever created was done by “members of the technical staff”. It’s not the label it’s the work results that matter unless there are external requirements or definitions. Engineering and science are disciplines, and there are often (legal) definitions of engineer. I am unaware of any such things for scientist although people assume an advanced degree.

Like some others, engineer suggests someone who works in an environment that has rules and constraints while developer operates in a more unrestricted environment or on less defined problems. But then, hacker was the best title and it could NEVER be claimed, merely demonstrated.

The NSPE do not like random ppl calling themselves engineers.

I went to an engineering school (for computer science) and everyone faculty and students was very particular about this.

Some jurisdictions have legal requirements on calling yourself an engineer.

The correct term is software developer. Some bigcos who are a juicy enough target for NSPE or government agencies have been reached out to, which is why we see the job titles change now and then.

Which is funny because the first job, at least when I went to npse.org, was "software engineer" at Google. The job description says nothing about actually needing and engineering degree. (There's a Senior Software Engineer one from Chegg on there too).
To me they mean the same thing.

If there's a difference, I've somehow missed out on learning what it is after >20 years in industry/academia and that lack of knowledge has never been a problem.

I honestly don't care about titles. I don't even know what mine is without looking it up.