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?
In my company everyone is called Software Development Engineer 🤷♂️
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.
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.
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 typically tell people that engineering is applying physics. If you aren’t directly interacting with the physical world, you are most likely a developer.
Working on an app, no matter how complex (or unessarily convoluted) generally makes you a developer. If you aren’t thinking about impact of clock cycles, actuation/hardware interfaces or sensing, there is a high chance that the work you do has little to no risk or a chance of failure that is governed by the physical world. As said in other comments, engineers design and sign off on things. There is an implication that there is an unknown constraint, unlike a fully observable software environment.
I think this is a terribly naive view of the impact the physical world has on software development. Most web development is actively concerned with throughput which is governed by bandwidth limitations and API construction. The user experience concerns that go into, say, the design of medical interfaces is no different from the design considerations of physical switches in a cockpit. Alert fatigue is just as much a consideration for monitoring in software as it is for industrial controls.
I also disagree that engineering is applying physics for user experience concerns I brought up. If your industrial controller makes it impossible to understand what’s going on when shit hits the fan (eg Three Mile Island), I would argue you as an engineer have failed. That’s not applying physics unless we’re stretching “applied physics” to cover the movement of subatomic particles through brains as psychology.
I appreciate your opinion. I know that the qualification I made is a controversial one as everyone wants to be an ‘engineer’, but I’m still confident it holds. Applying physics is not purely at the atomic level. In web development, one of the physical challenges can be bandwidth, however, while most people claim to concerned about bandwidth, in reality they don’t do anything about it. Minifying code is cool, but that’s not doing any engineering by itself. Calculating the throughput your datacenter can dish out for your 1million users as you write a function that optimizes load vs lag of streaming video, that’s engineering.
Thinking about user interaction and experience is more psychological than it is physical in most cases. Designing the user experience of a medical device or cockpit switch are both not automatically qualified for engineering: unless, you are designing the medical interface to overcome spasms that someone with Parkinson’s has, or, the cockpit switch is designed with a plastic mix to survive the temperature, vibration or weight requirement, it’s going to be more of an art-than-science. I’m not saying one is worse, but we need to make the distinction between designers, developers, scientists and engineers.
I understand that everyone wants to be an engineer, whether for pride or just to feel more important (hell I want the engineer title too). Unfortunately, the tech industry (with arguably one of the most conflated egos) liberally tossed around software engineering to every role to attract talent and I don’t see that changing. It’s a profession, so whatever you are being paid to do will determine if you are engineering
I don’t give a shit about the title. I think it’s a joke. The analysis you’ve given suggests you don’t understand both software and engineering.
- Bandwidth is much more than what data centers put out. There’s a constant question of request/response size and the factors that go into scaling. If your idea of web development is just code minification, your idea is wrong.
- Engineers can’t pass the design buck. If you wouldn’t tell a hardware engineer, “the design of the circuit board doesn’t matter; don’t worry about size or crossed circuits,” then you can’t tell an engineer the use of the systems they design is just the realm of the designer. I know a few industrial engineers that would be annoyed by your ignorance of an entire branch of engineering.
- Why does everyone want to be an engineer? I’m really missing that point.
Sounds like you are a real pleasant person to work with