The term "software engineeer" has always left a bit of a bitter taste in my mouth, it has always reeked of something came up with to pad their resume to sound like their job was more impressive than it really was. It just sounds like some hoity-toity effite "white collar criminal doubletalk". A bit like Carlin's joke about how wealthy privileged white people have come up with an entire language to hide their sins. When we're sick we don't see a doctor at a hospital, we see a care provider at a wellness center. Toilet paper became bathroom tissue. Diarrhea became occasional irregularity. We don't have old people anymore, we have senior citizens. Instead of poor people living in slums the economically disadvantaged live in urban low income housing areas... and they're BROKE... they don't have a "negative cash flow position", they're f*ing BROKE!
Though much of that could simply be that I'm WAY too blue collar for the pink collar attitude of most of the wussies out there who insist that we should all pat each-other on the back constantly no matter how badly the world burns down around us. Take your "civility" and demands for respect whilst acting like a sleazy dirtbag, shine it up real nice, turn it sideways, and stick is straight up your candied...
BUT, in practice there is, or at least SHOULD be a difference between a programmer and an engineer. I equate this to the difference between the artists under the DELUSION that they are designers, and ACTUAL designers. My background in both programming and mechanical engineering tells me that IF we were to treat "software engineer" as an actual thing these would be the differences.
A programmer knows how to tell a computer to do things.
An engineer would know how to do that whilst following specifications and guidelines.
A programmer is focused on solving the problem in front of them.
An engineer does that whilst planning for scalability, extensibility, and sustainability.
A programmer is focused on results.
An engineer wants those results to offer the best accessibility, usability, and user-experience.
A programmer knows one thing, programming.
An engineer knows MORE than just programming, and how to integrate that knowledge into their code.
If one were to use the term "software engineer" THAT is how I'd draw the line between it and a simple "computer programmer".
Engineers are always the big picture guys.
Hashnode is a friendly and inclusive dev community.
Come jump on the bandwagon!
💬 Ask programming questions without being judged
🧠 Stay in the loop and grow your knowledge
🍕 More than 500K developers share programming wisdom here
❤️ Support the growing dev community!
While many companies may use the term software engineer loosely (title inflation is quite prevalent in the tech industry), in the strict sense, the term computer programmer will encompass any position that involves programming whereas the term software engineer refers to a more disciplined practitioner of software development. Software engineer is a more prestigious title.
While certainly not necessary, a software engineer will often hold at least a bachelor's degree in computer science, computer engineering, or a related field. At many universities, software engineering is a graduate level degree. Unlike other engineering fields where it is often necessary to have a professional engineer (PE) license, it is rarely necessary for a software engineer; however, there is a PE licensing program for software engineering (although it's being discontinued for low enrollment).
A software engineer should embrace more disciplined engineering principles for planning, development, testing, deployment, and monitoring. Their practices should be repeatable and verifiable. A software engineer would be responsible for delivery of full applications or systems whereas a computer programmer might only participate in a small part of the system.
To me someone like a web developer who makes something like WordPress websites or an IT analyst who writes scripts for IT administration could be considered a computer programmer but not a software engineer. Coding bootcamps are advertising certification programs to become a software engineer; however, I would say there is some title inflation there. Usually those programs do not provide enough training for a graduate to fulfill all of the responsibilities of a software engineer out of the gate. He or she can get their foot in the door for a software engineer position, but they'll need lots more on-the-job training to truly get to the level of software engineer.
Both titles means you can program in some language or other; although honestly I don't see "computer programmer" come up as a title, probably because I work in web-based software (where the titles are usually "Engineer" or "Developer").
But really - titles don't really mean much, degrees are not required.
What is required:
- You and the employer agree on what you should be doing
- You can do what you say you can do
Most companies will take experience/skills as an alternative for a degree. If you don't have either that basically suggests you're going for junior roles, where a smart employer is looking for potential rather than existing skills.