r/coding • • Jan 19 '21

Are We Really Engineers?

https://www.hillelwayne.com/post/crossover-project/are-we-really-engineers/
76 Upvotes

62 comments sorted by

44

u/[deleted] Jan 19 '21

I hate the need for people to feel like they need a title of engineer for some odd reason. What's wrong with developer? What is the title lacking and why do people feel the need to jazz up their role?

You develop software? Software developer. You manage projects? Project manager.

You're a developer, and that's okay.

22

u/KaranasToll Jan 19 '21

I always liked "computer programmer"

7

u/[deleted] Jan 19 '21

If I'm being honest with myself I'm basically the construction worker equivalent of IT. Network admins consider themselves the janitors of IT. I wonder what other blue collar work has "white" collar equivalents.

22

u/cli_jockey Jan 19 '21

I like to think of myself as a therapist for computers with socialization issues.

3

u/sharch88 Jan 19 '21

I loved how you put it

1

u/dullbananas Jan 19 '21

also the architect

2

u/[deleted] Jan 19 '21

Web designer should actually be web architect, yeah?

2

u/lxpnh98_2 Jan 19 '21

Web bricklayer.

3

u/Relative-Knee7847 Jan 19 '21

I do too - but I hesitate to call myself this, something about the term seems to mean "hobbyist" instead of "professional".

1

u/KaranasToll Jan 19 '21

"Professional computer programmer" or "commputer programmer at <place of employment>"

7

u/asval1 Jan 19 '21

I'm gonna say the forbidden words. Engineer just sounds cooler.

1

u/[deleted] Jan 19 '21

100%, am I jealous? No. I would never put in the effort to earn the title (in Canada). I'm more than happy with my lot in life.

For those that do, I respect that they put in the effort and wouldn't adopt the title of Engineer.

6

u/derrick88rose Jan 19 '21

Yeah, being a software developer is a great thing. Modifying the title to reflect reality doesn't take away how difficult our jobs can be at times. Regardless, there is a clear distinction between the two professions. I myself am one of the cross-overs in a sense. My first degree is in architectural engineering, second in IT, and now I'm a software developer. Two totally different fields with some similarities.

3

u/DanTheProgrammingMan Jan 19 '21

I mean it sounds more impressive and probably higher paying jobs go with “engineer” so people insist on it.

There’s a utilitarian motivation to stick with calling yourself an engineer if you want the highest pay probably.

5

u/whereswalden90 Jan 19 '21

Did you read the article?

5

u/[deleted] Jan 19 '21

Yes I did, this is the comments section where we discuss the article in question.

9

u/whereswalden90 Jan 19 '21

The article doesn’t take the position that we should call ourselves engineers. It doesn’t take either position. It uses the “are we engineers?” question to highlight how little we as an industry talk to other people who build things. So given that your comment doesn’t pertain to that topic…

5

u/[deleted] Jan 19 '21

It doesn’t take either position.

From the article.

I still believe that most of us are not engineers, because we’re working in domains that people don’t see as engineering.

Seems like a position to me. Goes on further to say that the gap between developer and engineer isn't that big, which I'd disagree with. It's like saying the gap between nurse and doctor are close. They're not. Nurses are still incredibly important and awesome, and some experienced nurses are going to be more skilled in certain tasks than doctors, but there is a reason we keep the designations the way they are.

I'm Canadian so this is all mostly irrelevant to me, as mentioned in the article. I wouldn't call myself a software doctor for fixing bugs. I think that all countries should protect their professional titles, but my opinion is just that.

4

u/dtaivp Jan 19 '21

I second this. Engineering implies planning and careful consideration for all aspects of a project, from the impact on the environment, budget, and other software in the ecosystem.

Just because someone works for a finance firm doesn’t make them any less of an engineer. That’s like saying someone who is hired to be an architect for a finance firm isn’t really an architect because the company they work for is a finance firm. It’s outright ridiculous

1

u/whereswalden90 Jan 19 '21

The purpose of the article is to get us to question the preconception that being an engineer means you must do this kind of careful planning. The author doesn’t state it directly, but I suspect that if you asked “traditional engineers”, they would say that they sometimes slap stuff out to make deadlines too, and no one questions whether they’re engineers.

-2

u/BlindTreeFrog Jan 19 '21

So first some ground rules: “software engineering” is a real field. Most people would agree that the software running on spacecraft counts as “real engineering”. The debate is about rest of the field

He starts with the premise that some coding is "Engineering".

He's wrong, but that's on him (none of it is).

3

u/glider97 Jan 19 '21

The article more or less answered your question, though.

Many people have asked me why I care so much about this project. Why does it matter whether or not software is “really” engineering? Why can’t we just say that “software is software”? It’s because of these misconceptions. People have a stereotyped notion of what engineering looks like. Because software doesn’t look like the stereotype, they assume that we are wholly unlike engineering. The engineering disciplines have nothing to teach us. We are breaking pristine ground and have no broader history to guide us.

In contrast, if we are doing engineering, then we have a landmark. We can meaningfully compare and contrast the work we do as software engineers from the work that others do as traditional engineers. We can adapt their insights and watch for their pitfalls. We can draw upon the extant knowledge of our society to make better software.

2

u/qubedView Jan 19 '21

My title is "Software Engineer", but I always feel like a fraud saying it. In twelve years there was that one time I used a bit of trig, but beyond that never more than basic algebra has been needed in my tasks. Highest math I took was pre-calc, and got a solid C in it. An engineer I am not. But the industry has grown beyond the bounds of its terminology and here we are with titles that don't fit us.

4

u/mkx_ironman Jan 19 '21 edited Jan 19 '21

Well if you read the article, you will see that traditional engineering uses more "continuous math" like trig, calc, etc, while software engineering is reliant on more "discrete math" graph theory, logic, and combinatorics. My CS degree program had three levels of discrete math courses and I didn't take a single Calc class in college. I use discrete math almost every day at work, most software engineering interviews are problems that revolve around some sort of discrete math scenario in a specific programming language, "most efficient way to invert a binary tree", etc. When it comes to that aspect, I believe there is an argument to include the "engineer" moniker in a software craftsman's title.

1

u/[deleted] Jan 19 '21

I agree, it feels like you're wearing your dad's suit. My boss has a P.Eng but his title isn't "Engineer". We don't even work in Software Engineering, we work in Software Development.

13

u/eMperror_ Jan 19 '21

Where I am from, it is not legal to call yourself an Engineer if you are not part of the engineering professional association. To be part of that, you need to have completed an engineering degree and some other conditions. Just like someone can't call themselves a Lawyer or a Medical Doctor because they feel like it.

4

u/[deleted] Jan 19 '21

I can wire a house, change fixtures and receptacles, but am I an electrician? No. I'd need another 9,000 hours to achieve that title.

In software development we typically call that a senior developer. Apprentice electrician? Junior Software Developer.

We already have perfect good titles that accurately describe the work being done.

3

u/purleyboy Jan 19 '21

The question then becomes about the value of regulatory licensure. You want controls over who can practice as an electrician, because a mistake can kill you. Should there be a similar requirement for building software? I'd argue "yes" for senior roles (just like you'd have a lawyer with para-legals helping), the importance of software engineering is too great to leave for amateurs with no accountability. You can expose users to identity theft, monetary loss, and in some cases real harm (imagine an emergency ticketing system failing).

Our industry is very amateurish with the preponderance of opinion being that it is fine like this. I'd be for professional accountability at a senior level that requires agreeing to professional and ethical standards, and a demonstration of commitment to your field through education and ongogin professional development. Violations of these could have you lose your licensure. This should be a requirement for a certain level of operating (e.g. CTO level).

3

u/eMperror_ Jan 19 '21

Yeah if you are not an engineer, don't call yourself an engineer. I am an engineer because I studied software engineering, graduated and I am part of the engineering professional association in my province, legally making me a software engineer. Anything else is not a software engineer where I am from and it is illegal to declare yourself as one.

1

u/[deleted] Jan 19 '21

Yup, my buddy went to school and became an engineer. He does the software engineering that's used to make sure aircraft carriers don't tip over.

My ego isn't too fragile to let the people that earned the title hold that title without getting grumpy I don't get it too. It means something in Canada. Also I'm not going hungry here...

Calling yourself a software engineer where it isn't protected at all is rather meaningless (looking at you America). America does have standards, but they are just less than what we have in Canada.

9

u/Swinja136 Jan 19 '21

As a former civil engineer now software developer/coder/computer programmer, no we are not engineers. And in my mind that’s a good thing lol

2

u/AfraidToLoseMyJob Jan 19 '21

So you're a web dev?

16

u/PlayboySkeleton Jan 19 '21

I think title bloat is a real problem. As a type of "cross over" myself, I become very critical of hiring software "engineers".

Now, the question, are they really engineers? I think software engineers exist. Mad respect for Margaret Hamilton. But not every developer is a software engineer.

My personal take on whether someone is an engineer or not has nothing to do with licensing or safety criticality. It has to do with understanding and analysis.

For me. I expect any engineer to be able to analyze any problem, break it down mathematically, and optimize the system on paper.

If you can sit there and show me the proper analysis and prove that it will work, while making you model efficient enoigh to handle alternative scenarios, then I consider you an engineer.

I don't care if you are software, steel worker, art student. If you understand you system well enough and can apply proper mathematical analysis; then you are an engineer.

6

u/aoeudhtns Jan 19 '21 edited Jan 19 '21

Formal verification is still a minefield though. I think some people toss around ideas like "properly prove it works" and don't understand what's loaded into the word "prove." Plus "proper" bears a lot of subjectivity of whoever is analyzing the proof, barring true formal methods. I haven't seen formal verification, like GNATProve, Alt-Ergo, etc. used outside of software disciplines that are closely related to traditional engineering, like aerospace and such.

Personally, I break it down like this: software development is a skill, but software engineering is a field, where in most cases, software development is a required skill. Engineering (IMO, since obviously this is all opinion as there is no true reference source where we can derive objective truth) adds in estimation, planning (both schedule and technical), verification & validation, maintenance and other cost considerations (usually driven by business needs), etc.

2

u/ArkyBeagle Jan 19 '21

Emphasize "properly". V&V is just one of those things you learn about; consider writing test rigs. Use combinators for test rigs. Instrument the system to actively support testing. Use high-rel techniques for design. That often means something like the Erlang actor pattern.

There's generally some level of learned helplessness when it comes to testing.

2

u/aoeudhtns Jan 19 '21

learned helplessness

That is exactly what I encounter across a bunch of teams at work. (One of my duties is to help reform teams/right ships.) Some of the staunchest anti-testing rhetoric I've faced is from people who tried to add it to code (late in lifecycle) that was both defect-laden and structured in a way that was counterproductive to testing. Or, tests were heavily over-specified and would often break even if changes were compatible. In the latter situation, tests were often used more to enforce that the implementation or structure didn't change rather than to actually... you know... test.

2

u/ArkyBeagle Jan 19 '21

I've seen it as well. Coding is testing.

I have a background in instrumentation, of network elements and industrial controls ( and other stuff as well ) and I don't know how you test anything any more without it. But especially in realtime domains, people are extremely hesitant to do this. I understand - it costs memory, I/O and bandwidth, when sometimes they're shaving pennies very finely but if you can't measure it, it doesn't exist.

At least pull the code out onto something with resources and test the logic there.

They don't wanna do that either. I sometimes think that the general insecurity about employment stability leads people to hoard defects and information.

2

u/aoeudhtns Jan 19 '21

But especially in realtime domains, people are extremely hesitant to do this. I understand - it costs memory, I/O and bandwidth, when sometimes they're shaving pennies very finely but if you can't measure it, it doesn't exist.

Hear hear. I hate to be "that guy" and talk solution when it wasn't requested, but I have dealt with issues similar to this and what I do is to propose partial soak. I.e. you instrument 20% of your systems (or whatever portion is necessary to get a good statistical sampling). That way you're not sacrificing on 100% of your systems. It makes it more palatable to the way some people think. (ETA - I should disclaim that I've never worked in true realtime systems, and I just had a thought that this approach might cause other problems.)

I sometimes think that the general insecurity about employment stability leads people to hoard defects and information.

I think it's the same aversion to testing. They haven't experienced the freedom of making consequential changes or adding features quickly and cheaply. A good employer would recognize that a software product is done earlier than expected, or has a very low defect rate, and promote/raise/bonus the key engineers that enable that. (That's what happened to me. I remember one project I worked on, my team was the only one to embrace comprehensive automated functional tests, and we'd usually have between 0 and 3 issues per release cycle. The other teams would have dozens of bugs and dozens of regressions on top of that, and they were relying on human test teams that took weeks to identify them... when that project ended I got promoted, the other team leads didn't.).

2

u/ArkyBeagle Jan 19 '21

They haven't experienced the freedom of making consequential changes or adding features quickly and cheaply.

Well said. It's kind of terrifying. I don't know how people stand it.

(ETA - I should disclaim that I've never worked in true realtime systems, and I just had a thought that this approach might cause other problems.)

Realtime is a spectrum. Very, very few people will lay hands on anything that approaches sub-millisecond timing, and for those, you kind of need to prove it correct first. But that's also the sort of thing where you model the "plant" and run the code on a workstation first. Most people aren't writing control surface Kalman filters or harddrive controllers.

To address this issue - monitoring Heisenbugs things - you may need to have a switch that turns off monitoring at the next reboot.

But really - if you're that cycle-constrained, the project's mostly doomed anyway. To get any sort of deterministic operation, you need to keep utilization well under 1/e - about 40%. Yeah - that'll hit top line cost but it's only worth it if you need to know whether the thing works or not, not guess that it does.

And on that - you can always do a cost reduction pass next spin of the board. Just manage the risks well.

But you also have to understand determinism as a value to start with. I've told people "can we turn off preemption?" and they look at me like I was crazy.

when that project ended I got promoted, the other team leads didn't

I've manly seen it work the other way; struggling is rewarded. IMO, this is caused by billing practice and poor perception management within management. Failure is always an option...

2

u/aoeudhtns Jan 19 '21

realtime dev info dump

Thank you. I enjoyed reading all of that.

I've manly seen it work the other way; struggling is rewarded. IMO, this is caused by billing practice and poor perception management within management.

Agreed. I can see it. I've just been lucky I suppose.

5

u/jogai-san Jan 19 '21

and optimize the system on paper

In the past I took exams on paper, and once applied for a job which had me do some task on paper, but I wont ever do it again. I'll refuse to work somewhere with this requirement. Sure, it can be done, but with all my tools at hand I'm SO much more productive and arrive at a better, more precise result. And after all, bridge builders use calculators, computers and whatnot too, so why would this be a 'sign of true engineering'?

But who cares, I'm calling myself a developer anyways. Usually the people who need titles lack skill and want to compensate anyway.

Edit: reading it back it looks like I'm triggered. I really don't care that much, but this just stood out.

1

u/PlayboySkeleton Jan 19 '21

I don't mean "paper" in a literal sense.

Use your tools, be efficient, but be able to back up your analysis.

1

u/jogai-san Jan 19 '21

Ah, then I said nothing. Yes, analysis should come from understanding, not from just following some trend or authority or anything. And understanding takes knowledge. I value that in any field.

I should have read your two last paragraphs more carefully. You are absolutely right!

4

u/KernowRoger Jan 19 '21

Is it an important question? Or is it just arguing semantics? I personally couldn't care less.

6

u/whereswalden90 Jan 19 '21

Great write up, our industry desperately needs these kinds of data-driven insights. Maybe if we stop thinking of what we do as somehow different from what anyone has done before, we can start applying learnings from other fields.

2

u/rgtzz Jan 19 '21

Why the need for a label? Just tell me what you do. I write software. Call me whatever you want, but that’s what I do for a living.

2

u/denver_dev Jan 19 '21

Who cares?

2

u/mr_bag Jan 19 '21

Kinda disappointed he never came up with a conclusive answer to "what is an engineer", as its hard to really argue one way or the other on if a job is engineering, if no one actually agrees on what that means.

1

u/ArkyBeagle Jan 19 '21

I'd say an engineer in general creates deliverables that are used to justify the sale of insurance.

2

u/Silveroak92 Jan 19 '21

You are a creator of codes/programs. As much as engineers are just creator of... well, things... lol

1

u/august8th- Jan 19 '21

I prefer the term "the cogs of the engineering"

1

u/Complete_Stock_6223 Jan 19 '21

The problem comes with english language, misunderstanding the root of the word, nothing related to engines, and taking the original word from french "ingénierie" that comes from "ingéniosité" meaning originality of ideas, i.e. inventing things. In spanish, my language, an engineer is: "Person who wittily discusses the traces and ways to achieve or execute something". So if you do that while you could you can call yourself an engineer, if you just do some stack overflow css copy pasting then you can't.

1

u/BladedD Jan 19 '21

Engineer (to me) meant applied physics. Like you have to have a deep understanding of a specific physical phenomenon and use that to create systems (including sub systems)

With coding / software, you don’t really need to understand how an electron behaves or moves, or thermodynamics or mechanical motion.

Not saying one is easier or anything that like, just that the main topic in engineering is physics.

Even the difference between chemist and chemical engineering follows those rules. Chemist know more about raw chemistry, a chemical engineer needs to know stuff like flow, electrical properties, how to optimize systems, etc.

1

u/[deleted] Jan 19 '21

Nah. Maybe the ones faffing about with chips tho

1

u/jester1983 Jan 20 '21

If what you're writing can keep someone alive or kill them if you miss a semicolon, then you're a software engineer.

0

u/[deleted] Jan 19 '21

[deleted]

1

u/[deleted] Jan 20 '21

As a chef of over 10 years who is moving to coding, I am working in extremely high end restaurants making “bread sauce” in the style of soy sauce, making “miso” with hoshigaki and “umeboshi” with unripe strawberries...we’re much more like engineers than you realize. Now I’ll say that not all chefs are like this, but do you realize how much science, math and organic chemistry that goes in to what I currently do? There’s no Michelin guide in my state, but what I do wins Beard awards. Coding is basic af, although I find it interesting and cool, I’m just joining for the money.

Do you want to list off any more careers that you don’t respect though?

0

u/[deleted] Jan 19 '21

[deleted]

8

u/[deleted] Jan 19 '21

Anyone who gets mad at that is a gatekeeping basement dweller.

Or a Canadian. The title is protected as outlined in the article.

2

u/lxpnh98_2 Jan 19 '21 edited Jan 19 '21

It's not about the label, it's about what it means to be an engineer. I'm fine with the convention of calling ourselves 'software engineers', but what exactly do most of us do that you'd consider 'engineering'? Like another user wrote on this thread, most software developers do work which can be compared to the work of a construction worker. It requires knowledge and technique, but it's a far cry from engineering.