Difference between Software Engineers and Programmer/Coders.

5 points by parham ↗ HN
Software engineers develop frameworks and tools to be used by coders in software. Similar to the relationship between a mechanical engineer and a driver.

What do you all think?

24 comments

[ 3.9 ms ] story [ 68.4 ms ] thread
I think that the term software engineer will replace the common term programmer and coder. Due to how complex everything is becoming. Plus people love their titles.
That's wrong, I think there needs to be an abstract term to describe all but then use engineer and coder to describe specific roles.
I think that the difference between those is, the Software Engineer (SE) is capable of create and design further than follow instructions or a specific language, and programmer (P) is like coding only maybe one or two languages but with a limit view of the application/services etc.

I think are similar but I see a SE with more potential to develop things, a P too, but I think his scope is limited to what he/she knows, no go further.

The question is really of role. What role does a star programmer play as opposed to a star software engineer. Ideally, a software engineer is supposed to bring in engineering qualities and therefore have a good idea of reliability, scalability, safety, error handling etc. A programmer on the other hand should ideally focus on getting the best of the platform/tools. So, I see an SE to be more broader but a P to have more depth.
I was thinking the opposite, I would've though a SE is more specialised in one field, but a P has broad knowledge and hence is more flexible in how he/she applies that knowledge in order to develop a specific piece of software required by a client.
Given the same skill level a P isn't a strict subset of SE, by that I mean an SE wouldn't be able to do a P's job efficient/effectively as they don't posses the required knowledge/skill... and vice versa.
In many jurisdictions, the term "engineer" refers to a licensed professional. So a software engineer would be someone with the requisite education and professional experience to obtain that license and be endorsed by their local regulatory body. It would also mean additional professional and ethical obligations. In Canada, for example, you can't have the term "Engineer" in your job title without being a licensed professional engineer. However, this rule is poorly enforced and mostly ignored.

Now mind you, most software engineers are NOT engineers in that sense, but I still think of it that way. Most software engineers are really software developers, but the engineer title is more appealing for whatever reasons (status?). Programmer/Coder is just slang for Developer, IMHO.

> However, this rule is poorly enforced and mostly ignored.

Thank god.

IMHO, the current state is detrimental and devalues the profession. We put our trust in doctors, for example, because we know that someone who has self-taught themselves medicine and has no formal ethics training or obligations can't just obtain a title of doctor.
Who is "we"? I don't put my "trust" in doctors because some government bureaucracy decides they are allowed to call themselves that.

I ask around, then I do research myself on the internet (both about the potential doctor and what I'm going in for), and only then do I have a semblance of "trust".

(most of my friends are doctors)

Are you telling me that when you do your research, you include people who are not legal MD's in your search? If not, then you've proven the point of regulating the profession.
That is a very loose comparison, as even "trained" doctors have huge differences in skill levels. I personally ignore all formal programming education below a PhD in programming as IMHO programming is a discipline which needs self motivation and individual thought for anyone to excel at it. Teaching it to someone only goes so far.
For "programming", I would agree with you and that why anyone is free to call themselves a developer or programmer. We're specifically talking about the term "engineer" here, so it goes beyond "programming".
"Software engineer" is what you write in your resume.

"Coder" is what your future manager reads thinking about what salary he can give you.

:)

Their level of self-confidence.

Seriously. There is no difference. People who are selling themselves short and lack self-confidence will (to their detriment) refer to themselves as programmers / coders.

People who believe in themselves will refer to themselves as software engineers.

Truly confident people don't depend on labels to "sell themselves", their work and attitude does that for them. They don't need to pretend to believe in themselves, because the wealth they create and example they set inspires others to believe in them.

Many such people who happen to write code call themselves "hackers". But regardless of what title they put on their resume, those are the type of people I'd want to work with.

I see a software engineer as someone who has a lot of knowledge about the hardware and can write embedded programs, device drivers, board support packages and communciations programs. A programmer writes user interfaces, web pages, databases and various business packages such as CRM, inventory and accounting tools.
In this industry we are very good at "giving things name", most of the time giving new name to old things (aka creating hype, that's what we have been mostly doing for the last 60 years or so) and then doing long discussions around these names. I would suggest don't bother with this, it is completely a waste of time.
There is no standardization of titles. Any distinctions you try to establish will be wrong.
And yet, there could be a differentiation. How many of you have read and follow SWEBOK or SEMAT or, better yet, both. Those are the only people who have a right to call themselves "engineer" as something that is better than the run of the mill developer.

And there are very, very few such people about, especially in Silicon Valley's cowboy coder environment.

Jesus wept. To elaborate: Focusing on pedantic lists of software techniques which have not and cannot be shown to produce predictable outcomes does not an engineer make. No definition of engineering could encompass the fragility and unpredictability of software projects and solutions.
Software engineer means exactly the same thing as software developer or programmer/analyst.

Coder means that the person referred to is at a Junior level. People who write frameworks are usually at a senior level although even a junior can write a framework by essentially porting from one language to another.

And all this terminology stuff is nonsense. Basically meaningless in a professional context. Even HR people should ignore titles because too many people inflate their titles.