this post was submitted on 22 Nov 2023
44 points (89.3% liked)

Programming

16207 readers
551 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 1 year ago
MODERATORS
 

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?

top 50 comments
sorted by: hot top controversial new old
[–] MajorHavoc 41 points 7 months ago* (last edited 7 months ago) (2 children)

Considering the almost complete lack of standards, certification, licensing in most areas of programming, I don't think there's a ton of difference.

I've held both titles without rhyme or reason between the two. Even in areas requiring high compliance - HIPAA, PCI/DSS, NIST Standards, FERPA, etc - training achieved doesn't tend to be reflected in a programmer's title. (Even while the same level of training turns into acronym soup among their IT peers.)

One way I try to live up to the title "Engineer" - even when I don't wear it - is by holding myself to the Engineering Code of Ethics.

[–] [email protected] 4 points 7 months ago

One of the issues is that devs don’t know about the normal engineering certifying body (at least in the US). One of the problems with that body was its expectation that a software engineer also know other forms of engineering. For example, a chemical engineer needs to know some civil and industrial engineering to get their certification. It’s almost nonsensical to ask someone building cloud apps to understand the principles of chemical engineering unless their work is in chemical engineering.

I know a ton of engineers that don’t view software as a field that can use the term because of its lack of certification.

[–] elias_griffin 3 points 7 months ago* (last edited 7 months ago)

Superb for including the Engineering Code of Ethics which I didn't know exsisted! In my decades of working on every part of Computer Systems, Information Systems, unfortunately, I personally think if you work for Big Tech, you cannot abide those Code of Ethics. From the website>

Fundamental Canons

Engineers, in the fulfillment of their professional duties, shall:

  1. Hold paramount the safety, health, and welfare of the public.
  2. Perform services only in areas of their competence.
  3. Issue public statements only in an objective and truthful manner.
  4. Act for each employer or client as faithful agents or trustees.
  5. Avoid deceptive acts.
  6. Conduct themselves honorably, responsibly, ethically, and lawfully so as to enhance the honor, reputation, and usefulness of the profession.

How many Google Code Monkeys violate 1 or more of those on the daily? For instance in Canon 1, it does not say profit is paramount, but that public welfare is paramount. In fact, you could argue that is a competing objective working for Big Tech and following ethics.

[–] theherk 23 points 7 months ago (1 children)

Poorly defined nomenclature. Simple as that. I’m an “automation engineer”, have had many other titles, but anytime I write what I do, like LinkedIn or such, I write “programmer”, because it is simple, descriptive, and I like it. I’m old, but I used to like ”hacker” until it came to imply nefarious programming.

[–] [email protected] 2 points 7 months ago* (last edited 7 months ago) (1 children)

Poorly defined nomenclature. Simple as that. I’m an “automation engineer”, have had many other titles (...)

Anyone can call themselves what they feel like it. However, in some jurisdictions and contexts the title "engineer" does have a specific meaning, consisting of someone who not only has the necessary and sufficient training but also is a member of a specific professional body. These credentials have meaning and those who try to pass themselves off as one without having the certification or credentials might be breaking laws.

load more comments (1 replies)
[–] [email protected] 17 points 7 months ago* (last edited 7 months ago) (1 children)

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.

[–] Pyroglyph 5 points 7 months ago (1 children)

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.

[–] [email protected] 1 points 7 months ago

It’s always been one of my favorite ways of describing the job :)

[–] [email protected] 16 points 7 months ago (1 children)

In a lot of places, engineering is a regulated field, meaning you need a certificate to call yourself an engineer. e.g. this lawsuit.

[–] [email protected] 2 points 7 months ago (1 children)

Guess im not an engineer in canada

[–] [email protected] 1 points 7 months ago

but what if you are

[–] bouh 14 points 7 months ago (2 children)

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.

[–] [email protected] 9 points 7 months ago

Holy shit can confirm. Am also fighting off some burnout or depression or both?

Get called out for being slow, yet their "fast" development time seems to be related to the projects we have to keep revisiting as they keep failing publicly 🤔

Like yea it needs to be delivered, but do we really want to be so careless with employee and customer trust? Also, wouldn't there be value in keeping things structured well enough to be consistent with our delivery times?

I get that it can be polished later but later never seems to come. The tech debt just keeps stacking and I find myself being the only one scraping up the turds.

I feel like I'm being gaslighted sometimes...

[–] elias_griffin 2 points 7 months ago

I've seen this time and time again and it breaks my heart. In a Tron way, I wish all users could ingest this and then make reforms to the Industry. Profit at all costs makes users poor.

[–] [email protected] 13 points 7 months ago

In my company everyone is called Software Development Engineer 🤷‍♂️

[–] [email protected] 11 points 7 months ago (2 children)

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.

[–] [email protected] 2 points 7 months ago

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.

load more comments (1 replies)
[–] [email protected] 10 points 7 months ago

I think it's just a "branding" difference. I was at a company once that changed everyone's titles from developer to engineer. It was mostly done cause engineer was more hip.

I think developer was more used a decade ago. I would not be surprised if it cycles back at some point. It's just like clothes fashion or whatever.

[–] [email protected] 8 points 7 months ago (1 children)

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.

[–] [email protected] 1 points 7 months ago* (last edited 7 months ago)

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

[–] grue 7 points 7 months ago (7 children)

As a former civil engineer who now works in software, "software engineer" irks me. "Engineer" means you're supposed to be licensed and you have a responsibility for the public good above your responsibility to your employer.

[–] FMT99 8 points 7 months ago (2 children)

Do engineers take some sort of hippocratic oath?

[–] orockwell 4 points 7 months ago (1 children)

Robert "Uncle Bob" Martin, author of several foundational texts, and coauthor of the agile manifesto provides one, which I think is good: https://blog.cleancoder.com/uncle-bob/2015/11/18/TheProgrammersOath.html

[–] elias_griffin 2 points 7 months ago* (last edited 7 months ago)

Very intersting! I'm not so sure about the oathiness of:

  1. I will make frequent, small, releases so that I do not impede the progress of others.
  2. I will do all that I can to keep the productivity of myself, and others, as high as possible. I will do nothing that decreases that productivity.

But I think the real oath impact there is:

  1. I will continuously ensure that others can cover for me, and that I can cover for them.

In Government work that, ^, is considered career ending.

I will improve upon this, thanks for the awareness.

load more comments (1 replies)
[–] [email protected] 5 points 7 months ago

This is seriously what’s missing from the software field. There is no rigor or responsibility

[–] [email protected] 5 points 7 months ago (1 children)

As a former civil engineer who now works in software, "software engineer" irks me. "Engineer" means you're supposed to be licensed

This really depends on the country you live in. In some countries you need a license, some need you to have some kind of university degree and others don't care at all. So we cannot really use that measure as a definition.

[–] [email protected] 3 points 7 months ago (1 children)

This really depends on the country you live in.

Not really. There are two aspects to this problem: one is how people assign arbitrary and meaningless titles to themselves, and another is regulatory requirements by jurisdictions to be able to legally assume a role.

I can call myself senior dubstep engineer, and that's perfectly fine. I can't call myself a civil engineer and sign off on a construction project or a permit. No one cares if I'm actually a senior dubstep engineer or if I'm junior at best. In the meantime, you will get in trouble if you try to sign off on a construction project, no matter of how stubborn you are with regards to calling yourself an engineer.

[–] [email protected] 1 points 7 months ago (1 children)

another is regulatory requirements by jurisdictions to be able to legally assume a role.

This is exactly what I mean with "this depends on the country you live in". Different countries have vastly different regulatory requirements. Taking UK as an example, you can call yourself civil engineer all day long without having to worry any legal consequences because there simply is no such thing as a licensing system for engineers.

[–] [email protected] 1 points 7 months ago (1 children)

Taking UK as an example, you can call yourself civil engineer all day long without having to worry any legal consequences because there simply is no such thing as a licensing system for engineers.

Britain's Engineering Council disagrees.

https://www.engc.org.uk/international-activity/access-to-practise-in-the-uk/

load more comments (1 replies)
[–] [email protected] 4 points 7 months ago

Hah, my dad (electrical engineer) had the same complaint when I studied sound engineering 😂

[–] [email protected] 3 points 7 months ago* (last edited 7 months ago)

As a former civil engineer who now works in software, “software engineer” irks me. “Engineer” means you’re supposed to be licensed and you have a responsibility for the public good above your responsibility to your employer.

This. I think some people don't understand that titles are not whimsical status symbols and hold actual legal and regulatory meaning. A random guy can hold an engineering degree and not be an engineer, while a random guy with no degree can actually be a engineer if he jumps through all the hoops.

In engineering fields, being a member of a professional engineering body is critical to work in the field, because the main value proposition of these credentials is to prevent incompetent people from working on critical tasks which can potentially have important consequences to society if they are done poorly. For example, people can die if an engineer signs off on a project for a residential building that collapses due to shoddy work. If that happens then the engineers who signed off on the project will be investigated and if they are held responsible not only can they be held criminally responsible for their work but their license will be pulled, which is society's response to ensure this problem won't happen again.

[–] [email protected] 1 points 7 months ago

“Engineer” means you’re supposed to be licensed and you have a responsibility for the public good above your responsibility to your employer.

Good point. We definitely don't, and it's what's causing huge amounts of trouble in the world, rather than using software for the greater good.

But engineer sounds better by some definitions, and it strokes the ego of employees, so companies like to use it to give more prestige to the role.

load more comments (1 replies)
[–] [email protected] 7 points 7 months ago* (last edited 7 months ago) (2 children)

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.

load more comments (2 replies)
[–] [email protected] 7 points 7 months ago (1 children)

This is probably the most well-researched piece of writing on the matter: https://www.hillelwayne.com/post/are-we-really-engineers/

[–] [email protected] 2 points 7 months ago (1 children)

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."

[–] [email protected] 1 points 7 months ago

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.

[–] [email protected] 6 points 7 months ago

I am in my first job that’s a full-on “software engineer” title, which is a move I wanted to make. However, leading up to it I have a 20 year engineering career covering various aspects of electronics as well as software.

What I work on is C/C++ that runs the company’s main industrial product, and not some more mainstream web or app development. So it’s software work as part of a multidisciplinary team to design or improve a physical product.

So for those reasons I only think of myself as an “engineer.” But I can totally see how other jobs using similar skills would be more “software dev” or even “I’m in IT.”

[–] glitches_brew 4 points 7 months ago

They told us in boot camp the difference is about $10k.

[–] [email protected] 4 points 7 months ago

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.

[–] elias_griffin 2 points 7 months ago* (last edited 7 months ago)

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.

[–] [email protected] 2 points 7 months ago

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.

[–] [email protected] 1 points 7 months ago

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.

[–] psy32nd 1 points 7 months ago

I don't wanna add anything here. You are correct on the idea you already have. Keep going 👍

load more comments
view more: next ›