In your opinion what’s the difference between the two? In my opinion both terms are frequently used interchangeably in the workplace.
But I’d like to consider myself as an engineer, because although I don’t consider myself to be good at it, I think I cares about the software that I worked on, its interaction with other services, the big picture, and different kinds of small optimizations.
I mean, what is even engineering?
It’s a huge faff, you will get a different answer from every person you ask. They’re used interchangeably, and it just doesn’t matter.
To entertain your prompt. Real world engineers (structural, etc.) aren’t entrusted the title because they “care” about what they build, it’s because they have to be correct, and as such, they follow extremely rigid process and take the time to never be wrong. Obviously I do not have real world structural engineering experience, but I think we can all agree on this from an outside point of view.
That’s not how software works most of the time, and it’s even heavily discouraged in a lot of the industry. We learn from failure, and the consequences of software failing are nil compared to the consequences of a bridge failing. This is a huge superpower of software, not a weakness, or some sign of deficiency. It is the key reason software evolves so quickly. Software engineers (or developers, alchemists, whatever) are allowed to fail, learn from mistakes, and improve. They can test completely new, never been done ideas, nearly for free, and nearly instantly.
Again, I don’t really care though what the industry wants to call it, developer or engineer. It doesn’t matter and it’s all made up anyway.
I quite like the term Software Alchemist.
To me, the words “engineer” and “developer” both imply that a well thought out and structured plan is in place for them to do their job. Not so with “alchemist”, which implies a fair amount of experimentation and uncertainty, both of which are very common in the software industry.
It’s always been one of my favorite ways of describing the job :)
This whole thread was weird to read as a Canadian:
In Canada the title “engineer” is a legally protected term. You can’t legally call yourself a software engineer without going through the Engineers Canada accreditation.
You are a software engineer if you are an engineer in good standing. Calling yourself a software engineer without accreditation is fraud.
Edit: I was curious, so I looked it up. The exact same is true in the US:The title engineer is a protected title, that’s protected in law, and it’s been protected for over 100 years.Edit 2: Don’t believe everything you read online, lol. See below re: the US
I’m not sure where you’re quoting from, but as far as I can see, only “Professional Engineer”, “Licensed Engineer”, and “Registered Engineer” are protected in the US.
I fixed my comment above. Thanks for the correction.
Canadian Engineering Associations will actually get you for illegally labeling yourself an Engineer. I did a software developer program and after graduating a few people decided to start calling themselves engineers. The organization contacted each person individually and I belive the program coordinator. It is a serious title here, it is the same as a healthcare worker calling themselves an RN without being registered with the nursing college.
If someone flies the “software engineer” banner seriously, I expect them to have some theoretic knowledge besides the practical one. They would know different programming paradigms (procedural, OOP, FP), know about programming patterns, layers, UML, and at least a programming language or 4 (3 superficial, 1 in-depth).
A software developer can be any random code-monkey picked up from the street that is self-taught and/or had a boot camp of sorts. Nothing wrong with being self-taught or boot camps, as SDs need to eat, but it lacks a certain level or rigor I would expect from a SE.
If both had a certain amount of experience the SD would mostly catch up to the SE, in practice. Not sure if on theoretic knowledge too, but that depends.
I have been a network engineer with no degree for many years, but I did have a lot of certs. It’d be nice if there were something similar for programming. But I’ve never seen anyone care that much about the engineer title. I’ve always thought it’s someone who understands his craft/engine design in and out, but doesn’t design it himself. The architect designs it. The tech can perform documented solutions
This is probably the most well-researched piece of writing on the matter: https://www.hillelwayne.com/post/are-we-really-engineers/
NGL I think that’s a pretty crappy article. Very little of it is research, it’s just assertions and arguing his POV philosophically. He also gets basic things wrong, and says “civil engineers work on buildings.”
The research is the interviews he did with engineers. That sentence is obviously a simplification, especially since he immediately follows it with one about talking to a civil engineer who builds mines.
I hold an M.Sc. in software Engineering and it is not just a “software developer” but an actual masters degree from an engineering university. It’s a civil engineering degree with focus on software and systems that runs software (e.g embedded systems). It is a protected title by law in many countries. I think Americans started abusing the software Engineer title a decade or two ago and hence many think it is just a title anyone can use as they like.
At least 25 years ago (correction: 25 years and 3 months since I was hired as a software engineer in America without an engineering degree).
And did you really compare a software dev with a BSc against your MSc (not a MEng?) and compare those apples and oranges as if they were peers?
Im not sure about America now, but in my country the title “P.Eng” (professional engineer) is restricted by law to those who have gained a degree as an engineer specifically, B.Eng or bigger, and have written a subsequent certification exam.
Not sure what you mean about your apples and pears comparison thing. Around here we have two levels of engineering - diploma engineer and civil engineer and that’s also the title you get.
Due to some countries not understanding this differentiation, we use the more common B.Sc for Diploma and M.Sc. for civil. You can then specialize in different areas like software, electronics, AI, health tech, and many more. So basically we have all the engineering courses + the special courses on top.
Well, if I remember my software engineering prof correctly, software engineering is mostly about bringing an engineering mindset to software development. You wouldn’t just slapdash an airplane together in a weekend and shove it out on the runway. There’s a process for making sure we don’t kill people with deadly flying contraptions.
Software engineering is that same idea applied to software systems. There is a process for making sure we do our job without causing undo harm. You wouldn’t want to just slapdash together something that has to be HIPAA compliant and has to meet other security regulations. You plan. You test. You revise. You ensure the product doesn’t publish the sensitive medical records of every patient on the front page before it ends up in production. That is the work of a software engineer.
That is the work of a software engineer.
To build upon this, we need to keep in mind that at least in some jurisdictions the role of a certified engineer is only required in projects with relevant size, and the responsibility of that engineer is to ensure the project complies with all requirements and therefore be held responsible for any mishap. This means that it’s perfectly fine if non-engineers work independently on complex tasks, provided that an engineer attests that their output is fine and takes responsibility in case it isn’t and it causes problems.
I really like this answer, because now I’m confident that I’m at least acting as an engineer. Thanks!
In a lot of places, engineering is a regulated field, meaning you need a certificate to call yourself an engineer. e.g. this lawsuit.
Guess im not an engineer in canada
but what if you are
Finally: professional engineers who engage in title snobbery are often accused of “ring knocking”, as if they were physically knocking their iron ring against a desk to point out the size of the dick on top of their shoulders.
deleted by creator
Maybe, postulating, as I consider myself an Engineer and not a Developer.
Tangentially related: https://comeriohomes.com/the-difference-between-a-developer-and-a-home-builder-2/
Brainstorm thoughts dated just now
I guess it’s in the conveyance of the word? Engineer seems like fitting a puzzle piece. Creating Software in a vast eco-system of language, OS, Frameworks, Platforms, Networks, and views it’s progression in time. For instance planned obsolescence, graceful failure in the “pipeline of things”, tolerates network topology changes, etc.
Maybe Engineers build with well designed, graphed/drawn, and planned strategy of the components in interaction with all other systems, including OS failings, local Network failing, Internet failing, Management Failings (workplace), on and on. The more things you can account for the more brilliant an Engineer you are.
Software Developer seems more linear. You take an idea and start with a good program. Then it’s built up and up until it becomes a great piece of Software.
IMO an engineer should be able to develop a complex system which an entire company could potentially be based upon.
A developer who isn’t an engineer would focus more on individual libraries, apps or tools that don’t necessarily require the mindset of an engineer to design and maintain.
a dev can build a thing, an engineer can build a distributed modular thing with more complexity around non programming parts like infrastructure. Take the thing and design a machine of parts and each can be maintained, observed, and optimized as needed. For example we can use topics for backpressure and consumer lag for auto scaling pods, but then you have to consider the distributed processing for duplication, out of order, throughput… there is no exact line in the sand between dev and engineer but that’s how I think of it.
A dev work on some code. It works, great, job done.
An engineer comes to see this work. It hasn’t been thoroughly tested, it only works on the dev computer in his coding environment. There is no documentation. There is no comments in the code. Half the features are missing because the story didn’t talk about them. Installing the “software” is made by hand and only one person knows how to do that. Some libraries are used with various licences, some are outdated, some can’t be maintained, some will download stuff on their own. Performances are shit. I certainly forget a lot of stuff.
Now the engineer will work to solve all these non code problems.
Now the problem is that software companies don’t care about engineers because they have managers. Managers will consider engineers like developers and ask them to work like developers. They will also tell the engineer that his lunacies are too time consuming, which means too expensive, so they will go in the backlog and be forgotten.
Yes I’m disillusioned and depressed about working in software development. It’s not like this everywhere. Some companies have an engineering culture. Especially when they come from older industries, like electronics or car etc. But I haven’t had the chance to work in one for 5 years now.
In my company everyone is called Software Development Engineer 🤷♂️
I’ve been calling myself a programmer. That’s mostly what I do anyways