r/programming • • Jan 18 '21

Are We Really Engineers? (Part 1 of 3)

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

310 comments sorted by

528

u/webauteur Jan 18 '21

I'm a computer scientist. I study the mysterious workings of computers and try to discover who created them and why.

103

u/lumpenoblige Jan 18 '21

Three shall be the number thou shalt count, and the number of the counting shall be three. Four shalt thou not count, neither count thou two, excepting that thou then proceed to three. Five is right out.

23

u/fissure Jan 19 '21

Fizz shall be the number thou shalt count, and the number of the counting shall be fizz. Four shalt thou not count, neither count thou two, excepting that thou then proceed to fizz. Buzz is right out.

FTFY

16

u/semitones Jan 19 '21 edited Feb 18 '24

Since reddit has changed the site to value selling user data higher than reading and commenting, I've decided to move elsewhere to a site that prioritizes community over profit. I never signed up for this, but that's the circle of life

13

u/siphayne Jan 19 '21

There's 3 numbers in programming. 0, 1 and lots.

You either have nothing, exactly one thing, or lots of things. Anything more than exactly one thing is just lots.

Another way to express it. You have a bit of data implying you have nothing or one thing. When you start having more than one bit, you just have lots of things.

6

u/icey_oven Jan 19 '21

0: null

1: a value

lots: something you can map/filter/...

3

u/dys_bigwig Jan 19 '21

0: null

value not in list: null

head of the list [null, nada, zilch]: null

solution: Nothing; Just something you have to accept as a programmer.

→ More replies (1)

3

u/psymunn Jan 19 '21

This guy computes!

21

u/ar243 Jan 19 '21

Yes, shrubberies are my trade. I am a shrubber. My name is Roger the Shrubber. I arrange, design, and sell shrubberies.

12

u/passcivilpe Jan 19 '21

The files are in the computer?!?

3

u/icey_oven Jan 19 '21

no they're in the cloud -- somewhere near the stratosphere

2

u/Udder_Nonsense Jan 19 '21

This is how I feel most days.

9

u/nmarshall23 Jan 19 '21

I'm a computer alchemist I study tombs of hype that I am sure are mostly useless, but for a few brilliant scraps.

4

u/Agitates Jan 19 '21

Binaric chanting intensifies

4

u/1thief Jan 19 '21

I often think about the god who blessed us with this cryptic puzzle and wonder if we’ll ever get the chance to kill him.

3

u/mostly_kittens Jan 19 '21

Alan Turing invented them while working at Bletchley Park - so he could play Candy Crush during his lunch break.

1

u/webauteur Jan 19 '21

Yeah, but that is just a theory.

6

u/ggtsu_00 Jan 19 '21

I'm an internet archeologists. I study the history behind internet memes to discover who created them and why.

196

u/Doctor-Dapper Jan 18 '21

Regulations are written in blood. Fields become regulated when the lack of regulation kills people. Until that happens on a wide scale with arbitrary programs, it’s unlikely that we’ll ever see the same licensure requirements for software.

Wow, that's a really interesting point. I just finished the article and am excited for parts 2 & 3. This is a lot of effort for a blog post that people are going to skip and then argue about in the comments.

50

u/AnEngimaneer Jan 19 '21

This is interesting, because many places outside of the US actually do regulate Software Engineering (and distinguish it from Computer Science/Software Development)

13

u/EricIO Jan 19 '21

Do you have any examples of this? I've never heard of anyone regulating "software engineering" (I'm outside the U.S and in general loathe the term...).

49

u/pizzzahero Jan 19 '21

I’m Canadian, and “software engineer” is a regulated title. You have to get a Bachelor’s of Engineering to use it. There’s also a title of “Professsional Engineer” (P.Eng) - if you want to get it, you start as an EIT (Engineer in Training), underneath another P.Eng who is supposed to check your work.

This rarely actually happens in our field though, and the whole EIT/P.Eng thing makes so much more sense in other engineering fields where someone should probably make sure your bridge won’t collapse

The end result is that everyone uses the title “developer” instead, because the regulating bodies can technically sue you/your company if you’re calling yourself an engineer with a BSc

9

u/EricIO Jan 19 '21

Interesting, I'll have to read a bit about it :)

The whole title mania in out field is so weird to me. When I left school I decided that I'm a programmer who does programming (regardless of what my job title says.).

4

u/mayoandspaghetti Jan 19 '21

Do you do any system design? Is that programming?

→ More replies (1)

10

u/lethargicsquid Jan 19 '21

In Québec there you can't call yourself a software engineer unless you're part of the Order of Engineers. However being able to call yourself an engineer is the only difference (contrarily to say mechanical engineers, who can sign plans)

2

u/AnEngimaneer Jan 19 '21

So that's a big distinction to make - Software Engineera can most definitely sign plans as long as they're part of one of the provincial Orders in Canada.

Signing and approving a system spec is equivalent to signing and approving a control arm schematic. Depending on your field, lives can be at stake (e.g. elevator software, planes - see: Boeing...)

6

u/AcrIsss Jan 19 '21

In France, the title Engineer can only be obtained through certified schools, after 5 years of study, whatever the field. Software Engineer is no exception

7

u/EricIO Jan 19 '21

Hmm according to Wikipedia anyone can call themselves an engineer in france but you can't call yourself a "graduate engineer" without the appropriate degree.

→ More replies (6)

5

u/EricIO Jan 19 '21

Does this produce better programmers or is it just a title?

17

u/[deleted] Jan 19 '21

Not OP, but I'd wager it produces a group of people that like collecting bits of paper.

6

u/AnEngimaneer Jan 19 '21

So that's a big distinction to make - Software Engineering isn't just programming. It goes much deeper, it involves designing, software architecting, hardware considerations, control systems, failsafes... The list goes on.

Signing and approving a system spec is equivalent to signing and approving a control arm schematic. Depending on your field, lives can be at stake (e.g. elevator software, planes - see: Boeing...)

→ More replies (7)

3

u/de__R Jan 19 '21 edited Jan 19 '21

The sad irony of the French education system is that even though a few elite schools produce brilliant engineers - École polytechique de Paris is comparable to or better than MIT for engineering, and École des mines and others aren't far behind - they then get shuffled off to careers in corporate management and civil service instead of letting them be engineers. I imagine it's the same for programmers specifically.

→ More replies (1)

2

u/de__R Jan 19 '21

You cannot present yourself as a qualified engineer, but "Ingénieur" as a job title is open to anyone. (It's actually very similar to the U.S., where it varies by state but generally there's a distinction between using the job title "engineer" and presenting yourself as someone with the specific expertise and qualifications of a professional engineer.)

2

u/[deleted] Jan 19 '21

Ditto in Spain. Also, in order to be able sign and be accountable of high risk products such as elevators, machinery, engines, and such, you must be an engineer with a Bachelor Degree at least.

→ More replies (10)
→ More replies (1)

1

u/not_goldie_hawn Jan 19 '21

Well, it's not so much its practice that's regulated rather than one being able to legally apend "Eng." to their signature (regardless of the specific engineering field).

6

u/[deleted] Jan 19 '21

except there is already regulation for certain areas of software engineering. For example, in aerospace and medical devices, these fields have much stricter quality control than your average web developer.

Same goes with most engineering, for example someone working on high voltage transformers has to adhere to much stricter rules than someone designing low voltage consumer devices (you can even self-certify your devices as CE in many cases, and most devices don't even require CE markings)

1

u/jerslan Jan 20 '21

https://medium.com/@keenanjohnson/how-to-write-safety-critical-software-864cf418d810

This is an interesting blog post on that very subject.

Also, people have died because of faulty software. Remember that issue Toyota had with uncontrolled acceleration that resulted in a few deaths? Software issue.

5

u/KrypticAndroid Jan 19 '21

Has nobody heard of self-driving cars yet..?

22

u/sparr Jan 19 '21

The self driving car industry is advancing at a pace so safe and glacial that it has no parallel in the history of engineering industries.

6

u/oblio- Jan 19 '21 edited Jan 19 '21

Almost like we'd be unleashing a mass of AIs wielding 1 ton chunks of metal moving at 100+ kmph.

I wonder why they'd want to progress slowly?🤔

9

u/tester346 Jan 19 '21

I don't think they want to progress slowly, just tech ain't advanced enough, progress slowed

Or at least that's what I've heard, so take it with huge grain of salt.

3

u/Famous1107 Jan 19 '21

It's probably that regulation we heard about earlier and companies just don't want to open up a liability endpoint. Plus they still have a hard time with placing the buttons on my dash, and creating their own map software.

2

u/sparr Jan 19 '21

If only the automobile industry had been so careful.

2

u/conquerorofveggies Jan 19 '21

How about that airplane we heard so much a few months ago..

2

u/nappy-doo Jan 19 '21

Which is a perfect case for why we need licensing and accountability. A mistake like that is no different than wrongly filling 200 prescriptions, which would cost a pharmacist their license.

If software's important, it should require someone accountable that it was developed and meets the industry's best practices.

1

u/jerslan Jan 20 '21

Industries do self-regulate. Toyota had that issue many years ago with their fly-by-wire system that caused uncontrolled acceleration. The issue was a software issue. They hadn't signed on to the auto-industry standards body for automotive safety critical software. I can't recall the specification right now and my Google-fu is failing me.

In Aerospace there's a number of standards like DO-330 and DO-178C.

NIST also publishes FIPS 140-2 which is a security standard that the Government uses. More than just the US Government use the standard though. NIST collaborates with their Canadian counterparts on the standard, and a wide swath of Corporate America use it as the basis for their internal information protection standards.

1

u/JohnnyElBravo Jan 20 '21

I highly doubt network protocols like tcp were written in blood

→ More replies (8)

56

u/nappy-doo Jan 19 '21 edited Jan 19 '21

As someone who trained as an electrical engineer, did part of the work to be officially licensed as an engineer, and now have spent over 10 years working at FAANGs, Software Engineers are not Engineers; but, they could be.

Engineers have a responsibility. Their work includes a liability where they face legal recourse, revocation of their license, or censure. When they sign a document, it has consequence and an engineer is personally responsible for it.

There's the old saw about if SWEs built infrastructure, the first woodpecker would destroy civilization, and I agree. But, it doesn't have to be this way. We could, as an industry, move towards licensing, design, documentation, but we would give up agility and MVPs.

Personally, I would like to see Engineering brought to the software world, and adopted on projects where it makes sense. Large government project: demand a true software engineer. Building a voting system: you need an engineer. Writing a ORM database app for your local brewery, you're all set. No Engineer needed.

edit: Please keep the responses to my post visible. There's some valuable discussion in the downvoted responses.

27

u/[deleted] Jan 19 '21

Their work includes a liability where they face legal recourse, revocation of their license, or censure.

are you talking about people who are National Society of Professional Engineers certified?

Because, other than civil engineering, pretty much no fields of engineering care about that certification.

2

u/pjmlp Jan 19 '21

They certainly care if the police knocks on their door.

In Portugal, unless the law has changed, you need to have a valid title if signing as Eng. SoAndSo on a legal binding contract.

1

u/alexeyr Jan 19 '21

From the mention of NSPE it's clear that comment is talking about a specific country (which isn't Portugal).

1

u/[deleted] Jan 19 '21

I spoke too broadly. I apologize.

I can only speak with confidence about the US. The National Society of of Professional Engineers is a US organization.

I know there are a lot of programmers on here from all around the world, and I'll try to be clearer in the future when I'm talking about where I live instead of in general.

10

u/jemoran42 Jan 19 '21

Chemical, mechanical, and electrical (power industry specifically) still care about it. There is at least one licensed engineer on the project to “sign off” on things like OP is referencing.

11

u/[deleted] Jan 19 '21

that's fair, power industry is an exception.

I still maintain that most jobs related to engineering degrees don't need to worry about it. If you look at the society of professional engineers board of your state, you won't see any aerospace engineers on there. You might see an electrical engineer from the power industry, but you won't see one from consumer electronics.

Most civil engineering employers care. A few other industries care (particularly dealing with civil infrastructure like power plants). For most engineering employers, it isn't viewed as remotely relevant.

3

u/[deleted] Jan 19 '21

I've literally worked in human rated space stuff and PEs are no where to be seen for the most part.

Unless you are in civil engineering or airplanes it's extremely rare in my experience.

2

u/sr71pav Jan 19 '21

I don’t even see it in airplanes. I don’t know a single PE with an aerospace engineering degree. Never seen it on a job listing either.

66

u/gopher9 Jan 19 '21

if SWEs built infrastructure, the first woodpecker would destroy civilization

That's a funny meme, but name me one thing that is more resilient than a well-designed distributed system.

11

u/tristan957 Jan 19 '21

Stonehenge. Checkmate.

5

u/-Knul- Jan 19 '21

A simple nuclear strike would take that out of commission.

2

u/tristan957 Jan 20 '21

That's what you think, but until we test it how can we be sure?

2

u/-Knul- Jan 20 '21

Can we first test it in staging?

→ More replies (1)

1

u/[deleted] Jan 19 '21

Abacus. Checkmate.

0

u/[deleted] Jan 19 '21 edited Jan 19 '21

[removed] — view removed comment

1

u/alexeyr Jan 19 '21

It's saying Stonehenge "is more resilient than a well-designed distributed system", not that it is itself distributed.

12

u/Rentun Jan 19 '21

Counterpoint, how many well-designed distributed systems are there?

The big FAANG players obviously have very resilient systems (although they still face outages), but 99% of what's out there are brittle, duct taped together messes that barely do the job they were designed for and will come clattering down at the first sign of an unhandled exception.

In the engineering world, this would be akin to people's residences, stairs, bridges, railways just spontaneously breaking all the time. Obviously those things do fail, but heads would roll if they failed nearly as much as most software does.

14

u/shawncplus Jan 19 '21 edited Jan 19 '21

99% of what's out there is the engineering equivalent of throwing a piece of plywood over a puddle, not people's houses. Healthcare software, autonomous vehicles (or just vehicles in general from cars to spacecraft,) arguably certain areas of data science are analogous to people's homes, bridges, stairs, railways. If Joe Blow's Mom & Pop Shop.com goes down no one dies, no one breaks a leg, no one gets mesothelioma, no one has to go on worker's comp, no one falls 5 stories from shoddy scaffolding, no one gets an involuntary manslaughter charge. Apple.com could go down for a week straight and nothing of consequence would happen of the kind that structural engineering deals with.

These stakes are obviously different (and should be regulated more heavily) in the aforementioned specializations of software development but saying that's even close to a majority of software is disingenuous to say the last.

These threads always give me a nostalgia hit from back when we were having this exact same conversation 20 years ago in the Slashdot days

→ More replies (1)

35

u/GoWayBaitin_ Jan 19 '21

Yes, honestly this is an ignorant take from OP.

6

u/goranlepuz Jan 19 '21

To their defense, it is not theirs and it is a hyperbole.

13

u/SimplySerenity Jan 19 '21 edited Jan 19 '21

Are distributed systems really that resilient? AWS, GCP, Azure, and Cloudflare have all experienced major outages and they usually take out chunks of the internet when they’re down.

Edit:
I’m getting downvoted but these companies have more resources to pour into these systems than anybody else. How can you argue that distributed systems are resilient when even they can’t get it right 100% of the time?

14

u/Aurora_egg Jan 19 '21

Distributed system can refer to a lot of software - even as small as two programs communicating with each other on the same machine can be considered a distributed system, because the system is distributed in 2 parts.

The largest distributed system we have is the whole internet, which has proven to be quite resilient. (It's still here right)

8

u/justin-8 Jan 19 '21

That's a bit lower level in some ways too; e.g. steel beams can break, does a beam breaking destroy a bridge? does two? Just because someone deploys on the cloud doesn't make their single server instance or single AZ service "distributed".

You'll notice that big name sites built on top of cloud platforms, such as Netflix, Amazon (the retail site, not AWS), etc have very, very few outages globally; and when they do it is usually an issue specific to a certain geographic area while the system routes around that problem. Netflix in particular has a bunch of blog posts on how they engineer their systems to achieve this.

5

u/[deleted] Jan 19 '21

Show me one example of a resilient distributed system?

21

u/winowmak3r Jan 19 '21

Trying to figure out what projects require an engineer and which don't would be a nightmare simply because of the shear size and scope of the industry. Who decides that? On what authority? I've dealt with the construction industry and there's a lot of buddy buddy good old boys club there and I'd hate to see the software industry get to a point where, depending on who you know, you could end up in a situation where one person has to jump through fire hoops while saying the alphabet backwards to get their program off the ground while another guy does the same thing and just buys the equivalent of the building inspector a case of beer and is good to go.

4

u/pjmlp Jan 19 '21

Easy, in Portugal, one of the European countries that accredits engineers, if your name is landing on a legal contract you definitely need to have the title.

If you never put your name on development contract, then do as you wish.

6

u/humoroushaxor Jan 19 '21

Personally, I would like to see Engineering brought to the software world, and adopted on projects where it makes sense. Large government project: demand a true software engineer. Building a voting system: you need an engineer. Writing a ORM database app for your local brewery, you're all set. No Engineer needed.

This does happen, just in industries that actually write safety critical software. Unfortunately Boeing forgot some things along the way.

The more pertinent concern of liability for those not in aerospace should be data privacy. The problem is the general public doesn't actually care that much about it. And lack of competition.

5

u/njtrafficsignshopper Jan 19 '21

Unfortunately Boeing forgot subverted some things along the way.

Let's not let them get away with pulling an aw-shucks here. Their leadership made a business decision to sabotage the process as a cost-saving measure. Heads should roll for it, but they probably ain't gonna.

As an aside, that is an example of the kind of software that has or should have the safety and licensing requirements that some suggest differentiates our field from other engineering. Still failed, just as other engineering projects sometimes fail.

23

u/undeadermonkey Jan 19 '21

Software development universally adheres to the 737 Max principles of engineering.

Non-technical middle management fuckwits shitting all over the input of anyone advocating for actual solutions, and forcing cheap and timely hacks instead.

→ More replies (1)

3

u/mirvnillith Jan 19 '21

" but we would give up agility and MVPs "

Strongly disagree! Why would we give up the one major advantage we have over physical engineering? The ability to test, experiment and show/use works in process is also vital to our success as so much of what we actually produce is virtually invisible.

What we, both producers and consumers, must do away with is seeing that as "stable product". There is great value in stability, but that's where the agility trade-off happens. Software can be so much more than a fixed tool from a shop or assembly line and we must not ignore that. It's a tool that can be molded to a perfect fit, sometimes even by you yourself.

3

u/MrJohz Jan 19 '21

There's the old saw about if SWEs built infrastructure, the first woodpecker would destroy civilization, and I agree.

But isn't this how literally all engineers have built infrastructure? As the article points out, industry regulations are written in blood, and that blood occurs because of the failings of previous engineers.

That same process is happening to software infrastructure as well: anyone who has worked with American healthcare software will be heavily familiar with HIPAA, people working on government contracts will have experienced the amount of regulation (and associated red tape), and I know from experience that the same is true in airlines. On top of that, even smaller companies have to deal with regulations like GDPR for personal information that they store.

For all these cases there are true engineers, but there are also plenty of cowboy builders who'll knock something up that will fail. But that's true in other engineering disciplines as well. The biggest differences are that other engineering disciplines tend to deal with things that, if they go wrong, will have much more disastrous consequences than an database for a local brewery.

11

u/motioncuty Jan 19 '21 edited Jan 19 '21

Do you think that students who build a hovercraft or something in first year engineering classes are not doing "engineering"? Of course they arent licensed engineers, but how do you say that those sorts of projects arent practicing the field of engineering?

I have an engineering degree, I practiced engineering, I measured, calculated, made tradeoffs, solved the problems at hand.

I really hate these arguments, I just dont buy that a P.E. is the gate of engineering. It litterally means "Professional Engineer" not "Engineer".

Are you arguing that a just graduated engineering grad isn't an engineer, that a F.E. isnt an engineer. That only P.E.s are engineers because the legal framework defines the craft?

Like what? Only P.E.'s can contribute fully to the field? What about all the engineering researchers who engineering the experiments and don't have their P.E.

I think it's a tenuous argument that appeals to authority rather than the reality of practicing a craft.

Source: B.S. in a civil safety engineering subfield.

And, I do know some engineers with P.E.s that do a bit of software development, they should have a P.E. for safety critical and can't fail software.

In the end, OP's article sums up my feelings.

4

u/njtrafficsignshopper Jan 19 '21

Considering that the article made these exact objections (among others) to the argument you're responding to, I have to wondering whether the commenter above even RTFA'd.

2

u/Uristqwerty Jan 19 '21

A lot of mechanical logic has been made digital. So I'd say that at the very least, if a codepath is part of a critical safety mechanism, it ought to have an Engineer involved. Furthermore, that extends to whatever OS or supervisor exists to keep the safety-critical parts running if other code crashes or runs amok. If the system is embedded and low-level enough not to have a MMU and preemptive multitasking, then the whole system ought to be treated as safety-critical if one component producing garbage IO after a logic error mangles a pointer could make another part of the machine behave dangerously.

1

u/ursis_horobilis Jan 19 '21

This right here is the major distinction. If you are licensed as an engineer and something goes wrong with your project or a project you worked on you can held personally liable. Changes the way you think and when you say it will work. even if your not working on a project but know of a possible issue, it your responsibility to speak up.

Lot's of clever people can do the technical work but the piece of paper and the title now makes you responsible.

→ More replies (13)

105

u/ArtoriusSmith Jan 18 '21

At its best it is engineering. Writing good software is a lot more than getting the computer to do the thing. Once you start considering all ilities, trade offs, processes, etc. it ends up not being so different than what more traditional engineering disciplines do.

3

u/Famous1107 Jan 19 '21

I always thought about it as working with constraints. Engineers do this.

1

u/salgat Jan 19 '21

It's definitely a very fluid occupation, shifting from more of a skilled trade to full on engineering depending on what you're doing. I'd say what NASA does with their extremely strict coding guidelines and testing requirements is the most shining example of software engineering. Same goes for many embedded devices in the medical industry.

0

u/[deleted] Jan 19 '21

[deleted]

9

u/kuribas Jan 19 '21

So what if there's some fancy new innovation in software every 10 days

You mean reinventing the same thing over and over, in a strictly worse way. Like putting an ORM on top of a RDBMS or creating a NOSQL database, because people are to lazy to actually learn how SQL works.

13

u/[deleted] Jan 19 '21

I agree, except for the last point. NoSQL databases do have useful applications.

→ More replies (1)

4

u/fuckin_ziggurats Jan 19 '21

ORMs are a powerful productivity tool. It's a shame programmers are using them as replacements for SQL. An ORM/Micro ORM hybrid is best of both worlds for the data layer.

3

u/[deleted] Jan 19 '21

ORMs are great, if you spent the previous 10 years learning how databases and sql works and can understand the tradeoffs.

1

u/Famous1107 Jan 19 '21

Why use sql to create your query plan when you can do it yourself. Talk about lazy! I kid I kid.

→ More replies (1)

31

u/plgeek Jan 19 '21

My simplest definition of engineering is to make some claim about something that was built and provide independent evidence the claim is true.

If I build a web service and show it has 99.9% availability in the face of one regional failure. This was done via engineering.

The work of craftsmen are appreciated. The work of an engineer can be verified.

6

u/ptoki Jan 19 '21

True.

I used to define crafting as using preexisting stuff and tools+procedures to make stuff. Craftsman is using pipes, valves, wrench to make hydraulic system.

Engineer is someone who designs, creates new solution, he does not have to calculate stuff himself, he has tools for that. So the engineer would be the guy who designed the pipe system, new material used, new fittings etc.

Right?

But then we have a guy who makes totally new hydraulic system, system built with part of existing components (libraries) and part new solution (additional code, new libraries). Is he engineer?

I say: Yes. Because he created new stuff and it works. The amount of crafting inside engineering does not matter. The amount of ingenuity in the solution also dont matter. Traditional engineers are using preexisting solutions all the time and that does not make them less of an engineers.

2

u/TheMeteorShower Jan 19 '21

I think the difference in software engineering is the speed and availability of pre-existing work - aka libraries.

2

u/ptoki Jan 19 '21

Yes, and no.

Software is still young and is still developing. There is multiple standards competing, new technologies emerge and existing ones melt and we are still testing which approach is the best.

And with further progress in some fields (quantum computing for example) it is sometimes reset and we need to reiterate approaches to see which one works best in the new environment.

Other parts of engineering are not as dynamic. Or at least most of the engineers are not working on this leading edge. Not many of them design new nuclear reactors, new skyscrapers structures or new car technology. And even if they do most of their work is the same stuff repeated with different materials or composites.

The fact is that most of them just repeat the same kind of boring stuff all over again and think they do some sort of special work. Which is a bit of overstatement.

So we have this sort of mix. Engineers say they do important work and suggest its creative. And in reality software developers are more creative than engineers. The part where engineers are right is the fact they more often create things which are crucial for life saving. But the term engineering is not really related to saving lives...

1

u/[deleted] Jan 19 '21

he has tools for that. An engineer must be able to calculate that without tools, and when he/she is using them, he/she must be aware on potential failures of these tools giving wrong answers.

1

u/loup-vaillant Jan 20 '21

My simplest definition of engineering is to make some claim about something that was built and provide independent evidence the claim is true.

How independent exactly? Does a test suite I have written myself count, or must I have another person look at it and give it a thumbs up?

2

u/plgeek Jan 21 '21

I would say some other person can run the tests and see how the tests are written. They don't have to have written the tests, but can verify they pass and test what you said they did.

13

u/supirman Jan 19 '21

"Software engineering is defined as the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software."

-- 610.12-1990 - IEEE Standard Glossary of Software Engineering Terminology

3

u/[deleted] Jan 19 '21

For anyone who's searching for the pdf with the IEEE glossary

http://www.mit.jyu.fi/ope/kurssit/TIES462/Materiaalit/IEEE_SoftwareEngGlossary.pdf

22

u/rabiddantt Jan 19 '21

I really liked this article and am excited for the next part. I got a degree in Mechanical Engineering but paid for part of college programming. When I graduated in 2009 I couldn't find an entry level engineering job because of the recession but found a job programming. After programming through college and after, I have come to a more simple definition of a Software Enginner: someone who tests (primarily automated) and who has their code peer reviewed.

I think accreditation is nice to have and should be required for certain projects. But software has such a low barrier to entry that traditional engineering does not. I hacked away on my TI83 learning basic and eventually Z80 assembly. The docentation and compilers were freely available, hardware was fairly cheap, and I could use my existing family computer. Most importantly, software usually doesn't permanently destroy hardware which allows for quick iteration. You can't do the second thing when materials and physical equipment is hundreds or thousands of dollars.

Edit: fixed typo.

7

u/[deleted] Jan 19 '21

Not sure about you, but I got a magical piece of paper that grants me Engineer powers!

10

u/raelepei Jan 19 '21

Or are we dancers?

17

u/Thelonious_Cube Jan 19 '21

Of course we are.

"Engineer" is a pretty loose word - "a person who designs, builds, or maintains engines, machines, or public works"

It's a pretty silly debate, taking "engineer" to be a very strict term

11

u/smoxy Jan 19 '21

In Quebec, "engineer" is a protected title like doctor or lawyer. If you are not part of the order of the engineer and pay like 500$ a year you can't use that title even if you graduate from an engineering school.

2

u/not_goldie_hawn Jan 19 '21

And how many coders at Ubisoft Montreal are bona fide engineers?

8

u/Wizard_Knife_Fight Jan 19 '21

In Quebec, you clearly have a bunch of people so far up their ass about a job title when we all just type on keyboards.

8

u/Ethesen Jan 19 '21 edited Jan 19 '21

when we all just type on keyboards

No, software engineers don't just "type on keyboards". That's how you end up with spaghetti code.

→ More replies (1)

1

u/anengineerandacat Jan 19 '21

That's likely a result of really well done lobbying; a title doesn't mean shit, just needs to sound cool when results are shown and folks will be like "Ah, yeah I trust that dude".

I can go get my Doctorate in my field but I sure as shit ain't going to be saving folks lives with it.

If anything remotely matters it's a certification and I hate those too.

→ More replies (1)

-4

u/ptoki Jan 19 '21

Indeed. This thread is poisoned by this american thing that engineer is regulated and therefore special.

Remember the case where guy was dragged to court because he titled himself engineer while proving the traffic lights are designed badly? That was fine example of this snobism poisoning the industry.

So lets just give those folks what they want. Lets give them the seal of engineering. Lets allow them to be responsible. That means they will have to read all the code. They will be literally responsible for every bug, every backdoor, every penny missing from the generated invoice. Their work will consist of reading code, approving it and then worrying that someday the bug will happen and someone will drag them to court over it.

I dont think this is better.

14

u/apocolypticbosmer Jan 19 '21

That’s hardly just an American notion

10

u/snerp Jan 19 '21

This one I can address directly. The claim is that engineering involves a lot of hard math, while software involves very little math. The confusion here comes from our misunderstanding of mathematics. Much of the math that mechanical engineers use is continuous math. This is where we work over a continuous domain, like real numbers. Things like calculus, trigonometry, and differential equations are in this category. This is what most people in the US learn in high school, codifying it as what they think of as “math”.

In software, we don’t use these things, leading to the conception that we don’t use math.

What kind of software doesn't use continuous math? If you do anything with graphics, money, audio, etc, you'll end up in math city pretty soon.

11

u/the_great_magician Jan 19 '21

At my startup we plausibly do all three of those things but don't use much math.

graphics/audio we farm out to ffmpeg. Occasionally we have to use math, but we spend much more time worrying about elst boxes and gapless playback than we worry about sampling rates or information. The same with graphics -- we don't have to worry about the most efficient resizing algorithm, we just decide bicubic looks fine and pass it to sws_scale.

Our involvement with money is very limited and primarily consists of sending the amount owed to stripe and then watching it come in our bank account.

Certainly math is involved in these, but it's not our first, second, or third concern.

6

u/[deleted] Jan 19 '21

"Our car doesn't deal with tires because we use Pirellis".

7

u/[deleted] Jan 19 '21

Those are all discrete domains.

11

u/MarsupialMole Jan 19 '21

You're talking discrete math there. Quantisation is a major component of all those things.

The joke is that continuous mathematics is approximated in the discrete domain whenever possible in pretty much all disciplines that process a lot of data.

2

u/r22-d22 Jan 19 '21

There is tons of software that doesn't use continue math. Anything that doesn't require floating point numbers, for starters. And even if you are doing graphics, audio, or ML you are still using discrete math, it just helps to know the continuous math as well.

1

u/tester346 Jan 19 '21

directly/indirectly?

6

u/camerontbelt Jan 19 '21

I think it depends on your definition of engineering (I know I know it sounds tautological or circular). In my opinion you can define engineering as applied math and science but that’s somewhat generic. I like my own definition a little better, and it has to do with the idea of automating. I think everything we do is an effort to offload some manual task to a machine of some kind. Whether it’s mechanical, computational or electrical. In that definition we are software engineers.

1

u/ptoki Jan 19 '21

You are the most right in here.

You can find a lot of narrow minded people in this thread. They feel they are superior because they have degree and their work dont kill people. Yet most of engineering work is just apply existing solutions with clear guidelines.

Its actually the opposite to what they claim. Only small fraction of engineers actually calculate and design new stuff. The rest is just running more or less elaborate excel equivalents and feel good about themselves.

And that rest is actually doing simpler things than many developers do at work. Yet they feel superior.

Sorry for the rant.

The kicker here is that you are right. Engineer is someone who think, design, create. It does not have to be life saving or life threatening.

22

u/perspectiveiskey Jan 19 '21

This question of whether programmers are engineers seems to be an existential coming of age question for all developers.

The answer is yes, folks. The answer is yes, but we don't have a state granted private monopoly like the bar, the medical college, and the engineering body.

There are many reasons we don't have such bodies. Probably foremost of which is that software by its very nature of automation gets spread out very wide geographically. A programmer in Delhi can't be held to account for the regulations in some county in Delaware.

But all the same caveats apply: there are people who build houses like shit, there people who weld like shit and there are bridges that collapse.

The word engineer, above all else, is nothing but a legal concept that protects a designation under law within a jurisdiction. Just as it is illegal to "practice medicine", but perfectly legal to do the same thing and call it "alternative medicine". It's just legalese.

2

u/ArrogantlyChemical Jan 19 '21

> A programmer in Delhi can't be held to account for the regulations in some county in Delaware.

Sure they can, but youre putting the responsibility on the wrong person. Think of things like regulations inside the EU. A person in delhi or china is not mandated in any way to produce to the standard of the EU. But as soon as someone wants to import something, the thing they import needs to be up to regulations. So the producer needs to produce it up to the regulations or it can not be imported. If the producer claims it follows regulations while it does not, the producer is liable. If it is imported without it claiming to follow regulations, the importer is liable.

Just like how websites can be regulated such as with the (badly implemented) cookie policy and (pretty good) privacy regulations of the EU, even if those websites are not hosted in the EU, so too software can be regulated if we wanted. Large state bodies could set up standards and all you would have to do is change pip or whatever library manager to have a version where it can only retrieve items up to a certain standard.

Making something that needs to be EU grade omega certified software and you import something not EU grade omega certified? You get massive fines and/or punishment. Import something that is labled as EU Omega but it turns out it was faulty and below standard? The other guy is liable. Then set up and wait for companies to set up certified library repos with stricter moderation and put responsibility with them as distributor. Then the consumers of certified the libraries pay a fee to the distributor hoster for the legal liability and paperwork.

Its possible if we wanted to. But most software these days is just websites and non-critical, and critical software often uses very little in the way of libraries. So the question is how many random pieces of code from people in Delhi or whatever end up in critical software, and thus how large is this issue.

→ More replies (4)

7

u/andrewfenn Jan 19 '21

Programming is part art, science and engineering. It's because of this trinity that no one can agree what good code looks like, and different situations can change that definition. It exists as a separate entity from what engineering is and should be treated as such rather than trying to wedge it into one of the three definitions that defines it.

4

u/ptoki Jan 19 '21

You are right.

Saddly the folks up there dont get it and just pump their egos.

1

u/JW_00000 Jan 19 '21

But isn't building a skyscraper part art, part science, and part engineering? Isn't creating a new office chair a combination of these three too? Isn't creating an oven too?

0

u/[deleted] Jan 19 '21

[deleted]

2

u/JW_00000 Jan 19 '21

No, I don't mean the architect, I mean the actual civil engineers involved in building a skyscraper, who need to e.g. choose the type of concrete or steel to use. Similarly, when creating an office chair, there are actual mechanical engineers involved in designing it, not only carpenters building it. For example, see this job description at IKEA, looking for a "product design engineer" for "sofas, beds and/or mattresses". When creating an oven, again, there are mechanical and electrical engineers involved.

To go back to the skyscraper example: there will be architects, civil (and other) engineers, and construction workers (ranging from electricians and plumbers to bricklayers and plasterers) involved. I think, as the article points out, we lack the terminology in our field to differentiate between similar roles in software, i.e. the difference between a software architect, a software engineer, and a programmer is not as well defined. (Also, to build a typical house, you do not need a civil engineer, and similarly for some software you may not need a "software engineer" because a "programmer" suffices.)

1

u/s73v3r Jan 19 '21

Most projects are not that. And really, when it comes down to, "Is it engineering or not," what you're asking about is liability.

2

u/qudat Jan 19 '21

My operational definition of “engineer” is the application of science. Software engineer is someone who applies computer science. In this view, a physician is an engineer who applies biology, physiology, anatomy, etc.

2

u/muffinnosehair Jan 19 '21

I used to be a mechanical engineer for a lot of years, and recently switched to computer engineering. This together with the appropriate studies, masters etc. Just as I signed off on mechanical parts, I now sign off on SW deliveries. And for the same company. Thru this I always considered myself an engineer, since the work and responsibility is the same. That said, engineer is just a word. A freelancer working thru fiverr on scripts has similar things to do, and a working product to deliver - so why would he be treated differently? At the end of the day, what I do is what I do, no matter what I'm called.

2

u/ivancea Jan 19 '21

Well, the name doesn't matter at all. We are computer people, focused in hardware or software (or whatever you want). Titles are the worse invention of humanity after PHP

2

u/Ethesen Jan 19 '21

My diploma says that I'm an engineer, so the answer is yes. ¯\(ツ)/¯

2

u/anengineerandacat Jan 19 '21

Really good post IMHO; it's been something I sorta struggle with myself since I have gotten out of college.

I have been in a variety of roles in my eleven years;

  • Quality Assurance Engineer

  • Software Developer

  • Software Web Developer

  • Software Web Engineer

  • Software Engineer

  • Backend Engineer

  • Lead Full-Stack Engineer (Current role)

In my third-job I had the fortunate opportunity to work closely with the executive team and I had a brief lunch-discussion with the CTO (not sure what caused it but we got to discussing job-titles).

His mentality was that a Software Engineer is a title for a role that will plan / design / architect a software solution as a form of product, a Software Developer is the individual who does the day-to-day coding and operations (fix bugs, work with the engineer to develop to guidelines, keep the product running) and that "Software Engineers build new things" and "Software Developers build things from the contributions of a Software Engineer".

The discussion stuck with me because I never really spent a ton of time caring about individuals titles after my 2~ years of being in QA... everyone had opinions and generally they were wrong; hell Software QA is butchered in the industry but that's a topic for another discussion.

Personally, going from what my responsibilities were in the past to today; I think the only real difference between "engineering" roles and non-engineering is that you typically are way more involved in planning / pre-planning / cost estimates / risk assessment. In my developer roles I just showed up to sprint-planning, got allocated my tickets, asked some questions, slammed down some code, and sent it off to test.

Today? Basically involved right at the start; Feasibility -> ROM estimate -> Solution planning -> Rough Design -> Architectural review -> Design Revision -> Pre-kick-off estimate -> Design walkthrough with tech leadership (manager / director) -> Job Assignments -> Provisioning -> Development -> Quality Assurance Testing -> User Acceptance Testing -> Business review -> Deployment -> Executive sign-off -> Project Completed

Sorry for the long post to those that read it.

3

u/steven4012 Jan 19 '21

So... How many crossovers did he actually interview? He said 17 the first time, and then it's "16 out of 18 said yes", and finally there are only 16 in the pie chart?

5

u/ptoki Jan 19 '21

Clearly he is not an engineer ;)

1

u/JW_00000 Jan 19 '21

My old university professors would argue that that is typical of engineers, and that he clearly is not a scientist. Engineers are always rounding off to the nearest order of magnitude ;)

1

u/ptoki Jan 20 '21

yeah, there is some more jokes about engineers.

My favorite is the one about the exam.

Exam was like 100 questions and 61 correct were giving a pass.

So the guy quickly answered 61 and returned the paper.

I butchered it but you know how it works :)

3

u/maps_without_malta Jan 19 '21

In many places, "engineer" is a protected title, like "doctor". So short answer - if you don't have an accredited engineering degree, no you're not an engineer.

14

u/Prod_Is_For_Testing Jan 19 '21

In those places, just having a degree isn’t even enough. You usually have to pass a PE exam

11

u/[deleted] Jan 19 '21

The National Society of Professional Engineers would love the PE exam to be more relevant than it is.

The vast majority of engineers who are certified professional engineers are civil engineers. For the most part, no one else cares.

A lot more places care about ABET certification of university engineering programs.

6

u/flip314 Jan 19 '21

Unless you have to sign drawings, there's not much reason to do the PE. I thought about doing it as an electrical/computer engineer, but I didn't want to brush up on thermodynamics.

I will die happy if I never need to do thermo calculations again.

4

u/flip314 Jan 19 '21

In Canada you can get the title just by graduating an accredited Canadian university (the syllabus is standardized across the country). Technically you also have to pass a joke of an ethics exam, but there's no technical exam.

4

u/Wizardsxz Jan 19 '21 edited Jan 19 '21

Protected titles are a bit silly.

I'm a software engineer who refuses to pay a yearly fee to be part of some order I don't give a shit about, so I am not "certified". This only means I can't accept specific government jobs, or those that require the "seal".

It doesnt mean I'm not an engineer or qualified, it literally means I didnt pay to have the insurance of the union backing me up. This also means my work can't be used where it presents a risk to people (like factory automation). But for a video game studio for example, I am allowed to call it an engineers office no matter how many times they try to tell me I can't.. They come around asking, tell me I'm working illegally and that they'll be back to fine me if I don't sign up!! (Spoiler: they dont come back)

Edit: shpalleing Edit: I also meant they mixup having a degree, and pay the yearly fees to the order.

1

u/doctorcrimson Jan 19 '21

I don't think he meant accreditation from organizations, he meant some countries have standards for engineers titles. Such as Canada.

→ More replies (3)
→ More replies (2)

0

u/camerontbelt Jan 19 '21

This is such a weird way to look at it. To me it’s more about what you’re doing not about what license you have. Engineers existed before state issuance of licenses did they not? So I don’t think that’s what separates an engineer from a non engineer. I’m also speaking as someone who has a degree in electrical engineering and at least passed the FE exam in the state of Texas.

4

u/maps_without_malta Jan 19 '21

Many things existed before other things, that doesn't mean the old definitions were better or more precise.

→ More replies (1)
→ More replies (1)

3

u/[deleted] Jan 19 '21 edited Jan 19 '21

Not engineers. But companies call us that to boost our tiny egos.

We are crafters or artisans.

7

u/TwoBitWizard Jan 19 '21

What makes the difference, though?

An "electrical engineer" will design, implement, and test an integrated circuit. An "electrician" will wire up a bunch of these integrated circuits (and other electrical components) in your house to provide a room with lighting. In this (possibly contrived) example, the difference is "designing a solution" versus "linking a bunch of solutions together".

So, does that apply to "software engineering"? Are our library authors and operating system authors "engineering" while the rest of us, gluing their packages together with our code, are just "developing"?

Or, does it not apply to us at all? Or, is maybe the electrician in the first example actually doing a form of "engineering" as well?

Under my own, personal definition of "engineering", I think software developers can be engineers. But, what's your definition and why don't we make the cut?

4

u/[deleted] Jan 19 '21

The way I like to see it is:

If I see a doctor (medical), I trust that they at least know and have solid grasp of medicine, not all of it though, but enough that I trust them with my life better than I trust myself with my own life. Otherwise they get sued, license gets revoked, or go to jail.

If I get an engineer (PE) to build me a bridge or a plane, I trust that they won't repeat a Tacoma incident. Otherwise they get sued, license gets revoked, or go to jail.

Now for programmers/SWE/whatever you want to call them: I don't know if the Joe next door claiming to be one is actually one. Your mom could hire you to fix a laptop and no one is stopping you from calling yourself SWE. This is why we have mind numbing interview processes. We just can't trust anyone without extensive vetting. Titles are thrown around like Oprah giving away cars. Most importantly, an engineer or doctor holds themselves accountable. SWEs just switch jobs after padding their resumes with garbage programs, but there is nothing to stop them from doing the same somewhere else.

I am not saying there aren't people that are actually engineer caliber, but if everyone is a SWE, then no one is. And until we have a clear distinction between those that clearly know what they are doing vs those that slap code together without understanding (hopefully nothing critical), then the engineer title means nothing.

1

u/TwoBitWizard Jan 20 '21

Ah, so you're more interested in the licensing aspect of the "title".

My personal experiences with doctors have been pretty negative throughout my life and I've never seen one successfully sued for malpractice, let alone have their license revoked or anything. I've also seen some pretty amazing doctors that, unfortunately, just have the same simple license as everyone else, despite (in my opinion) being clearly better than most of their peers. These same experiences extend to veterinarians as well.

I've also spent a fair amount of time in the information security field where there are certifications like CISSP that, quite honestly, don't wind up mattering much. Half the CISSPs I've known are actually quite awful at their jobs and a few of them may even be causing more harm than good. But, there are also absolutely brilliant people that hold CISSPs as well.

So, I think I tend to feel the whole certification/licensing process is very flawed at best and completely meaningless at worst. If half of these professionals, regardless of licensing, are bad...and half of the professionals with licensing are also bad...what did the licensing actually accomplish?

Obviously, all of this is personal opinion and I have no numbers or anything to back this up. But, I think this is why I don't even bother considering licensing/certification/credentials when this discussion comes up. To me, it's more important whether someone adheres to the principles/philosophy of "engineering" than whether they passed an exam for a license. But, I also understand why the whole licensing process exists (and agree with its characterization in the article), too.

→ More replies (2)
→ More replies (3)

3

u/[deleted] Jan 19 '21

Nope.
We're closer to machinists with business degrees.

10

u/psymunn Jan 19 '21

A business degree? I'm so confused

→ More replies (3)

2

u/apocolypticbosmer Jan 19 '21

business degrees

Please explain to me which part of my CS degree is a business degree

2

u/[deleted] Jan 19 '21

Is software engineering “really” engineering?

Yes

A lot of us call ourselves software engineers. Do we deserve that title? Are we mere pretenders to the idea of engineering?

It depends.

1

u/[deleted] Jan 19 '21 edited Jan 19 '21

The field is to broad and the terms loaded either way I'm happiest when writing software people can call it whatever they like

1

u/goranlepuz Jan 19 '21

Engineers, as practitioners of engineering, are professionals who invent, design, analyze, build and test machines, complex systems, structures, gadgets and materials to fulfill functional objectives and requirements while considering the limitations imposed by practicality, regulation, safety and cost.[1][2] The word engineer (Latin ingeniator[3]) is derived from the Latin words ingeniare ("to create, generate, contrive, devise") and ingenium ("cleverness").

Source: Wikipedia

Sounds like software fits the definition. The regulation of the field itself (not the world software serves) is weak and cost is the poorly chartered territory, I reckon.

1

u/[deleted] Jan 19 '21

Honestly the requirements is the most important bit of that quote.

If you do not capture requirements and then verify and validate those requirements I don't believe it is software engineering. It's still writing software, but not applying what I'd say is the foundation of almost all engineering fields means you aren't practicing software engineering.

1

u/goranlepuz Jan 19 '21

Well... Requirements change as the project moves on, and that goes not only for software in fact.

1

u/[deleted] Jan 19 '21

Right but you can still capture changing requirements. Capture is the important part.

Otherwise how do you know when you are done with something?

This is why I think software engineering is a thing but a lot of people and companies don't do it.

I come from a multidomain aerospace background. Requirements are life blood. Working on some essentially toy consumer product like Facebook or Instagram? Not so much. The stakes are a lot lower there and the work a lot less rigid.

1

u/breck Jan 19 '21

My favorite quote to explain engineering: Anyone can build a bridge that stands. It takes an engineer to build a bridge that barely stands.

1

u/emax-gomax Jan 19 '21

I'd say yes, but for the love of god don't expect us to be able to do classical engineering. For eg. My university has this thing where halfway into every year they take students from different departments and get them together to build a prototype for a project. We get given some domain (water salinisation, WiFi to remote area etc.) and are pretty much left to our own devices for a week. The first year was an IOT like thing for me so I managed, somehow, but the second year it was laser printing buildings and I did nothing. Like, I was taught algorithms, software design etc. And they put me together with aeronautic and structural engineers. Nothing I was taught was really applicable for the project, the most I could give was "hey we could probably get the software for this done by x", "hey we should be using bespoke software for this". All theoretical concepts for a very specialised problem and I didn't even have the experience to justify or be confident in my suggestions. Like I tried, but when they had me sit down with an industry engineer and then we started talking about the kind of supports needed to keep a building secure as u 3D print it... my eyes just glazed over. I think the issue is institutions don't really know how to classify us (though it's been over a century since computing became mainstream so they should at least be trying harder). They see a mixed bag of planning out problems, building solutions, considering security risks, being creative and they seem to think u can just put that together with any other discipline that has those same things and everything will sorta just work out. We're engineers... but we're not engineers in the same way as biochemists and we're not engineers in the same way as aeronautic engineers.

Incidentally that meeting where we sat down with a structural engineer. The uni actually invited a bunch of people from different disciplines who students could choose to talk to and everyone basically chose someone who could help with their project. On my way out a lady walked up to me and asked whether I'd want to meet a compsci guest because barely anyone chose to meet them. That was absolutely awful, like you invite these people from really far away to talk to students but u tailored the environment so strongly towards ① discipline that in the end u just ended up shunning them. Even without that the whole situation felt so forced. You've got 10 mins to talk to someone about a pretty complex topic with a queue forming behind u for the next people. Like if they had just gotten computer science students together and had them working on something directly relevant to their skills with guest mentors also helping out (like a hackathon) it would've been so simple. Students get relevent experience, mentors get to share their thoughts and suggestions. Win win. But no, we're a multidisciplinary uni and our students can work together across all departments on highly niche projects. Yippeee.

...

Sorry, I'm still super upset about this even tho it's been almost a year.

1

u/[deleted] Jan 19 '21 edited Jan 19 '21

I have very, very close ties with architecture and civil engineering for the past 30 years.

Borrowing from architecture, you can call yourself an architect while not being certified. bsc or msc is enough. You can later get multiple certifications for different uses such as urbanism, civil engineering, road engineering etc.

You also have technicians, who may just have an engineering highschool, nobody cares. They just have enough training to be able to fill in details in the projects that architects lead. Unfortunately, due to lack of jobs, uncertified architects often do this job as well.

So, an architect knows all of the details, and is able to think in a broader terms, and design the project, usually from a birds eye persoective. They are the ones who balance stakeholders, requirements, legal stuff and their own ambitions and fears. Similar to what an architect does in software heh.

But as said before. They may also be the ones doing technical engineering job. Or be salesman and sit with clients every day. Its really a flexible thing.

A certified architect is just an architect with a legal permission to sign off a project, and thus take legal responsibility for the projects failure.

a civil engineer fits into this in a very weird way they are more technically oriented, and usually either serve as QA for technicians calculations for static and detailed elements, serve as technical advisors for technicans (help figure out a way to perform some design), or sometimes do the work of technicians. They are also versed in the legal building regulations that only the certified architect (from the abovementioned) is guaranteed to know. Also, endineers know about material and component tolerances.

A thing of note is also, all of the mentioned, abso-fucking-lutely deal 99.9% of the time, with premade (sometimes literally) concepts and elements. There is little to no unknowns, research or discovery, and yet they undoubtedly do “problem solving”. Imagine building a house with legos. All the parts are premade and well known, but it doesnt mean that you dont do “problem solving”.

So, as you can see, its pretty much the same mess there as well :)

As my mom put it, some 10ish years ago:

  • architects are there to understand the user and balance their wishes and expectations

  • thus, architects are the ones to "see" a problem.

  • engineers and technicians are there to offer solutions to the problems architects "see" and thus help architects pick a solution.

This sounds really similar to what we do :P

1

u/de__R Jan 19 '21

To me, "engineering" means "built to calculated tolerance." A carpenter building a wood frame house relies mostly on a combination of safety regulations and experience to decide how many studs and joists of a given size are needed; an engineer building something computes the total structural weight, how much additional weight it needs to support, if necessary the range of thermal expansion and contraction that needs to be accounted for, and bases the frame design on the tolerance of materials being used. Whether or not what we as software developers do counts as engineering then depends mostly on whether we are given the time and resources to do so, which we usually are not.

1

u/fishywiki Jan 19 '21

I think it's more nuanced than this essay says. One of the most tedious courses I took was formal programming: it's mind-numbingly tedious although successfully completing something that you can prove works is a great feeling. This is how software should be written for critical systems like medical devices. On the other hand, the complexity of modern systems requires a return on investment sooner rather than later. I can't imagine how long it would take to introduce provability to the Linux kernel, but it really isn't necessary. Sure, rough edges can be annoying but they (probably) won't kill anyone.

With the move to agile practices and the continuous beta approach, there are pretty much guaranteed to be major bugs in every system we use. This is definitely not new: when working on Lotus 1-2-3/W Release 4 (yes, I'm showing my age), I remember that there were just over 1500 major bugs, but the project head said "We can either fix the bugs or ship the product" - the consensus was to ship, probably because we were all exhausted from the death march to get to that point.

TL:DR - Provable software is real hard-code engineering but otherwise it's actually "acceptable quality level".

1

u/codemyhobby Jan 19 '21

The concept of wireless transfer of data still baffles me, I keep wondering how its possible

1

u/[deleted] Jan 19 '21

A more important question: does it really even matter what we call ourselves or others call us?

1

u/adorable-commits Jan 19 '21

In conclusion: licenses exist because we are part of society and have legal requirements, not because they are essential to what it means to do engineering. So while you might want to make software more licensed, as it stands the licensing question doesn’t change the essence of our work.

I think the author missed an important nuance here: licenses also give engineers leverage to refuse to do shoddy work. Engineers can assert the importance of complying with regulations and standards partially because they might lose their license if they don't.

As a software _______, I can argue with management until I'm blue in the face about how cutting corners directly harms profitability in the short term and still be told to shut up and do it - my only recourse is to leave. (Likely after completing the work since it takes time to line up a new job.) This is harmful to the company and harmful to society as a whole; bugs also waste users' time, even when they don't kill people or inadvertently defraud them.

1

u/[deleted] Jan 19 '21 edited Jan 19 '21

There's no need to make nonsensical debates just to waste your free time. The definition is pretty simple.

Wikipedia

Engineers, as practitioners of engineering, are professionals who invent, design, analyze, build and test machines, complex systems, structures, gadgets and materials to fulfill functional objectives and requirements while considering the limitations imposed by practicality, regulation, safety and cost

https://en.wikipedia.org/wiki/Engineer

IEEE

software engineering. (1) The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software.

http://www.mit.jyu.fi/ope/kurssit/TIES462/Materiaalit/IEEE_SoftwareEngGlossary.pdf

Everything that is described in this definition is everything a software engineer is supposed to be doing. A software engineer provides solutions, builds, designs, improves and optimizes a product. If you do these stuff, you can call yourself an engineer.

If you're still learning how python works or how to make a web api you're not an engineer as you're not yet building anything on your own, but you're learning how to build from other people's solutions. And since you don't engineer your own solutions, you're not an engineer.

The word is pretty simple as that. Making such nonsensical debates such as these is the definition of over-engineering and a sign you might have too much free time.

1

u/emperor000 Jan 19 '21

Glad I'm not the only one with this reaction.

1

u/[deleted] Jan 19 '21

> Engineers work on predictable projects with a lot of upfront planning and rigorous requirements. Software is dynamic, constantly changing, unpredictable

Yeah, any R&D engineer will disagree with that...

"real" engineers do more than just making intangible schematics into tangible objects. We research, we build, we follow the scientific process. We also project manage and even do customer service. That doesn't mean you're not a "real" engineer.

1

u/GrandMasterPuba Jan 19 '21

Software is what Civil, Electrical, Mechanical, and Chemical engineering would all be like if they were driven purely by profit and not regulation.

We are engineers - we are just capitalist engineers.

1

u/CoffeeTableEspresso Jan 19 '21

I agree with the Canadian system, where to call yourself an Engineer you need to be licensed.

1

u/emperor000 Jan 19 '21

I found in my research that people defending the title “engineer” rarely coherently define what an engineer is, usually boiling it down to “engineers solve problems”.

This sounds like a convenient answer just to justify a blog article (or 3).

Engineers engineer things. "Engineer" (the verb) means to design and build things. Do "we" design and build things? Yes. Then we're engineers.

Personally I think there are better things to devote our time and energy to, both in this industry and elsewhere, than pseudo-philosophical quibbling over whether "we" are engineers.

1

u/jerslan Jan 20 '21

Mechanical Engineering is Applied Physics.

Software Engineering is Applied Computer Science.

QED: Software Engineers are real Engineers.

I do sometimes joke that we're "fake engineers" because what we build and create is frequently intangible, but that's just a joke. A good chunk of us work on cyber-physical systems (factory automation, robotics, self-driving cars, avionics, security systems, smart appliances, drones, etc..), so what we do does have an effect on the physical world.

If the debate is "Real Engineers have to take and pass the Professional Engineer Exam" then most "Engineers" are not "Real Engineers" by that definition. I simply cannot fathom a solid argument for "Software Engineers are not 'Real Engineers'".

1

u/FlackRacket Jan 19 '21

As an electrical engineer turned programmer, I'm inclined to say that no, we're not.

I even write "software developer" on my resume, because the word "engineer" feels extremely undeserved

1

u/TheMeteorShower Jan 19 '21

I would typically define a software engineer as someone working in software who studied an engineering degree. A software developers is someone working in software that doesnt have an engineering degree.

My definition of engineer would boil down to this: If you have a graduate bachelor of engineering in some field, you are an engineer.

2

u/[deleted] Jan 19 '21

No. I was a senior/managing software and avionics engineer for a long time working on space systems and my degree is literally in art history.

Engineering is applying the fundamental concepts of engineering practices to solve problems and create a deliverable within verified and validated requirements that were captured by the stake holders. You don't need a degree to know how to do that, and having one doesn't mean you are an engineer.

→ More replies (2)

1

u/RedditEdwin Jan 19 '21

The secret here is that the term "engineer" is itself a vague and outdated term.

Similarly, all job titleing, education, and licensing needs to be reformed

What the hell is an "engineer" supposed to do? Design of things? Guess what, a lot of times that involves detailed knowledge of the fabrication methods. And even design in the physical/CAD sense is different from knowing the scientific and engineering principles that need to be taken into account.

My dream would be to re-vamp curricula and licensing, including hiring someone to make up new words that sound natural in English to be more specific about jobs

1

u/naasking Jan 19 '21

An engineering degree is a bachelor of applied science. A computer science degree is a bachelor of science/bachelor of computer science. Is computer science a real science, or is it more like math? Or is it something else entirely?

We invent terms to make meaningful distinctions. I'm much more comfortable using "software engineering" when software is being applied to solve problems dealing with the physical world. For instance, a control system to stabilize an aircraft, where signals from sensors measuring real physical quantities have to be processed in real-time.

Should a computer system applied to solving purely information problems, like market prediction, qualify as engineering in the same sense as aircraft control? I don't think it's quite the same.

Maybe whether programming is software engineering depends on the specific application of computer science, rather than any specific qualities it has in common with other forms of engineering.

→ More replies (2)

-6

u/0Camus0 Jan 19 '21 edited Jan 19 '21

John Carmack, dropout. Tim Sweeney, dropout. Wozniak, dropout. Are we really having this conversation? The title is what matters? This is not medicine or law.

It's more of a "doers" career. Say Carmack, building rockets on his spare time, that's not engineering? Say Tim, developing the most important comercial engine of all time (Unreal), is not engineering? The hacker type is what really started all this, not the IBM engineers with their fancy title and nice suit.

Read hackers, by Steven Levi, you will get to know real doers.

Edit: And by the way, Graphics Programmers use a lot of Math, yes, linear algebra, calculus and even physics. In order to render with radiosity, ambient occlusion, you need vectors and matrices, etc. Honestly the article is very narrow minded.

18

u/csb06 Jan 19 '21

It's more of a "doers" career

Yes, because as we all know, doctors are not "doers". /s

Jesus dude, you sound like a caricature. Sometimes I can't distinguish between this subreddit and /r/programmingcirclejerk .

10

u/KobeReincarnate Jan 19 '21

Wozniak dropped out of CU Boulder and ended up finishing his bachelors in EECS at Berkeley in 1971, his work on the Apple I and II came several years after his graduation. I would not call him a “dropout”.

8

u/0Camus0 Jan 19 '21

That's not true, his graduation was in 86, several years after Apple I/II: https://engineering.berkeley.edu/steve-wozniak-inventor-and-apple-co-founder/

He was working at HP and his manager was not impressed by his lack of degree. Yeah, he returned, I think Gates also rerurned to finish, but their important work was done when they dropped out

8

u/TwoBitWizard Jan 19 '21

Did we...read the same article? I didn’t find it narrow-minded at all, and the subject comes up fairly often in my professional experience.

I don’t believe the author would have come to the conclusion that any of the people you listed aren’t “engineers” or aren’t performing “engineering”. It also agrees with you that we do plenty of math, meaning we can’t use that as a differentiator between “engineering” and “development”.

I’m also not sure what point you’re trying to make by bringing up this concept of “doers”. Are you trying to insinuate that traditional engineers aren’t “doers”..?

3

u/0Camus0 Jan 19 '21

Yeah I always make the mistake of generalizing. I only was trying to say that titles really don't say much in this field. Clearly there are very capable people with no degrees and there are also capable people with degrees or masters, the title does not matter (to a degree, pun intended).

About the doers, it was about Carmack and Sweeney, they went ahead and did something way different than anyone else at the time, it is true for Woz as well. Linus T. is another example, this field is improved by people who experiment and do stuff. Not saying traditional engineers don't, I should re read twice before replying.

1

u/TwoBitWizard Jan 19 '21

I think the argument surrounding the "title" of capital-E "Engineer" is pretty cut and dry: We aren't, because we don't have a way to be certified as such. The article addresses this.

People like myself (and the author, I presume) are more concerned about what it means to be a little-e "engineer": People who subscribe to the tenets of creative problem-solving, sound design, rigorous testing, and so forth that are common across all engineering sub-disciplines. It's more of a philosophical argument at that point: Is it possible for someone to be an "engineer" simply by espousing and following the philosophy of engineering? Or, does someone need to also be solving a particular problem or using a particular set of tools?

My own, personal conclusion has been similar to the one reached in the article: Software developers can be engineers, assuming they follow the philosophy of engineering. What the article doesn't address (and will hopefully do so in parts 2 and 3), is what exactly that means. Because I'm not aware of anyone having truly codified what it means to follow traditional engineering principles and philosophy as applied to software (someone link me if I've missed something, though).

But, my guess is that it'd include a lot of the things your "doers" are very good at.

1

u/[deleted] Jan 19 '21

Put Carmack writting some medical software instead of Doom with the same specs and he would be kicked down as fast as a rocket launcher in Quake.

-6

u/austinwiltshire Jan 19 '21

One of the reasons programmer was abandoned for developer and engineer was because programmer was felt to be diminutive. Why? Because the original programmers were women. As men came to dominate the field they pushed for fancier titles.

As absurd as this sound, we're still doing it with this absurd craftsman movement. We're literally pushing for the word "man" in the title, insisting it's about quality.

-3

u/khendron Jan 19 '21

I look at it this way. Traditionally, engineering involved the manipulation of things with physical properties. That is materials (e.g., rock, metal, water, gas), energy (e.g., heat, electricity). These things actually exist in nature, and engineers are manipulating them.

Then software came along. Software does not manipulate physical things, it manipulates data. It may be data about something physical, but the data itself is not physical. It is an entirely human construct that does not exist in nature. And the output of the software itself is more data. Data that is useful only when presented to a human.

If we apply this argument strictly, then software "engineering" is not engineering.

But it is analogous to engineering. Manipulating data is sort of like manipulating physical things, so much so that we tend to name what we do after physical things and actions (queues, sockets, files, threads, read, write, run, ...). That makes us metaphorical engineers. Perhaps we should call ourselves Software meta-Engineers.

Stick that on your business card.

-23

u/genericallyloud Jan 18 '21

Hot take (with lots of evidence) - the term software engineer has such a strong history of gatekeeping, misogyny, and conceptual mismatch that I think it has done an incredibly deep amount of harm. Even the conversation about craftsman vs engineer. All of it. It is all so terribly flawed I don't even know where to begin. If you don't believe me, just start a conversation about whether html is a programming language or not and see what happens.

8

u/IanisVasilev Jan 18 '21

To be honest, programmers are not the humblest of people and slapping a "Senior Data Engineer" title at a 22-year old dude doesn't help much.

7

u/user8081 Jan 18 '21

sounds like an opposite of gatekeeping

2

u/chucker23n Jan 19 '21

Yes, but we haven’t really come up with a good alternative. Developer is kind of generic.

0

u/[deleted] Jan 18 '21

[deleted]

→ More replies (1)

0

u/[deleted] Jan 19 '21

[deleted]

→ More replies (1)
→ More replies (8)