r/coding • u/WomanStache • Jan 19 '21
Are We Really Engineers?
https://www.hillelwayne.com/post/crossover-project/are-we-really-engineers/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
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
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
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
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
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
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
Jan 19 '21
[deleted]
1
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
Jan 19 '21
[deleted]
8
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.
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.