[HN Gopher] Are We Really Engineers?
       ___________________________________________________________________
        
       Are We Really Engineers?
        
       Author : phgn
       Score  : 151 points
       Date   : 2022-01-19 19:38 UTC (3 hours ago)
        
 (HTM) web link (www.hillelwayne.com)
 (TXT) w3m dump (www.hillelwayne.com)
        
       | kloch wrote:
       | Titles are cheap.
       | 
       | Better questions:                 Do you have the knowledge and
       | experience to do your job well?       Is your brain naturally
       | wired for the type of work you do?
        
       | jll29 wrote:
       | Yes, _some_ of us are: I take the position that whether software
       | engineering is an appropriate term does depend on the individual
       | and the team and organization they are embedded on. There are
       | individuals, teams and organizations where the term  "software
       | engineering" is fitting, whereas others do not deserve it.
       | 
       | For many years, a lot of software development was pioneering
       | (many projects build the first X of its kind e.g. the first OS,
       | the first word processor, the first spreadsheet, the first Web
       | browser). Bridge construction, in contrast, is older, so not as
       | many bridges are pioneering new techniques. The predictability
       | that is associated with trad. engineering can only take hold once
       | things of a kind have been done often enough so best practices
       | can emerge.
       | 
       | BTW, software engineering isn't the only type of non-traditional
       | engineering: the University of Cambridge has one of Europe's best
       | engineering departments; part of it is a group called Information
       | Engineering, where software systems and models for e.g. speech
       | recognition are researched and developed.
        
       | softwarebeware wrote:
       | I have a Master of Software Engineering degree. Ask me anything.
        
       | MaxBarraclough wrote:
       | > we actually use discrete math, where we deal exclusively with
       | non-continuous numbers. This includes things like graph theory,
       | logic, and combinatorics. You might not realize that you are
       | using these, but you do. They're just so internalized in software
       | that we don't see them as math!
       | 
       | I strongly disagree with this level of charity. That's like
       | saying every cyclist is a physicist.
       | 
       | Someone who takes a short programming course might not even have
       | heard the term _discrete mathematics_ , and almost certainly
       | won't be qualified to develop a proof of correctness for an
       | algorithm, i.e. to actually _do_ discrete mathematics in a
       | serious sense.
       | 
       | > most of computer science is viewable as a branch of mathematics
       | 
       | And yet there's a world of difference between a computer
       | scientists and the average software developer.
       | 
       | > Every time you simplify a conditional or work through the
       | performance complexity of an algorithm, you are using math. Just
       | because there are no integrals doesn't mean we are mathless.
       | 
       | But the absence of doing math surely does make someone (or some
       | line of work) mathless. Most software developers go their whole
       | careers doing no serious math.
       | 
       | > Just because we use a different branch of math doesn't mean
       | we're not doing engineering.
       | 
       | Perhaps the argument can be made that engineering doesn't
       | necessarily have to include math, but this isn't the way to make
       | it.
       | 
       | Again, the average developer does not know any mathematical field
       | in any real depth. This is in sharp contrast to, say,
       | aeronautical engineers.
       | 
       | > Whether or not we are engineers is irrelevant to whether or not
       | we are good engineers.
       | 
       | Disagree. If the term _engineer_ has any meaning, it has to
       | indicate some level of competence. The bar has to be set
       | _somewhere_.
       | 
       | We all agree that changing a car tyre does not qualify someone as
       | any sort of engineer. Is it controversial to suggest that
       | something analogous should hold for software work?
       | 
       | The later _Craft vs Engineering_ section makes far more sense to
       | me.
       | 
       |  _edit:_
       | 
       | > We are separated from engineering by circumstance, not by
       | essence, and we can choose to bridge that gap at will.
       | 
       | I think this is a matter of market forces rather than a
       | community-wide failure.
       | 
       | There's high demand for software developers, including for
       | inexperienced software developers with little formal training.
       | This is, at least in principle, a fine thing (ignoring things
       | like major security issues arising from incompetence). Someone
       | who completes a brief course on programming may be called a
       | _software developer_ , and a professor specialising in critical
       | software systems might be called the same.
       | 
       | It's not like nuclear engineering where there's a formal system
       | of gatekeeping. Provided we don't ignore the spectrum of
       | expertise, I don't see a reason to worry about software work
       | being intellectually disreputable by nature.
        
         | strulovich wrote:
         | >> we actually use discrete math, where we deal exclusively
         | with non-continuous numbers. This includes things like graph
         | theory, logic, and combinatorics. You might not realize that
         | you are using these, but you do. They're just so internalized
         | in software that we don't see them as math!
         | 
         | > I strongly disagree with this level of charity. That's like
         | saying every cyclist is a physicist.
         | 
         | Boolean logic, and while loops are proper examples of discrete
         | math. They're practiced by virtually every developer. An
         | equivalent example from the world of continuous math could be
         | integrating over some range.
        
           | MaxBarraclough wrote:
           | Understanding the control-flow constructs of an imperative
           | programming language is not equivalent to understanding the
           | discrete maths of imperative programming (Hoare logic, Z
           | notation, B-method, etc).
           | 
           | As I said, the average developer is incapable of doing
           | serious discrete mathematics such as formally proving the
           | correctness of an algorithm. For that matter, I doubt the
           | average developer would know what it means for a language to
           | have a formal semantics.
           | 
           | To anticipate the path of a frisbee is to, in mathematical
           | terms, solve a differential equation. Dogs can catch
           | frisbees. We still don't say that dogs understand the
           | mathematics of differential equations. [0][1]
           | 
           | In the software world, formal methods are a niche, as are the
           | associated mathematics. Being costly, they are not used in
           | mainstream software work.
           | 
           | [0] (PDF)
           | http://www.math.pitt.edu/~bard/bardware/classes/0220/dkc.pdf
           | 
           | [1] https://www.wired.com/1993/05/dogs/
        
             | CSSer wrote:
             | First I want to let you know that I didn't take it
             | personally (all in jest), but I've never been so artfully
             | called a dog in my life. Thanks for that :)
        
               | MaxBarraclough wrote:
               | I'm sure cats could catch frisbees too, they just won't.
        
               | CSSer wrote:
               | I'd rather be a dog. So what if I do know some discrete
               | math and I do know what it means for a language to have a
               | formal semantics? Does that make me an above average
               | developer or a software engineer?
        
         | JamesBarney wrote:
         | > And yet there's a world of difference between a computer
         | scientists and the average software developer.
         | 
         | The world would be served by realizing how different these too
         | skill sets are. I had professors who couldn't code their way
         | out of a paper bag, and known successful devs who wouldn't know
         | a proof if it walked up and bit them on the nose.
        
       | exdsq wrote:
       | On a side note I saw Renaissance Technologies still hire
       | "Computer Programmers" which I thought was pretty nostalgic. They
       | also are hiring System Administrators and Network Technicians. No
       | fluff at one of the highest paying firms :)
        
         | dhuk_2018 wrote:
         | Don't get me started with "network engineer"...
        
         | blippage wrote:
         | When people ask me what I do, I say "computer programmer". I
         | can't be doing with all that job title inflation.
         | 
         | Sometimes I just say "programmer", but that seems to confuse
         | people; like I'm the guy who decides at what time The Simpsons
         | goes on telly, or something.
        
       | thenerdhead wrote:
       | Ah yes, the yearly debate on whether software engineers are real
       | engineers and the strawman arguments about other disciplines &
       | qualifications.
       | 
       | The typical gatekeeping mentality of those who have degrees and
       | those who don't. It's not very productive or even worthwhile to
       | peruse.
       | 
       | We all deal with creep scope, people, and problems. Let's stop
       | debating stupid titles or certifications.
        
         | ajkjk wrote:
         | I think you've kinda ignored the fact that this is a really
         | good article with a complex take on the question that's
         | tackling the silliness of the question head-on instead of just
         | shouting opinions into the void.
        
       | saltyfamiliar wrote:
       | I think a lot of people here (and the author of the article) are
       | missing the obvious: an engineer is someone who works with
       | engines. An engine is basically just a machine that does work.
       | The question is really whether software can be considered
       | "machines." They're certainly complex devices made up of
       | different parts working in unison that perform work, so I think
       | yes. If a bridge can be considered a machine then surely so can
       | software. Therefore, programmers are engineers. All this talk
       | about rigid specifications, certifications, math, respect for the
       | title, etc. is very odd to me.
        
       | AussieWog93 wrote:
       | I studied Engineering in university (Electrical was my primary
       | discipline, but in the first year we also spent some time on
       | Civil, Chemical and Materials Eng) before later moving onto
       | Software Engineering as a career.
       | 
       | To me, the biggest difference between SWE and the other "real"
       | Engineering disciplines is about respect for the laws of physics.
       | 
       | Engineers from the classical disciplines have a deep
       | understanding of the immutability of physical laws, and build
       | mental models that accurately represent this as best they can.
       | SWEs, on the other hand, have a tendency to build mental models
       | that are more conceptual or metaphysical, and try and force these
       | onto real-world silicon.
       | 
       | (This is somewhat idealised, of course. There are hack engineers
       | that don't understand first principles in the slightest, just as
       | there are software engineers who have no high-level understanding
       | of the code they just copy-pasted from Stack Overflow).
        
         | goodpoint wrote:
         | > SWEs, on the other hand, have a tendency to build mental
         | models that are more conceptual or metaphysical, and try and
         | force these onto real-world silicon.
         | 
         | Aka if you are a good software engineer you understand well how
         | hardware works and how to push the boundaries.
         | 
         | If you a Stack Overflow copypaste technician you are nowhere
         | near an engineer.
        
         | razzio wrote:
         | That is an interesting distinction. Laws of physics are clearly
         | a constraint to whatever is being engineered. In software
         | development this sometimes plays a role too, more so on
         | embedded and real-time systems. Real-time systems have a time
         | constraints which is a law of physics and embedded software
         | development has to incorporate memory, cpu and sometimes
         | thermal constraints.
         | 
         | I do consider software for these systems closer to engineering,
         | so you might be on to something. That doesn't mean I'd exclude
         | other software development but the notions of (law of physics)
         | constraints and predictable outcome are important factors.
        
       | 1970-01-01 wrote:
       | I've made this question into a poll. Let's vote on it:
       | 
       | https://news.ycombinator.com/item?id=30000645
        
       | andrewla wrote:
       | For the life of me I can't get invested in these semantic games.
       | The author even acknowledges Wittgenstein!
       | 
       | This question only matters as regarding whether it has
       | operational significance, and it's really hard to imagine a
       | situation where the term would have any operational significance.
       | The author says that we can benchmark against other engineering
       | disciplines and look for guidance or inspiration if software is
       | engineering. But we can do that whether or not we use the term!
       | We can compare software to plumbing, and take away what we can,
       | or compare it to law and take away what we can, or compare it to
       | electrical engineering and take away what we can. The term itself
       | is irrelevant here.
        
       | TheDudeMan wrote:
       | We are not. And I'm fine with that. Please stop calling me an
       | engineer.
        
       | commandlinefan wrote:
       | > getting the wires to bend correctly and the plastic onto this
       | shiny piece of anodized aluminium wire. [...] That was the thing
       | that took three months in the project.
       | 
       | Well, there you go, that's how I know we're not really engineers.
       | Because every software developer working reports to (or reports
       | to somebody who reports to) somebody who lives by the maxim "if
       | it takes more than an hour to do, it's not worth doing".
        
       | r_hoods_ghost wrote:
       | I think this is the key point, and it's one I'd agree with
       | "...software engineering is real engineering, but a lot of people
       | who write software aren't doing software engineering."
       | 
       | Personally I would probably draw the circle of software engineers
       | fairly tightly and acknowledge that the rest of us are
       | programmers, or developers, or software architects, or plumbers.
       | 
       | I'd certainly exclude someone like myself from the magic circle
       | of software engineer. My career started accidentally in economic
       | and environmental modeling (ah GAMS, my psycho ex, how I miss
       | you), currently involves creating addons for Blender, went
       | through a brief CRUD app phase back when Facebook was young
       | (shudder) and has involved random trips into data science at
       | various points. I'd also exclude virtually everyone I've ever
       | worked with if I'm honest because most of what I've worked on has
       | either been bespoke and artisanal and so was been software
       | crafting, or it's essentially been plumbing together systems
       | designed by real software engineers and then prettying up the
       | resultant monster. Despite that I've had the title software
       | engineer a few times, as have lots of my colleagues.
       | 
       | I'm not sure that the author is right in saying that it is easier
       | for programmers to transform into software engineers than
       | tradesmen into real engineers. I definitely think that in both
       | cases some seriously heavy training and a lot of unlearning needs
       | to be done.
        
         | nicktorba wrote:
         | The reason it is easier for programmers to transform into
         | software engineers is the same reason we are having this
         | conversation. For the most part, I think this is because
         | software is so cheap and accessible. Anyone can become a
         | software artisan with just a laptop and time. For traditional
         | engineering, you need resources. Here's a quote from the second
         | post: "When it comes to things like making circuit boards, it's
         | pretty common for things not to work the first time. You have
         | to do it again, and you have to send it out to the factory and
         | do it again. You know it costs you another however many PS1000
         | and another two weeks on the schedule. -Mike (electrical)"
         | 
         | If building software was expensive like engineering in the
         | physical world, we wouldn't have to have this argument. It's
         | too bad that physical engineering is so expensive, because we'd
         | probably have a lot more people trying it out.
        
       | jimmyvalmer wrote:
       | _Just because we use [discrete, not continuous] math doesn't mean
       | we're not doing engineering_
       | 
       | Yes, it does. The analog-digital divide makes engineering that
       | much harder than programming where 1's remain 1's and 0's remain
       | 0's regardless of real-world curveballs like temperature and fat
       | people.
        
         | CSSer wrote:
         | Isn't the appeal you're making also refuted by the article?
         | 
         | "not all forms of engineering result in physical processes. In
         | particular, industrial engineering rarely does."[0]
         | 
         | [0]:https://www.hillelwayne.com/post/are-we-really-
         | engineers/#:~....
        
       | bastardoperator wrote:
       | Does it matter if we are or aren't? I think some of us are, I
       | think some folks are artists, some are scientist, some are
       | laborers. It doesn't really matter because at the end of the day,
       | unlike other disciplines all of these people can come together,
       | collaborate, and produce things that captivate people, business,
       | science, etc...
       | 
       | I tend refer to myself as a generalist because I'm not sure one
       | label really fits. I do a bunch of different things, but the
       | reality is I'm just trying to add value for myself, my customer,
       | my teams and my business and I do it mostly with my thoughts and
       | a computer.
        
       | SeanLuke wrote:
       | This guy seems to think that engineers only make things that are
       | dangerous.
       | 
       | Sure, there are engineers that build bridges. But there are also
       | enormous numbers of computer engineers that build custom ASICs
       | for, I dunno, TVs and Furbies. There are electrical engineers
       | that build RF tag antennae for cartons in warehouses. There are
       | chemical engineers who design more tasty marshmallows.
       | 
       | On the other hand, there are also computer scientists who build
       | software for nuclear power plants and fighter jets, which must be
       | perfect or people will die.
       | 
       | This is the problem with traditional engineering as a discipline:
       | they require certification as a gatekeeping mechanism, under the
       | pretense that _some_ engineers do things that require safety
       | protocols. Thus Real Engineers are certified to do Dangerous
       | Work.
       | 
       | To me engineering is simply the application of math and science
       | to design and ultimately build. In this respect, computer
       | scientists are inarguably engineers.
        
         | Gigachad wrote:
         | >To me engineering is simply the application of math and
         | science to design
         | 
         | This still excludes the majority of what software engineers do.
         | Sure, a little bit of it is carefully designed and applies
         | complex math, but the majority isn't really math or science
         | related at all.
        
         | hyperpape wrote:
         | The article literally spends an entire section rejecting the
         | belief that real engineers work only on dangerous things. The
         | title is "Engineering is high-consequence", and discusses how
         | one of the hardest problems an engineering team dealt on one
         | project with was designing the handle for a device.
        
         | writeslowly wrote:
         | Sometimes when I read these the discussions I get the
         | impression that software engineers think "real" engineering is
         | about making life or death decisions all the time, but a lot of
         | the work is so systematized it can turn into enormous amounts
         | of paperwork. Especially as the things you work on become more
         | deadly.
         | 
         | Before I went into web development I worked briefly as a
         | mechanical engineer on nuclear power plants, and I feel like I
         | more critical thinking when I'm pushing code to prod than I
         | ever did reviewing load calculations on coolant pipes (despite
         | how important a functioning cooling system might actually be)
         | 
         | Also want to point out that most aerospace engineers have no
         | certification outside of a college degree, at least in the US.
        
           | bee_rider wrote:
           | People focus on the life-or-death decisions because they are
           | more dramatic, but really any time you are making physical
           | devices you'd probably prefer a boring design. If you are
           | planning to make a billion little computer chips to go in
           | silly toys or whatever, you probably want to minimize the
           | creativity for most of the design.
        
         | chongli wrote:
         | A lot of those other things are (potentially) dangerous too.
         | TVs and furbies with electronics in them could give you an
         | electric shock or start a fire. Bad marshmallows could poison
         | you or give you cancer.
         | 
         | The people writing the software for power plants or jets should
         | be licensed software engineers, not coding bootcamp alumni. The
         | whole point of licensure is to add a degree of accountability
         | to any job which involves danger to the public.
        
           | SeanLuke wrote:
           | > TVs and furbies with electronics in them could give you an
           | electric shock or start a fire
           | 
           | In no universe will a small low-voltage chip cause a fire
           | except in exceptional circumstances. This is a non-dangerous
           | product. But you can only design one if you are a certified
           | engineer.
           | 
           | Most engineering tasks are harmless. They require
           | certification and licensing largely as a gateway mechanism,
           | like being a beautician. No one says that people who design
           | harmless products aren't "electrical engineers" or "computer
           | engineers". Danger certainly isn't the defining feature of
           | engineering -- gateway certification might be, but shouldn't
           | be.
           | 
           | And on the flip side, it is absolutely the case that for
           | designing software which is potentially dangerous should
           | require certification and liability considerations. Do these
           | guys get to be called engineers then? What if all they do
           | with their certification is make video games?
        
           | exdsq wrote:
           | I believe the real core part of being a licensed engineer is
           | you can be personally liable for mistakes in plans you sign
           | off on, and to be able to do this you need to take exams and
           | complete training showing you're capable of doing this
           | correctly. This isn't a thing in programming.
        
             | chongli wrote:
             | It is a thing for software engineering students at
             | University of Waterloo. They take physics and chemistry
             | courses and learn all about safety and various standards.
             | They write exams and at the end they become licensed
             | professional engineers with iron rings.
        
               | exdsq wrote:
               | But there are very few software projects that have this
               | level of rigor that I'm aware of, right? I've not heard
               | of a project where a software engineer has had to sign
               | off on it like a civil engineer signs off a bridge. Maybe
               | they exist! But I've worked on critical systems and yet
               | to see this in practice.
        
             | bcrosby95 wrote:
             | This is pretty interesting to me.
             | 
             | I think most software developers think of engineering as
             | making sure the software will perform under stress. But
             | this requirement is (usually) meaningless from a customer
             | safety standpoint. Sure it sucks if the system breaks, but
             | unless your business model is also safety critical, that
             | failure isn't a safety problem.
             | 
             | But leaking customer data is a safety problem. So for most
             | people, software engineering should as much (or more) about
             | security as things like time complexity tradeoffs.
        
         | sdenton4 wrote:
         | This is exactly what's discussed as the misconception
         | 'Engineering is high-consequence' in TFA:
         | 
         | "It does mean that the engineers spent a lot of time on
         | something that's low-consequence or non-safety critical. In
         | retrospect, this shouldn't have surprised me. The world is vast
         | and our industry is huge. Someone needs to design the bridges,
         | yes, but someone also needs to design all of the little things
         | we use in our day-to-day life. Much of the engineering there is
         | low-stakes, low-consequence, just like much software is."
        
       | nyellin wrote:
       | I think we're more similar to writers. Code can be creative or
       | artistic, but structure and discipline are important for anything
       | large.
       | 
       | There are technical writers and there are creative writers. You
       | can write about math or science or food.
       | 
       | Code has the same range.
       | 
       | Coding is just a form of expression and explanation, but machines
       | are the readers not people
        
       | conradludgate wrote:
       | I'm a software engineer by day, software craftsman by night.
       | 
       | My own personal work is made with love and care but I won't
       | necessarily fret over details like extreme testing, scalability,
       | readability of the code.
       | 
       | My paid work is a lot more thorough. Meetings and planning. Group
       | work. Testing. My work does have consequences (although I think
       | that's not really a prerequisite for the title of engineering).
       | While no official board has standards of software. My work
       | definitely has standards. My peers and managers have standards
       | that we enforce upon ourselves
        
         | conradludgate wrote:
         | I think there's one key term that hasn't been mentioned in
         | relation to this debate much: accountability.
         | 
         | Engineers are a countable for their work. I am accountable if
         | my code fucks up in production. An engineer is accountable if a
         | foundation fails. Not "how bad are the consequences", but "am I
         | accountable if something does goes wrong"
        
       | dgut wrote:
       | There are three types:
       | 
       | - CS person who has in-depth understanding of how computers works
       | and mathematics. Typically writes code in a low-level language,
       | can write a compiler, mostly will solve computer problems that
       | indirectly solve problems at a consumer level.
       | 
       | - Developer person who is analytical and has a good grasp of
       | mathematics. Can build tools to be used by other developer
       | persons. Uses high-level languages to solve problems at a
       | consumer level.
       | 
       | - Hacker person who uses tools built by the CS and developer
       | person to solely solve problems at a consumer level.
        
       | bsedlm wrote:
       | software engineering is like roman civil engineering
        
       | nicktorba wrote:
       | I thought I was over this argument because it always hits a dead
       | end, but Hillel took a really entertaining approach with this
       | series. Looking back, I'm almost always having this argument with
       | other software people, but never traditional engineers. I hadn't
       | thought much about how our stereotypes are wrong.
       | 
       | A great example from the second post in the series is how
       | software people don't have experience with the unpredictability
       | of traditional engineering projects: "Part of this misconception
       | comes from us seeing the results of the engineering process, not
       | the process itself. We don't see the friction, the overruns, the
       | delays that happen because someone built the wall one inch to the
       | left, or when a critical supplier goes out of business. To assume
       | that software is uniquely unpredictable is a special kind of
       | arrogance."
       | 
       | This has me wondering why the software world is so unpredictable
       | in the first place and why we aren't working on that? Or at least
       | getting better at dealing with it. Also, why are we so inclined
       | to think the physical world is so predictable? Probably because
       | we spend so much time on our computers...
       | 
       | excited to finish the rest of this series
        
         | mLuby wrote:
         | > This has me wondering why the software world is so
         | unpredictable in the first place... Also, why are we so
         | inclined to think the physical world is so predictable?
         | 
         | Ignoring time spent designing, software's manufacturing time is
         | essentially zero. Compare that with days/weeks for devices and
         | years for vessels/structures. So because we're used to the
         | latter timescale, the pace of software feels like watching a
         | video at 100x speed.
         | 
         | If engineers could instantly and cheaply print each new version
         | of the airplane or bridge they're tasked with building, they'd
         | start looking a lot more like software industry. When software
         | doesn't have its rapid/free iteration superpower (as in the
         | early days or in must-never-fail situations), it starts looking
         | like traditional engineering.
        
       | paxys wrote:
       | First define "engineering", then ask that question.
        
       | ineedasername wrote:
       | _" this is an important question"_
       | 
       | I'm not so sure about that. I'm not very concerned with the
       | labels. I think it's fair to say it might be in a gray area, and
       | maybe she me day in the future it will resolve into one or the
       | other.
       | 
       | It's probably useful to understand why "engineer" is attached to
       | the field in the first place. I think it's because CompSci
       | programs often grew of of Electrical Engineering programs: that's
       | where a lot of programming started, way back. When Comp Sci went
       | it's own way as a distinct field, it kept the "engineer"
       | association even though it almost completely ( especially today)
       | lost much emphasis on EE. When I was looking at grad programs 20
       | years ago, even then a Master's degree at a very good tech
       | University only had a single required EE course. Entry
       | requirements for those not in CompSci undergrads we're 4 courses:
       | discrete math, assembly, a grad-level fast paced intro to
       | programming, and a course dedicated to algorithms. EE knowledge
       | wasn't required or emphasized at any level.
       | 
       | So programming has strong roots in engineering, but expanded
       | beyond it. I'm fine with this gray area.
        
         | [deleted]
        
         | nitwit005 wrote:
         | Was going to say the same. The article doesn't back that
         | statement up with anything.
         | 
         | Many of us don't have engineer in our job title, and I've never
         | heard of anyone being upset at it not being there.
        
         | [deleted]
        
       | ChrisMarshallNY wrote:
       | I feel that I am. It doesn't really matter. I tend to work on my
       | own stuff.
       | 
       | I started as an EE, and a lot of the discipline from there, has
       | traveled with me, in my software adventure.
       | 
       | I don't ship bugs (that I'm aware of). My issues need to be at 0,
       | before I will release.
        
       | cbsmith wrote:
       | I look at it like "sanitation engineer". That's a real
       | engineering job that requires engineering expertise to do right,
       | but the term is often used (sometimes derisively) for anyone who
       | does anything involving waste/cleaning.
        
       | dekhn wrote:
       | I'm a hacker, always have been. Took a detour to be a PhD
       | scientist, and another one to be a "software engineer", but I'm a
       | hacker. And this hacker can tell you: most (95%) of software
       | "engineering" is not engineering, but more or less the equivalent
       | of telling anecdotes about your grandparents experiences while
       | arguing you have a solution to covid.
       | 
       | That said, there's 5% of software engineering out there that is
       | engineering; read the RISKS mailing list archives if you want to
       | see some examples (and counterexamples).
       | 
       | If software engineers were engineers, testing would be a higher
       | priority, and visible regressions would happen rarely, if at all.
        
         | woah wrote:
         | > If software engineers were engineers, testing would be a
         | higher priority, and visible regressions would happen rarely,
         | if at all.
         | 
         | That would mean they were doing their jobs badly. All
         | engineering requires balancing priorities such as physical
         | strength (or in software, correctness), and cost. An engineer
         | who overbuilds everything 10x will quickly be out of work.
        
           | threatofrain wrote:
           | When correctness matters less than business results, then
           | your role has passed from engineering into business. Software
           | is somewhere in the middle. Software engineers are often
           | informally expected to own the results without owning the
           | profits.
        
             | veilrap wrote:
             | Cost is an important constraint in engineering. Nearly
             | every engineering project has cost as a component of the
             | engineering process as omitting it yields projects that
             | cannot be completed.
        
         | wyager wrote:
         | > If software engineers were engineers, testing would be a
         | higher priority
         | 
         | Many classes of engineers don't have the chance to test their
         | designs. They have to know it will work ahead of time. The
         | closest analogy in CE/CS might be formal methods, which (as I
         | suspect you would agree) are sorely under-utilized.
        
           | typon wrote:
           | In fact we would be using a lot more simulators.
        
           | dekhn wrote:
           | Those engineers use tests, their tests just don't operate on
           | "full real systems".
        
         | buryat wrote:
         | > If software engineers were engineers, testing would be a
         | higher priority
         | 
         | testing is not that important for a hacker but important for an
         | engineer (although hackers do penetration testing).
        
         | amelius wrote:
         | > If software engineers were engineers, testing would be a
         | higher priority, and visible regressions would happen rarely,
         | if at all.
         | 
         | You say that as if software engineers determine the priorities
         | ...
        
           | mrguyorama wrote:
           | The difference between a "software engineer" and a real
           | engineer like a civil engineer is that when a manager type
           | tells a civil engineer to ignore safety or standards for
           | profit reasons, a civil engineer gets to tell them to fuck
           | off
        
             | chongli wrote:
             | It's even more strict than that. A non-engineer is not
             | allowed to be a supervisor of a civil engineer. This is why
             | civil engineers work in a firm structure: the entire chain
             | of command is made up of civil engineers. Any company who
             | wants engineering work done must contract with a firm. This
             | makes any potential conflicts of interest external rather
             | than internal.
        
               | hardolaf wrote:
               | This is also why most defense companies are run almost
               | entirely by engineers. Even though they're not required
               | to be, they organize themselves that way to ensure a
               | culture of design excellence. It's better to fail to
               | deliver a product than to deliver a product that will
               | kill people.
        
               | julienfr112 wrote:
               | Boeing and their famous 737 max screwup where run by
               | engineers with solid work and engineering ethic ?
        
               | formerly_proven wrote:
               | > defense companies ... than to deliver a product that
               | will kill people
               | 
               | Isn't that the point?
        
               | amelius wrote:
               | Is this what went wrong at Boeing? Also, how is Tesla
               | structured? Are software engineers working on autopilot
               | functionality managed by true engineers?
        
             | conradludgate wrote:
             | You, as a software engineer, should also tell your manager
             | to fuck off if they are making bad decisions. No one is
             | inherently above you. If they're the kind of management to
             | never listen to you then that doesn't make you less of an
             | engineer, that makes them shitty managers to ignore these
             | important principals behind their systems
        
               | Dma54rhs wrote:
               | Many companies have a culture of continuous deployment
               | that often means "bugs happen, its part of life around
               | here". You would go against the whole mantra of the
               | company and industry. Not easy to tell the boss to fuck
               | off.
        
               | ipaddr wrote:
               | You get fired the real engineer doesn't. You are paid to
               | do what management tells you.
        
       | bee_rider wrote:
       | I would cast a really wide net and say that an engineer is
       | someone who produces designs in compliance with the best methods
       | for their particular field. I don't think most of us software
       | folks are engineers, because the work-product in this field is
       | usually a particular implementation, rather than a design. Last
       | time I worked on a big project, the person whose job seemed the
       | most engineer-y was the 'Software Architect' but I don't know if
       | that title is standardized.
       | 
       | I think our fixation on this title is really silly and strange. I
       | did an engineering degree, the math is a little easier than
       | physics because we're aiming to get to the sort of standard
       | answers, and then there's some extra memorization. I could
       | understand people with no technical background at all being
       | impressed by the title, but if you've done a CS or a Physics
       | degree you've almost certainly seen harder problems. What's so
       | cool about it? We just learned how to compose the answers as
       | boringly as possible.
       | 
       | Edit: also most of my friends from engineering school went on to
       | become programmers because it is more fun and you don't have to
       | worry about letting the magic smoke out.
        
       | WalterBright wrote:
       | Actually, I am a real engineer, and designing gearboxes for
       | airplanes is quite real. So are programmers engineers or not?
       | 
       | Consider real engineering at Boeing. There are engineers and
       | technicians (aka draftsmen) working side by side. They are often
       | doing the same work. The difference, as far as Boeing is
       | concerned, is the engineers have a degree in engineering and the
       | technicians do not.
       | 
       | But if they are often doing exactly the same thing, what's the
       | real difference?
       | 
       | Think of it another way. Think of an auto mechanic. He can fix
       | your car. He can take your car apart and put it back together. He
       | can customize it. But is he an auto engineer (who often does
       | those tasks, too)?
       | 
       | Nope.
       | 
       | A programmer, technician, mechanic plugs numbers into formulas,
       | follows instructions and procedures and practices laid out by an
       | engineer.
       | 
       | An engineer derives the formulas, writes the instructions,
       | develops the procedures, and refines the practices.
       | 
       | For example, a technician builds a band pass filter by using a
       | circuit he's already used before and knows works. Maybe he'll
       | tweak the RC values. An engineer will drive the RC values needed
       | by understanding the calculation. The technician _may_ use
       | calculation (though they rarely do), but they don 't understand
       | where the formula comes from. An engineer does.
       | 
       | In software, a programmer calls a sort function from the supplied
       | library. An engineer writes the sort function, and can tell you
       | its complexity and why the algorithm he chose (or invented) is
       | the most appropriate one for the particular sorting task, and
       | what the cases are where the sort will perform poorly, and why.
        
         | waynesonfire wrote:
         | This is how I was thinking about this as well.
         | 
         | computer programming (e.g. writing code) is not software
         | engineering. Any "software engineering" that took place, if
         | any, would occur before the first instruction is even written
         | for a production system.
         | 
         | a computer program consists of the the instructions to be
         | executed by a CPU to manipulable it's state to hopefully solve
         | some problem. This serves the same purpose as the plans that an
         | engineer would hand to a builder, e.g. place this beam here and
         | use these screws to secure it to that pole. After a builder has
         | completed the construction of the building, the program has
         | finished execution.
         | 
         | The CPU is the builder and the program instructions are the
         | plans. The act of writing the program is the same as an
         | engineering writing their plans; except instead of code they
         | use diagrams or whatever.
         | 
         | the engineering parts came into play in developing those plans.
         | that is, before the instructions were written. this is where
         | the conversation should begin to explorer what is software
         | engineering. we don't know how to engineer software.
        
           | [deleted]
        
         | jolmg wrote:
         | > engineers have a degree in engineering
         | 
         | > An engineer writes the sort function, and can tell you its
         | complexity and why the algorithm he chose (or invented) is the
         | most appropriate one for the particular sorting task, and what
         | the cases are where the sort will perform poorly, and why.
         | 
         | So what of the people that can do this but don't have a degree?
         | And what of the people that have a degree in engineering but
         | can't do this? Are both also engineers, or are neither of them
         | engineers, or is one an engineer but not the other?
        
           | WalterBright wrote:
           | I said that Boeing defined engineers as having a degree in
           | engineering. That is clearly not my definition.
           | 
           | I've known engineers that were no better than mechanics. And
           | a couple (very rare) mechanics who could do engineer work,
           | and would be engineers in my estimation.
        
             | jolmg wrote:
             | Ok. Rather than offering an alternate definition, it seemed
             | to me that you were explaining why Boeing's definition made
             | sense by leaning on the implication that the possession of
             | a degree equaled whether or not you could do such things. I
             | misread.
        
               | WalterBright wrote:
               | No problem! BTW, I know a very good mechanic who I tell
               | him now and then that it's a tragedy he didn't get a
               | degree in it. He's a born engineer, held back by not
               | having the math training.
        
         | bobsmooth wrote:
         | I have an engineering degree but I work as a technician for an
         | aerospace company. To me, the difference between an engineer
         | and a technician is this:
         | 
         | As a technician, if I see something that looks wrong in a
         | product, I point it out and make a report. But it's the
         | engineer that makes the decision to fix it or to Use-As-Is. If
         | that part fails and kills someone, the responsibility is on the
         | engineer that signed off, not me that did the work.
         | 
         | That's the core of being an engineer I think, taking the end
         | responsibility for a product.
        
         | robocat wrote:
         | > A programmer, technician, mechanic plugs numbers into
         | formulas, follows instructions and procedures and practices
         | laid out by an engineer.
         | 
         | Engineers do that too.
         | 
         | A structural engineer I know uses software to design beam
         | strengths in buildings. He understands what the software is
         | doing, but he didn't write the software and he uses the
         | outputted parameters at part of his designs.
         | 
         | A mechanical engineer I know needed to design a gear to mesh
         | with an outer ring gear. He uses proprietary software to define
         | the shape of the gear, entering necessary parameters and the
         | output is generated into a CAD file.
         | 
         | Both are real engineers working as independents, but neither
         | meets your definition.
         | 
         | I design a JavaScript framework that I use, the process of
         | developing that meets my definition of engineering. I call a
         | huge variety of functions without needing to know any of the
         | internals. If I need to, I can go as deep as I wish to
         | understand those internals (my background is assembler,
         | followed by an EE degree, followed by embedded software,
         | followed by business software). An engineer doesn't derive
         | everything from first principles, but they breath compromise
         | and parry with conflicting constraints: they have the judgement
         | to go down rabbit holes when it is necessary.
        
           | WalterBright wrote:
           | > Engineers do that too.
           | 
           | Right, they do. Not everything an engineer does is
           | engineering.
           | 
           | > A structural engineer I know uses software to design beam
           | strengths in buildings. He understands what the software is
           | doing, but he didn't write the software and he uses the
           | outputted parameters at part of his designs.
           | 
           | I've worked with formula-plugger engineers, too. But they
           | would, now and then, misuse the formulas because they didn't
           | understand its limitations. And, if the problem didn't quite
           | fit the formula, they were dead in the water. While they had
           | engineering degrees, I considered them mechanics.
           | 
           | > A mechanical engineer I know needed to design a gear to
           | mesh with an outer ring gear. He uses proprietary software to
           | define the shape of the gear, entering necessary parameters
           | and the output is generated into a CAD file.
           | 
           | Could he design the gear without the CAD tool? If he could,
           | he's an engineer. If not, he's a mechanic.
           | 
           | P.S. I'm all for using labor-saving devices. But they are not
           | a substitute for understanding.
           | 
           | P.P.S. The guy who programmed the CAD tool is an engineer.
        
             | WalterBright wrote:
             | I remember one formula-plugger "engineer" I worked with.
             | His results were off by a factor of two, so I got called in
             | to find out what went wrong. I quickly found out that he
             | was misusing the formula. I explained to him where he went
             | wrong, over and over, but he refused to believe it as the
             | formula was king.
             | 
             | Another "engineer" spent a couple weeks trying to eliminate
             | the noise in a circuit, essentially trying things at
             | random. Finally, an actual engineer was called in. In 10
             | minutes, he had calculated an RC circuit to fix it, and the
             | noise went away.
             | 
             | Having an engineering degree doesn't guarantee competence.
        
           | monocasa wrote:
           | > He understands what the software is doing
           | 
           | That's the key. A structural engineer ostensibly has the
           | background necessary to work without the tool, albeit with
           | much less efficiency. Because of that they should have a
           | first principles understanding of what situations the tool
           | won't apply rather than the situation breaking down to
           | 'garbage in/garbage out'.
           | 
           | I'll be the first to admit that measuring this in terms of
           | education is at best a proxy for that knowledge, and have met
           | technicians that truly understand what they're working on
           | better than most engineers they worked with, and engineers
           | that promptly forgot everything as soon as the exam was over.
           | But what is listed above is the underlying piece that's
           | attempting to be controlled for. It's a hard concept to
           | measure.
        
             | WalterBright wrote:
             | That's right.
        
       | notch656a wrote:
       | Anyone can be an engineer. If you don't have a PE or an ABET
       | accredited engineering degree then you may still be an engineer,
       | although most likely you're something closer to a technologist
       | (although your skills may be both more valuable and more in
       | demand than an engineer's).
       | 
       | I have met maybe two people in my life that have learned the kind
       | of first principles physics and mathematics basis outside of
       | formal channels of academia or licensure. It's just really
       | inconvenient and probably an inefficient use of time for most
       | people to learn to be a classical engineer when you can make more
       | or better by getting damn good at applying some technology
       | (programming, welding, trucking, whatever).
        
       | luisrudge wrote:
       | in my linkedin I am :D
        
       | loeg wrote:
       | (2021)
        
       | paxys wrote:
       | The US Supreme court has ruled that the First Amendment allows us
       | to call ourselves engineers, so at least in this jurisdiction -
       | yes, we are (if we choose).
        
       | spacemadness wrote:
       | Why focus on the argument of "Engineering is Mathematical" and
       | ignore "Engineering Uses Scientific Knowledge to Solve Problems?"
       | I'm not heavily invested in the outcome I just found it curious
       | to only focus on mathematical usage as that's easy to apply to
       | software.
        
       | mrwnmonm wrote:
       | That Atlantic article is too long and doesn't get to the point.
       | Philosophers are faster than this.
        
       | DwnVoteHoneyPot wrote:
       | An engineer doesn't say "Move fast and break things".
        
       | [deleted]
        
       | kache_ wrote:
       | yes we are
       | 
       | *if we is anything like me
        
       | Tossrock wrote:
       | I think the best definition of engineering is that it's a process
       | of optimization within a solution space bounded by constraints.
       | If you pile up some mud and let it dry, you have made a dwelling
       | but you are not an engineer. If you calculate the load
       | requirements for a series of I-beams given a certain budget and
       | build a skyscraper, you are an engineer.
       | 
       | As the author correctly notes, there aren't necessarily hard
       | boundaries on what qualifies as engineering, but I think there
       | clearly are axes on which something is "more engineer-y" vs "less
       | engineer-y", and as the constraints of the solution space go from
       | physical (tension, voltage, pressure) to non-physical
       | (interpersonal relations, public perception, aesthetic judgment),
       | the activity goes from more engineer-y to less engineer-y.
       | 
       | In software, we're always optimizing on cost / developer time,
       | but that's closer to the non-physical side of the constraint
       | physicality axis. As you optimize for things like memory usage,
       | execution time, binary size, then you get closer to the physical
       | end of the constraint-type axis, and are thus more engineer-y.
        
         | d--b wrote:
         | > we're always optimizing on cost / developer time, but that's
         | closer to the non-physical side of the constraint physicality
         | axis
         | 
         | I think this is exactly what the author points out as "software
         | engineers don't know real engineering". What makes you say that
         | no other engineering practice don't optimize on cost /
         | engineering time?
         | 
         | There are degrees of quality in engineering, and one of the
         | factors is definitely "time spent on engineering". If you are
         | making cheap frying pans, I doubt that you're going to hire a
         | rocket scientist to check whether the screw holding the handle
         | is strong enough to resist 5000 heating cycles...
        
         | [deleted]
        
         | GrantZvolsky wrote:
         | In other words, what all engineering professions have in common
         | is that their practitioners solve problems difficult enough
         | that merely finding solutions is a substantial part of the job.
        
         | klodolph wrote:
         | > ...as the constraints of the solution space go from physical
         | (tension, voltage, pressure) to non-physical (interpersonal
         | relations, public perception, aesthetic judgment), the activity
         | goes from more engineer-y to less engineer-y.
         | 
         | This would put industrial engineering deeply in "less
         | engineer-y" territory, IMO.
         | 
         | I think someone is very engineer-y when they pick a simple,
         | easy bridge design which requires less skilled labor to
         | produce, even if this takes them away from working with more
         | juicy physics problems.
        
           | Tossrock wrote:
           | I think I would agree with that (industrial / process
           | engineering is "less" engineer-y than, say, mechanical
           | engineering), but since they're still optimizing against
           | measurable physical constraints (how many chiller units can
           | we fit in this section of the warehouse, how long does it
           | take a worker to move from the freight deck to the storage
           | racks, etc), I think they're over my personal line. But of
           | course, drawing sharp category boundaries is a losing game,
           | which is why I prefer to think in terms of axes / vector
           | spaces.
        
             | klodolph wrote:
             | I think "drawing sharp category boundaries is a losing
             | game" is as close as we are going to get to a clear lesson,
             | here.
        
         | tkiolp4 wrote:
         | So a plumber is an engineer. It's easy: an engineer is someone
         | who has a degree in engineering (whether or not such degrees
         | should be degrees on engineering is another question). The
         | current trend of calling programmers/developers engineers is a
         | pure business trend (it originated in HR departments).
        
           | [deleted]
        
           | AlotOfReading wrote:
           | Do you think engineers existed prior to the 18/19th century
           | when degrees became a thing? It seems problematic to your
           | definition that most of the wiki page on engineering is
           | dedicated to things done by non-engineers.
        
             | tkiolp4 wrote:
             | It's a simplistic definition. Since the topic of calling
             | developers engineers is rather superfluous, I think we
             | should go for simple definitions.
        
               | kelseyfrog wrote:
               | I can think of many simple yet incorrect definitions.
               | They have as much utility as this one.
        
             | a_wild_dandan wrote:
             | Also there are people without _any_ degrees that do far
             | more engineering than many developers who hold software
             | engineering degrees.
        
             | kevin_thibedeau wrote:
             | The engineering process is to apply design tools to
             | architect a solution with expected performance before
             | anything is built. In traditional engineering this
             | generally boils down to mathematical models that dependably
             | replicate expected behaviors to a known degree of error.
             | Building happens after the modeling says a solution is
             | possible.
             | 
             | With software, true engineering only happens if the
             | development model can follow such a process. Nobody wants
             | to put in the work to do this for all code though.
        
           | woah wrote:
           | As he says in the article, many engineers in the past had
           | neither a degree nor a certification. And they were certainly
           | building "real things".
        
           | [deleted]
        
           | Tossrock wrote:
           | Depends on what the "plumber" is doing. Certainly there are
           | plumbing tasks (eg pipe sizing for a chemical plant) which I
           | would qualify as engineering. I would qualify it that way
           | because they probably had a series of constraints (must
           | transport X liters of substance Y / second at Z temperature,
           | fit within service routing of the structure, minimize cost,
           | etc etc) which they optimized against. I think a plumber who,
           | say, fixes a sink, is not doing a similar process. Between
           | those points lies the gray area of subjectivity!
        
           | sudosysgen wrote:
           | Many chemical engineers do mostly plumbing. If you're really
           | great at optimizing plumbing for a large range of conditions,
           | then yes you're doing an engineer's job.
        
             | kevin_thibedeau wrote:
             | An engineer doesn't just wing it because they're "really
             | great" at it.
        
           | kelseyfrog wrote:
           | It's easier than that: an engineer is someone who does
           | engineering.
           | 
           | I'm not convinced there is much utility in conferring the
           | attribute of engineer to someone who is not practicing
           | engineering when it's just as possible to say "She studied
           | engineering" or "She majored in engineering" to denote the
           | status of having an engineering degree but not engaging in
           | the doing of engineering.
        
           | [deleted]
        
           | askonomm wrote:
           | I don't think so. Software engineering, and by extension,
           | software engineers became a thing in the 60's. Margaret
           | Hamilton coined the term ~'63.
        
           | balls187 wrote:
           | > So a plumber is an engineer
           | 
           | Yeah, we call them civil engineers.
           | 
           | In the US, in order to be an engineer one either had to have
           | a license to call themselves an engineer, or a company could
           | confer that title to employees. These days, it's less about
           | the specific education, and instead the process of solving
           | problems.
           | 
           | Engineering is a discipline which may be applied to many
           | domains, including software. I define an engineer as someone
           | who uses fundamental principles and processes of science and
           | engineering to solve real world problems.
           | 
           | Our customers need to ask a skilled expert a question and
           | receive an answer.
           | 
           | If I merely implemented code to achieve this goal, I would
           | not consider that engineering, but rather coding.
           | 
           | Instead, if I first defined the problem statement, gathered
           | requirements, documented assumptions, broke down the problem
           | into discrete deliverables, defined metrics and success
           | criteria, and created a plan of record, that would be
           | engineering.
           | 
           | I have a formal education in engineering, and aside from the
           | mathematical and science fundamentals required for
           | engineering, a large portion of my education was dedicated to
           | the process of solving problems (also proudly, a good portion
           | was dedicated to learning about ethics as well).
        
           | chrisseaton wrote:
           | My first computer science degree was a Master of Engineering
           | degree. Does that make me an engineer over someone with a
           | Master of Science but the same degree course content?
        
           | goodlinks wrote:
           | At uni I had one course in software engineering. It was
           | different to other courses as it was about defining metrics
           | and constraints, measures of success, requirements etc. As
           | well as evaluating what building blocks you had available.
           | 
           | To me the term didn't come from HR it came from trying to get
           | "programmers" to think in terms of constraints, value, risks
           | etc. Seems a pretty clear and simple definition.
           | 
           | The reason I think its not taken off in the same ways as say
           | mechanical engineering is because in general customers cannot
           | actually see the product, only certain elements of its
           | outputs.
           | 
           | If you couldn't see bridges either in use or after a failure.
           | You just saw cars disappear at one end and appear at the
           | other, not even able to measure the gap or time taken to
           | cross in any meaningful way then structural engineers would
           | bullshit and self grandise as much as software engineers.
           | 
           | Maybe one day the average person will know enough to hold us
           | to account, then we will begin engineering properly.
        
           | ffhhj wrote:
           | You know, some programmers build game __engines__...
           | 
           | More seriously, the first programmers were
           | electric/electronic engineers, so the engineer title was
           | probably inherited. And game engines actually require lots of
           | math and physics.
        
             | tkiolp4 wrote:
             | I don't doubt working on game engines is hard (I do web
             | development). If you build game engines then you are
             | probably a game engine developer. I don't hold a degree in
             | engineering myself; no shame of not having the "engineer"
             | title.
        
         | bmitc wrote:
         | > it's a process of optimization within a solution space
         | bounded by constraints
         | 
         | That just describes problem solving.
        
       | dpweb wrote:
       | Maybe it's the intangibility that lends to an attitude of less
       | respect.
       | 
       | Designing something in the physical world like a road you can't
       | screw up or people might get hurt. You could say the same about
       | software but only in a very few instances. There's no necessary
       | reverence for the laws of the natural world. Electricity and
       | gravity will kill you.
        
         | phillipcarter wrote:
         | Hmmm. I don't necessarily know if I agree with that framing.
         | 
         | I think there's a lot of software out there that could cause
         | severe harm if it weren't written well enough, or its use cases
         | were not thoroughly thought through. Thinking of all the
         | software that runs hospitals, banks, etc. And then all the
         | indirect harm caused in consumer software (often among teens).
         | Not to mention software written for evil purposes, such as that
         | to take down power networks, support child trafficking, etc. I
         | think there's a pretty strong case to by made that software is
         | serious business. Even if fiddling around with terraform
         | providers or whatever feel pointless sometimes.
        
         | empressplay wrote:
         | umm 737MAX?
        
       | dvh wrote:
       | Watch "Das Boot", the entire ship has one engineer and he
       | commands respect in the movie.
        
       | zaptheimpaler wrote:
       | > Many people have asked me why I care so much about this
       | project. Why does it matter whether or not software is "really"
       | engineering? Why can't we just say that "software is software"?
       | It's because of these misconceptions. People have a stereotyped
       | notion of what engineering looks like. Because software doesn't
       | look like the stereotype, they assume that we are wholly unlike
       | engineering.
       | 
       | This helped me understand his motivation, although I like to
       | frame the problem differently.. more like "why does software
       | seemingly fail to learn from other disciplines, or even its own
       | history?". IMO the answers are sort of universal - the best
       | practitioners do know, but they either can't/won't teach due to
       | time or legal constraints, and even if they did no one would
       | listen. I've seen good tech-company internal wiki articles that
       | are often much more comprehensive and well thought out than a 100
       | blog posts. It happens in many other fields like say quantitative
       | trading, or law or hardware/semi manufacturing too. There is a
       | low base level of public knowledge, say like TA or PE ratios in
       | investing, and then real firms are decades ahead. I feel like it
       | is the difference between a small, loosely competence based
       | hierarchy (like a company) vs. a huge, flat network like the
       | internet. Hierarchies are able to continuously build upon a
       | structured body of information, even codifying knowledge that
       | only a few people within the hierarchy understand. Flat networks
       | don't work that way for better and for worse.
        
       | cpach wrote:
       | _"We are Devo. D-E-V-O."_
        
       | psyc wrote:
       | Are Customer Satisfaction Engineers really engineers? Are
       | software architects really architects? Is a Doctor of Philosophy
       | a real doctor?
       | 
       | Edit: apparently that should have been "Is a MD a real doctor?"
       | TIL :D
       | 
       | The only reason this dumb question refuses to die is that
       | software developers _can_ actually borrow and apply approaches
       | from "real" engineering. The difference is that "we" do not have
       | to, either to be successful, or to be in compliance with any
       | regulation or cultural expectation (with exceptions).
       | 
       | I'm also generally annoyed by the retroactive continuity of it
       | all. "Software Engineer" started as a job title chosen by HR on a
       | per-company, not industry-wide, basis, and not as a flavor of
       | Professional Engineering. We're probably closer to that
       | aspiration now (unevenly distributed) but it still stinks of post
       | hoc justification.
        
         | SeanLuke wrote:
         | > Is a Doctor of Philosophy a real doctor?
         | 
         | Actually, a Doctor of Philosophy is the _only_ real doctor.
        
           | chrisseaton wrote:
           | Well also Doctor of Engineering etc.
        
         | blippage wrote:
         | When you go to the doctors, the title "doctor" is a "customary
         | title". They don't hold doctorates.
         | 
         | You'll notice that surgeons are usually called "mister".
         | 
         | Perhaps it stems from how the two professions arose. In ye
         | olden days, a lot of surgery was performed by barbers.
         | 
         | So when people ask if someone is a "real" doctor, their actual
         | understanding is the wrong way around. In their minds, the
         | words "Philosophy" in PhD somehow means they aren't proper
         | doctors.
         | 
         | Note that there are also higher doctorates, such as DSc (doctor
         | of science, which will be specifically scientific), DD (doctor
         | of divinity), etc.. I don't think I've ever met someone with a
         | higher doctorate, though.
        
         | philosopher1234 wrote:
         | >Is a Doctor of Philosophy a real doctor
         | 
         | Nitpick, but yes, actually "doctor" comes from the latin "to
         | teach" and originally refers to doctor of philosophy, and has
         | been co-opted for MDs. The real question is "are mds (who dont
         | teach) real doctors?"
        
           | jimmyvalmer wrote:
           | _actually "doctor" comes from the latin "to teach"_
           | 
           | There's only one robust doctor test and it doesn't involve
           | etymology. If someone else's mother refers to you as such,
           | then you're a doctor.
        
           | qudat wrote:
           | I would argue that physicians are actually engineers. They
           | are applying medical sciences.
           | 
           | Just like software engineering is the application of computer
           | science.
           | 
           | It's the truest definition I've been able to think of.
        
             | netizen-936824 wrote:
             | Physicians are repair techs for humans
        
           | Cd00d wrote:
           | That's interesting. Though, I'm not a fan of the notion that
           | I'm no longer a Dr. after leaving academia post PhD. But,
           | that's just my emotional take, and doesn't counter your
           | origination history.
        
             | xtracto wrote:
             | Hey, I did my PhD more than 10 years ago, and I've taught
             | more in my time in industry than what I could have taught
             | in academia.
        
             | Supermancho wrote:
             | > I'm no longer a Dr. after leaving academia post PhD
             | 
             | "Does a PhD thesis have to be novel?" - I don't care how
             | you slice that answer, even if you were
             | confirming/revisiting existing studies. If you have a PhD,
             | you contributed to human knowledge in either the master or
             | PhD theses, imo.
        
           | klodolph wrote:
           | To add to this, you'll see different degrees for research vs.
           | professional practice doctorates in various fields.
           | 
           | For example, you can get a Ph.D. in psychology, or a Psy.D.
           | in psychology. Generally speaking, Ph.D. is for psychology
           | researchers and Psy.D. is for professional psychologists.
           | Similarly in law, a J.D. is often part of the process of
           | becoming a lawyer, and a J.S.D. is for someone who wants to
           | do research.
        
           | psyc wrote:
           | > The real question is "are mds (who dont teach) real
           | doctors?
           | 
           | This makes my day!
        
         | chrisseaton wrote:
         | > Is a Doctor of Philosophy a real doctor?
         | 
         | 'Doctor' means someone who's learned enough to teach. Many
         | physicians calling themselves doctor don't actually have any
         | kind of doctorate at all and only get the title as a curtesy
         | due to their own profession's historical fears of lacking one.
        
           | ratww wrote:
           | Interestingly, in Brazil practicing lawyers who passed the
           | bar exam are also called "doctors" due to an Imperial decree
           | from 1825, that was also a courtesy to them from the then
           | Emperor.
        
         | MattGaiser wrote:
         | Indeed. Real engineering is mostly defined by regulatory rules.
         | Crappy bridges and unsafe factories existed before the
         | government regulated it.
        
         | [deleted]
        
         | exdsq wrote:
         | You can become a chartered engineer with a background in
         | software engineering so it is a 'real flavor' of Professional
         | Engineering. I'm studying for the CSQE which is a Certification
         | on Software Quality Engineering from the same body that awards
         | regular quality engineering certificates and I've been pretty
         | surprised/happy with the focus it has on processes that allow
         | for reproducible quality, metrics to monitor software
         | improvements, and its general depth on testing as a whole (for
         | example state machine, property, and model-based testing).
        
           | 4rt wrote:
           | Do you have any good links about this please?
           | 
           | It's interesting how the traditional standards bodies are
           | adapting to the new tech.
        
         | masswerk wrote:
         | The Doctor of Philosophy is a somewhat unlucky example, since
         | this really goes back to the original trivium. Medicine, on the
         | other hand, is an applied science (so, strictly speaking, if
         | you're not bound to teaching...).
        
       | stakkur wrote:
       | My father-in-law, a lifelong licensed civil engineer, would (and
       | often did) say 'no'.
        
       | mslate wrote:
       | Yes, we're all engineers. Some better than others.
       | 
       | A piece of paper changes nothing, only in the legal system in
       | which you operate.
        
       | ajkjk wrote:
       | I really like the writing style on this. Very practical and
       | readable, while getting straight at the interesting philosophical
       | questions and not using a bunch of vapid filler.
       | 
       | Also here's a take: yeah, software engineering is engineering,
       | it's just really _bad_ engineering which is why we're missing
       | most of the things you'd expect to see in an engineer. We're in
       | the early days of the craft, like 20% of the way to wherever it
       | will end up, and we're doing the equivalent of, say, the
       | structural engineering that goes into building a log cabin.
        
       | WalterBright wrote:
       | It took an engineer to invent Autotune. A programmer never would
       | have been able to.
        
       | zwieback wrote:
       | A long time ago when this was discussed someone suggested
       | "software gardener" would be a good term. As a professional
       | software developer and hobby gardener I kind of agree.
        
       | qudat wrote:
       | IMO, Engineering is the application of science.
       | 
       | Software development is the application of computer science.
       | 
       | Using this definition, physicians are engineers, applying medical
       | sciences.
        
       | zmmmmm wrote:
       | One of the reasons engineers exist is to mitigate a high cost of
       | getting something wrong. That's different to saying "people could
       | die" ... it can be as mundane as, once we've made a million of
       | these widgets there's a very high cost to remake them all because
       | something was miscalculated. When software work heavily
       | incorporates these elements of process and planning, I call it
       | engineering. When it doesn't (for example, when it's built
       | entirely agile style with literally no planning ahead beyond what
       | we do for the next 2 weeks) I don't.
        
       | jmfldn wrote:
       | Absolutely not. My job title is "engineer" but compared to what
       | my dad does, mechanical engineering, it's much more an art with
       | bits of actual engineering and mathematical rigour sprinkled on
       | top. I honestly think I should be called a developer and leave it
       | at that. I don't think of myself as an engineer in all honesty.
        
       | amelius wrote:
       | We're plumbers, not engineers.
        
       | philipov wrote:
       | Or are we dancers?
        
         | mrwnmonm wrote:
         | My vote is for this one
        
       | citizenpaul wrote:
       | The difference is simple. We are not engineers for the same
       | reason cheerleaders are not athletes.
       | 
       | There is too much money to be made by trivializing the industry
       | and the players involved benefit greatly by lobbying against it
       | being "real" engineering.
       | 
       | Whats the difference between a skyscraper and pool house in terms
       | of "real" engineering. Nothing. Whats the differene between a
       | spacecrafts code engineering and a website. Nothing.
       | 
       | There are just lower stakes and it is used as a straw-man against
       | professionalizing the industry of software.
        
       | pjmlp wrote:
       | Given the professional title, in an university approved by the
       | Engineering Order, definitely.
       | 
       | Unfortunately not something with the same value everywhere.
        
       | tomc1985 wrote:
       | I had the privilege of sharing office space with the engineers at
       | a former employer, with at one point sitting next to a chemical
       | engineer on my left and a mechanical engineer on my right. The
       | former spent all day analyzing formulations and generating test
       | data, and the latter spent all day putting together various parts
       | and gizmos in SolidWorks. To me the biggest difference between us
       | (besides the work itself) was process -- this half of the
       | engineering department was full of it. And it was respected.
       | There were notebooks describing process for every little thing,
       | and so much of the work produced had to be signed off on.
       | 
       | We sometimes worked together closely, as we were building
       | machines that were driven by software, and I felt respected by
       | them and they seemed comfortable with us being titled Software
       | Engineers. We seemed to share a similar mindset and curiosity
       | about the world and discussions tended towards the scientific.
       | 
       | Though, I would note that that software org spent a lot of time
       | writing things in-house; our department had almost zero
       | integration with outside vendors save those that were performing
       | some other service for us. I am not sure that this modern flavor
       | of "software engineering," where it seems more time is spenting
       | thinking about how to glue together various services, resembles
       | what we did there.
        
       | monksy wrote:
       | I think Hillel is a pretty interesting guy. But I think that he's
       | a bit missing the mark here.
       | 
       | It feels like his view of engineers is that they are people who
       | can put together a solution and then use a lot of fancy numbers
       | and established facts to support their solution. In his oil
       | drilling example.. he's not going into the same issues that we
       | face. (Is that drilling analyze for failure worth the money in
       | investigation, etc)
       | 
       | With software engineering you're putting together instructions to
       | fit within a computer's hardware capacity to solve your problem
       | in the context that you need to operate it. There are a lot of
       | ways about it .. however we have a lot of issues in our field
       | surrounding the technical aspect on this:
       | 
       | 1. Academics is dead focused on the hard part of language
       | schemas, grammars, correctness-proofs, etc. 2. The research that
       | we have about design patterns and their usages are nothing more
       | than surveys and try to debunk a negative. (This goes back to the
       | whole "academics proved unit tests don't provide value") [The
       | results are never influential and they completely ignore the
       | quality of the data]
       | 
       | Additionally:
       | 
       | I want to say that as engineers .. at companies, we're put into
       | aggressive processes and methodologies that prevent us from
       | operating a very high quality output. As a software engineer, you
       | should have verification to prove your program works as intended,
       | you should have monitoring to validate that constantly in
       | production, you should have experience+data that supports the
       | design decisions.
       | 
       | There are metrics there to quantify our solutions.. but being
       | business and shipping led.. that's forced to the wayside.
       | 
       | ---
       | 
       | Slight addition here: We're in a phase in the industry where
       | experience is completely ignored and we're forgoing technical
       | "merit"(By that I mean experience, strong practices, discipline..
       | not the business says I'm good) in favor of blasting people into
       | the door.
       | 
       | We're not getting a lot of people that are willing to learn from
       | the methods of old and make constructive commentary, we're
       | getting people that are not willing to be disciplined, and we're
       | getting people who forgo good practices because "they dont'
       | wanna". (You see this all the time with lazy arguments about
       | people hating to do unit tests, bad tooling, etc)
       | 
       | TL;DR to my argument, are we engineers right now.. some have the
       | privilege to be.. but most are punished for doing so because it
       | may annoy the PO. We totally can be engineers, no one really
       | rewards you for this.
        
       | throwaway984393 wrote:
       | _" Engineers work on predictable projects with a lot of upfront
       | planning and rigorous requirements. Software is dynamic,
       | constantly changing, unpredictable."_
       | 
       | Ask someone building medical robots if their software is
       | unpredictable. Or someone building a car ECU. Or an airplane
       | guidance system. Or controls for industrial machinery. Or telecom
       | equipment.
       | 
       | Our entire industry literally follows a _manifesto_ whose purpose
       | was to _eliminate_ upfront planning and rigorous requirements,
       | called  "Agile". It was an intentional choice to be
       | irresponsible, and we all ate it up because it meant we didn't
       | have to do any due diligence. Just churn out software turds as
       | fast as you can, get a big smile and a thumbs up from the user,
       | and you're done.
       | 
       | Who cares if tomorrow it fails and the thermostats for 10,000
       | houses goes out in the middle of winter? At least we didn't have
       | to write documentation! Moving too fast over here, can't be
       | worried about shit like "making sure it's safe" !
       | 
       | Oh, whoops!, every social security number in the country is
       | exposed. But we could never have prevented that, we write
       | software, it's inherently unpredictable!
       | 
       | It's all _too_ predictable. The industry is led by children who
       | don 't know how to do their jobs, there are no industry
       | requirements or certifications, and there is no trade school to
       | really learn. Can you imagine an electrician wiring your house up
       | after a 6 week "boot camp" ? Or a mechanical engineering intern
       | building a bridge?
        
       | Scramblejams wrote:
       | I come from an aerospace engineering background (did structural
       | engineering on commercial aircraft that were in the design and
       | approval stages) and am in software now (games). I've had two
       | different takes on this. Neither is perfect. Would appreciate
       | comments on them.
       | 
       | (a) If it's regularly expected that you ship bugs, you might be
       | in a discipline that is distinct from engineering.[0]
       | 
       | (b) If you can usually reach for an abstraction to save you, you
       | might be working in something that isn't engineering.[1]
       | 
       | [0] If software is engineering, then it's the only engineering
       | discipline of which I'm aware in which the participants are
       | regularly expected to produce deliverables they don't fully
       | understand. What do I mean by that? Well, if we software peeps
       | fully understood our deliverables, we wouldn't have bugs, or at
       | least, we'd always know what bugs are there. If as a structural
       | engineer I had delivered a final draft of an analysis document
       | which showed that I didn't fully understand the part and how it
       | would perform, my boss would not have been pleased. Most software
       | bugs are treated more casually than that, so we clearly have a
       | tolerance for delivering work that we don't fully understand.
       | 
       | You might take issue with the idea that I "fully understood" a
       | structural part. Fair. When I calculated the strength of a beam
       | in a thrust reverser I didn't understand the individual molecular
       | interactions, I didn't need to know if the metal was of a body-
       | centered cubic crystal structure, etc. But this is because I was
       | able to apply well-understood and rigorously accepted simplifying
       | assumptions that were conservative (from the point of view of a
       | factor of safety), and fully encapsulated all the understanding I
       | needed to produce a part fit for use.
       | 
       | [1] This feels like the more flawed of the two proposals, because
       | I expect EEs can do this. Control systems folks can definitely do
       | this, and I would absolutely call them engineers.
        
         | netizen-936824 wrote:
         | >When I calculated the strength of a beam in a thrust reverser
         | I didn't understand the individual molecular interactions, I
         | didn't need to know if the metal was of a body-centered cubic
         | crystal structure, etc. But this is because I was able to apply
         | well-understood and rigorously accepted simplifying assumptions
         | that were conservative (from the point of view of a factor of
         | safety), and fully encapsulated all the understanding I needed
         | to produce a part fit for use.
         | 
         | While I fully agree with almost everything in your post, this
         | sounds an awful lot like an abstraction to me. Perhaps the
         | different between creating software and engineering based on
         | the physical sciences is the degree in which the abstractions
         | are understood and rigorous. Perhaps software engineering is
         | simply in its infancy and may eventually lead to more rigorous
         | designs with less or no bugs in the future?
        
           | aozgaa wrote:
           | In software, the range of correct operation (eg: maximum web
           | server load with response time under x ms) is commonly
           | unspecified and omitted. The strength of the beam gives a
           | conservative estimate of its capabilities. Still a
           | model/abstraction, but one with boundaries.
        
           | Dma54rhs wrote:
           | I think there are bigger guarantees and checks the beam works
           | as it's specified so the next engineer can continue.
           | 
           | Google was using in production (firebase cli) the notorious
           | trick the js developer played us other week. I doubt the
           | other fields would rely on some random developer from
           | Australia who has had a colorful past to provide the beam for
           | structural engineer. And there's definetly more testing from
           | all sort of parties they work om real life as advertised.
           | 
           | Then again no one is offering free open source beams and you
           | can't since you need materials not just one time drawings of
           | an idea.
        
             | netizen-936824 wrote:
             | The beams may not be open source but the calculations are
        
         | d--b wrote:
         | The strength of a beam is an atomic calculation. A software
         | engineer should fully understand a function that calculates the
         | length of a string...
         | 
         | How is a spaceship blowing up not a bug? These happen fairly
         | frequently... Oh, and oil spills? Fukushima? Mines that
         | collapse?
         | 
         | Talking about games. The physical equivalent to video games is
         | pinball machines. Anyone who has played these can tell that the
         | ball sometimes get stuck in weird places. This is exactly the
         | equivalent of a software bug. Shouldn't the engineer have a
         | total understanding of the machine so that the ball never gets
         | stuck? You know, maybe games aren't so important that
         | everything must be perfect.
         | 
         | Also, I have a 2 year old. None of his toys have lasted more
         | than 3 months. Literally 0 out of dozens. Isn't there a fortune
         | to be made by engineering toys that can endure a kid's
         | strength?
        
           | cj wrote:
           | > This is exactly the equivalent of a software bug.
           | 
           | Not really, because you can usually shake or tilt the pinball
           | machine to set the ball free.
           | 
           | > oil spills? Fukushima? Mines that collapse?
           | 
           | These events happen (literally) once every few years or half
           | decade. Software bugs happen (literally) billions of times
           | per hour.
           | 
           | (I'm not normally this pedantic, but felt the need since your
           | comment comes across as knee jerk defensive without a whole
           | lot of substance to work with)
        
             | d--b wrote:
             | > Not really, because you can usually shake or tilt the
             | pinball machine to set the ball free.
             | 
             | That's silly. A bug is an unintended behavior of the
             | system. If you shipped a debugger with every video game,
             | you'd probably be able to get yourself out of most bugs.
             | 
             | > Software bugs happen (literally) billions of times per
             | hour
             | 
             | You're comparing things with different criticality. A bug
             | that doesn't prevent you from doing your work is like a
             | match that doesn't light up properly. These events happen
             | all the time in the physical world.
             | 
             | Bugs that shut down AWS for 24 hours tend to be less
             | frequent...
             | 
             | Let's just no enter in a debate about the frequency of
             | "physical world bugs".
             | 
             | Yes I admit it was a little knee jerk defensive.
        
             | MisterBastahrd wrote:
             | Yeah, oil spills occur because companies make conscious
             | decisions to do the bare minimum to operate their
             | pipelines. 500K gallons of crude spilled in Louisiana a few
             | weeks back and nobody knew about it until cleanup efforts
             | were underway. Why did the spill occur? It wasn't because
             | the pipeline was engineered poorly. It was because the
             | pipeline was not properly maintained. And people wonder why
             | there are those who do not want an oil sands pipeline
             | carved through an aquifer.
             | 
             | Engineers don't work with infinite budgets and they usually
             | are not the people who are making final decisions on either
             | maintenance or implementation. Many of these failures occur
             | because of budget constraints, time constraints, or
             | decision makers who go against the recommendations of
             | experts.
             | 
             | IMO, the closest thing to a "software engineer" is a
             | software architect. Everyone else is a craftsman.
        
         | skrtskrt wrote:
         | > But this is because I was able to apply well-understood and
         | rigorously accepted simplifying assumptions that were
         | conservative (from the point of view of a factor of safety),
         | and fully encapsulated all the understanding I needed to
         | produce a part fit for use.
         | 
         | I am not sure how this is different from evaluating a library,
         | database technology, or architecture, going through design
         | review, learning properties of distributed systems (which have
         | corresponding proofs by the way) to understand which properties
         | you need to satisfy with a given solution, reading the
         | documentation, viewing other open-source code that uses the
         | technology, reading publications/testimonials from people and
         | companies using it in productions, etc., etc., like we do.
         | 
         | In particular "applying simplifying assumptions" - this is what
         | we all have to do particularly in a distributed, cloud-
         | computing world where you are essentially purchasing a
         | conceptual primitive (like "virtual CPU" or "replicated block
         | storage" and building on top of simplifying assumptions about
         | how those work, because you can't walk up to the NAS rack and
         | start hitting it with a hammer to see if the data can be
         | recovered after, the same way you can't hit a steel beam with
         | an actual hurricane to know what will happen.
         | 
         | Although if I worked in the datacenter operations team for a
         | cloud provider, I would _absolutely_ hope to one day be able to
         | test how we handle if I yank some plugs or hit the NAS rack
         | with a hammer :)
        
           | slingnow wrote:
           | It is absolutely wildly different. "Evaluating a library",
           | "reading the documentation", etc., is absolutely NOT the same
           | as basing your calculations on a hundred+ years of rigorously
           | proven methods and deeper physical truths. How could you
           | possibly infer that these are the same thing?
        
             | skrtskrt wrote:
             | software engineering is a younger discipline, we don't have
             | hundreds of years yet.
             | 
             | You seem to think that our understanding of CPU operation
             | or distributed systems isn't based on physical truth and
             | rigorous testing.
             | 
             | Also a programming language or library or whatever has
             | often been deployed by tens of thousands of organizations,
             | across tens if millions of deployments, across trillions of
             | discrete times the code path has been hit, and we know how
             | it acts. That's rigorous in its own way
        
         | yodsanklai wrote:
         | > If it's regularly expected that you ship bugs, you might be
         | in a discipline that is distinct from engineering.
         | 
         | Totally disagree. Engineer = design and build things. Whether
         | what you build has bugs or not is irrelevant to the definition.
         | 
         | > If you can usually reach for an abstraction to save you, you
         | might be working in something that isn't engineering.
         | 
         | All science is based on abstraction. Laws of physics used by
         | aerospace engineers are abstractions of some more complex
         | reality.
        
           | Scramblejams wrote:
           | Is a child performing engineering when they resolve to build
           | a tower of blocks and do so? If not, what distinguishes them
           | from someone who is performing engineering?
           | 
           | In your view, are simplification and abstraction the same
           | thing? Or do they differ, and if so, in what way?
        
         | karaterobot wrote:
         | Love this comment!
         | 
         | > (a) If it's regularly expected that you ship bugs, you might
         | be in a discipline that is distinct from engineering.[0]
         | 
         | This might arise from the different contexts without implying a
         | different activity is taking place. Fixing bugs after launch is
         | something you can do in software engineering, but can't really
         | do in (say) structural engineering. If they could invisibly and
         | safely swap out part of a bridge without stopping traffic, I'm
         | betting they'd do it all the time! In software we can, and it
         | makes sense to use this feature of digital products as part of
         | the engineering process, in order to meet other requirements,
         | like time and cost.
         | 
         | (Whether it is overused or not is another question. I consider
         | "good engineering" vs. "bad engineering" as distinct from "is
         | engineering" or "is not engineering", ymmv)
        
         | varjag wrote:
         | From my observations engineers in many disciplines would wing
         | it all the time. Sometimes because of time/budget constraints,
         | or simply because of lack of established methodology for
         | certain corner cases. The scope of 'corner cases' also tended
         | to be a lot larger in their disciplines' infancy: things like
         | bridges (and yes, aircraft) were regularly built with
         | assumptions pulled out of one's asses.
        
         | dataflow wrote:
         | How about this one:
         | 
         | (c) If your project assumes the underlying device/system will
         | behave _exactly as it is told to_ , then you might be in a
         | discipline that is distinct from engineering.
         | 
         | This means "engineering" would include some software projects
         | (like fault-tolerant system design), but exclude many others
         | (like most desktop/mobile/web apps, perhaps with components
         | like databases being exceptions).
         | 
         | My rationale for this is that, best as I can tell, traditional
         | engineering is (for the lack of a better phrase) about "taming
         | the real world"--which doesn't always behave the way you tell
         | it to, because it's inherently uncertain, failure-prone, and
         | impossible to model _exactly_. So if your task is dealing with
         | that, then you 're doing engineering. Whereas if your main
         | problem is coming up with the correct specification--but you
         | assume it will be executed faithfully--then it's not really
         | engineering per se, but something else (not sure if we have a
         | name for it).
         | 
         | Thoughts?
        
           | Scramblejams wrote:
           | Intriguing! I'll have to let that percolate...
        
         | chiyc wrote:
         | I appreciate you sharing your perspective! Mine's somewhat
         | different having worked in another industry.
         | 
         | I worked in semiconductor manufacturing as a process engineer.
         | What counts as bug in that setting? It's completely expected to
         | have defects in the final wafer. They go through a QA process.
         | Some die can be repaired but others are trash. Die also get
         | graded and low quality chips go to customers with less mission-
         | critical needs. There's also a department dedicated to
         | investigating early failures in defective product from customer
         | returns.
         | 
         | Personally, I viewed the product that I delivered as the wafers
         | coming out of the steps I owned. High volume manufacturing is
         | an ongoing process much like software development.
         | 
         | As an individual process owner, I had metrics and goals to meet
         | but my processes fit into a larger system I didn't fully
         | understand. Process development happened by incremental changes
         | much like software feature development. We would convert a
         | small percentage of the production line with a new change at
         | one step like you might use feature flags, but we sometimes had
         | to rollback changes when something unexpected came up at yield
         | or test.
         | 
         | It might be more the nature of semiconductor manufacturing, but
         | I view failures as part of the engineering process that comes
         | up when we're pushing our tools and systems to new limits.
        
           | Scramblejams wrote:
           | Yes, (a) doesn't hold up when you're dealing with the
           | bleeding edge. Plenty of experimental airplanes, designed by
           | highly credentialed engineers, fell out of the sky on the way
           | to producing today's safety miracle of commercial aviation.
           | Similar story (hopefully usually less deadly!) with other
           | miracles, like modern semiconductors.
        
         | garettmd wrote:
         | Point a seems more related to the "culture" surrounding modern
         | engineering than it does a prerequisite for the discipline
         | itself. Looking at how SpaceX engineers produce things looks
         | totally different (from my outside perspective) from how a
         | civil engineer sitting behind a desk would sign off on designs.
         | Engineers at SpaceX seem to be more accepting of failure and
         | have the "move fast, break things" mindset that most
         | traditional engineers don't have.
        
           | LegitShady wrote:
           | engineers at spacex are unlikely to go to jail because one of
           | their designs blew up, but most engineers who design bridges
           | or vuikdings dont have that luxury.
           | 
           | Move fast, break things, pay for it with someone's life, lose
           | your professional accreditation and maybe your freedom.
           | 
           | Maybe they're playing similar but different games rather than
           | playing the same game differently.
        
         | jolux wrote:
         | > Well, if we software peeps fully understood our deliverables,
         | we wouldn't have bugs, or at least, we'd always know what bugs
         | are there.
         | 
         | I don't think this is really incompatible with some of what
         | Hillel gets at in his post with regards to professionalism and
         | quality. I think it's possible for software engineers to have
         | much higher confidence in what sorts of bugs their solutions do
         | and do not contain, but the practice is mostly tilted towards
         | velocity over catching every last bug.
         | 
         | Because not all bugs are the same and not all requirements are
         | equally important. Robust software systems are supposed to be
         | built to minimize the impact of bugs in individual components
         | where possible, with defensive programming techniques and such.
         | 
         | > I was able to apply well-understood and rigorously accepted
         | simplifying assumptions that were conservative
         | 
         | I think this is a better candidate for a key difference than
         | your other suggestions. We don't have a lot of good ways to
         | apply conservative simplifying assumptions once software gets
         | to a certain scale. We have abstractions, but where they are
         | imperfect, any missed detail is a possible integration flaw.
        
           | Scramblejams wrote:
           | Does this imply that the more complicated a stack gets, the
           | less engineering can be done, and it devolves into something
           | else?
        
         | tester756 wrote:
         | Software is built on 150 layers that change incredibly often
         | 
         | new cpus, changes to OS, core libs, frameworks, runtimes, vms,
         | language libraries, new protocols, other hardware
         | 
         | the dynamic here is way too big
        
         | chunky1994 wrote:
         | I think the difference in [0] is your input variable space is
         | much smaller for "traditional" engineering disciplines. To
         | grossly simplify: ME? You need tolerances for a specific amount
         | of force (in different directions.) EE? You need tolerances for
         | specific amounts of current passed through a circuit.
         | 
         | With software your inputs are tremendously varied, because user
         | input is not as well-formed as in any other engineering
         | disciplines. In fact we deliberately try to find ways to input
         | things that are not supposed to be inputs by designers of
         | systems (i.e hacking things). If "hacking" bridges was a thing,
         | it would be something like people trying to see if they can
         | diffuse a thermite solution into the rock-face instead of
         | driving a car over it, and I'm not sure any structural engineer
         | has planned for that scenario.
        
         | steve76 wrote:
         | >(a) If it's regularly expected that you ship bugs, you might
         | be in a discipline that is distinct from engineering
         | 
         | A software bug means you can't drag and drop, or have to wait
         | to import your contacts.
         | 
         | An engineering risk means the hood of the car decapitates you
         | above 30 mph, or the diesel fumes give everyone cancer.
         | 
         | >(b) If you can usually reach for an abstraction to save you,
         | you might be working in something that isn't engineering.
         | 
         | Everything's rated. You open a catalog from a supplier. If
         | there's any question, go up in size. A lot is skids now. There
         | are also trade associations. Dust settles. Products turn from
         | novel invention into utility. Existing capacity is built around
         | one thing a shop does right, especially the knowledge from the
         | workers.
         | 
         | Software is much harder. Go. Just go. Get it done. Get it out.
         | Who cares if it's awful code. We need to make money now.
         | 
         | Engineering is the applied science. Applied means you use it.
         | You don't create it. If you do create it by chance, it's not
         | your responsibility. Ma Bell didn't go into the business of the
         | Big Bang when they discovered cosmic background radiation.
         | Their job was telephones. Science means consistent observations
         | regardless of the environment. Everyone thinks of scientists as
         | people in lab coats. Nothing like that. Lot's of reading.
         | 
         | Software is much more focused on engineering. In other
         | disciplines you are a cashier at a grocery store. Software is
         | much more like Menlo Park. You have a fixed commodity in server
         | cost and bandwidth. Add value to it however you can.
        
         | bopbeepboop wrote:
         | The problem is that "software" is as broad as "aerospace" or
         | "construction".
         | 
         | Some aerospace things are highly engineered -- airplane, rocket
         | ships, etc; some things aren't -- kites, paper airplanes, etc;
         | and some things are in-between, like gliders or hot air
         | balloons.
         | 
         | You get the same in buildings -- which range from sheds to
         | houses to skyscrapers.
         | 
         | Also, the end of [0] and your discussion of your usage of
         | routine abstractions to solve problems makes me wonder if you
         | consider your own job to be (b)-type engineering.
        
           | Scramblejams wrote:
           | I do not consider what I do now to be engineering. I'm
           | responsible for a product used by my whole studio and I try
           | to be very careful and produce a high quality deliverable,
           | but I do not think of it as engineering.
        
       | protontorpedo wrote:
       | Does it even matter? It doesn't, this is like comparing apples to
       | oranges. The biggest reason there is more rigor in other fields
       | is because they are less iteration-friendly.
       | 
       | I personally call myself a programmer, even if my job title says
       | engineer.
        
       | Barrin92 wrote:
       | I'd say the core of what engineering is, is building something
       | according to formal specifications and _well-defined_ error-rates
       | and constraints. It need not be mathematical in nature but it has
       | to be strict and measurable. And as a consequence, almost any
       | engineering discipline has well-defined methodologies and
       | processes, and engineers are formally trained.
       | 
       | I think this is in line with the intuition of the article.
       | Someone who writes software for a spacecraft is an engineer
       | because they work within extremely well defined limits and
       | towards strictly enforced specifications. People who write
       | software for the military or who write compilers probably do too.
       | 
       | I don't think this applies to how most software developers work
       | when it comes to the web or just your average project. There is
       | in my experience no rigor of that sort. People just write code,
       | and sure there's performance considerations but usually not in a
       | systematic way, and it's often more tinkering than engineering.
        
         | razzio wrote:
         | This makes sense to me as someone educated as an electronics
         | engineer. I've since moved over to software development and on
         | occasion feel it can be called engineering, but more often it
         | cannot.
         | 
         | > building something according to formal specifications within
         | constraints...
         | 
         | Yes this is close to what I consider engineering, but maybe it
         | is better to say 'design something according formal
         | specifications within a set of constraints'. Engineering is a
         | process of design. Does this mean implementation is excluded
         | from the definition of engineering?
         | 
         | Plumbers and carpenters build according to specifications and
         | architects design the specifications yet neither are called
         | engineers.
         | 
         | Software development more often than not has little in terms of
         | formal specifications and design, and as the article points out
         | it is very much a field of change. It also focuses mostly on
         | implementation instead of design. That is closer to what a
         | plumber, carpenter and other tradesmen do.
        
         | Veserv wrote:
         | I think you are largely correct, but I think I would instead
         | characterize it as well-defined requirements and guarantees.
         | What I mean by these terms is: requirements are a formal
         | statement of a problem, guarantees are a formal statement about
         | a solution, and a specification is a formal implementation that
         | guarantees the requirements are met.
         | 
         | For instance, using the case of a bridge, the requirement might
         | be something like: "lasts 10 years, max 10 ton load", the
         | implementation might be a steel bridge, and the guarantee of
         | the specification might be something like: "lasts 20 years, max
         | 20 ton load".
         | 
         | Put another way, the key distinction is that engineering has an
         | objective measure of what is considered adequate (i.e. solving
         | the problem) and an expectation that only adequate solutions
         | should be implemented.
        
       | boringg wrote:
       | As engineers in Canada you have a Ritual to Calling which is
       | supposed to be similar to an oath to public safety above all. And
       | to be a professional engineer you have to go through a training
       | period and a final test to be considered. I am mostly talking
       | about physical engineers here (Civil, Chemical, Mechanical,
       | Electrical, etc)
       | 
       | That said - the term engineer (software engineer specifically)
       | has been heavily diluted - same as data scientist - to the point
       | of irrelevance or that it points to some basic proficiency of
       | understanding and capability and not some level of mathematical
       | knowledge. There are lots of exceptions and many people who are
       | highly adept and capable but I wouldn't say that is an accurate
       | portrayal of the entire class of title-holders.
        
         | ghaff wrote:
         | > engineer (software engineer specifically) has been heavily
         | diluted
         | 
         | Oh, it goes way beyond that and has for decades. When I was in
         | the oil business, you saw all manner of job titles with
         | engineer on them like (drilling) mud engineer that people would
         | joke were actually mud salesmen which they basically were.
         | 
         | And the computer company I worked for for a long time used
         | system engineer for a pre-sales role that supported the account
         | reps.
        
       | mrwnmonm wrote:
       | off-topic: if you want to read something interesting about the
       | effects of abstraction, take a look at this
       | https://www.amazon.com/gp/product/B07NS35S76/ref=dbs_a_def_r...
        
       | chiyc wrote:
       | Thanks for sharing! This is a great series of articles I've never
       | seen before. I'm also a crossover as defined here and agree with
       | a lot of the perspectives, particularly about the many
       | transferable skills in part three. I think working in a complex
       | manufacturing environment helped me develop software debugging
       | skills.
       | 
       | I see the licensure argument get brought up a lot. Many people
       | working in "traditional" engineering fields never get their PE
       | because there's just no need in their industry. Sure, that may
       | not make them a licensed "Engineer" in some jurisdictions, but it
       | doesn't make their work any less engineering.
       | 
       | The work done by other engineering fields also varies widely.
       | Looking back on my work as a process engineer, it's honestly hard
       | to say that entailed any more "engineering" than my software
       | position does now.
        
       | d--b wrote:
       | I agree with the conclusion that we shouldn't shut the door.
       | 
       | It would be stupid to not try and take into account the
       | experience of other engineering disciplines, just because "we
       | don't fit the mold perfectly".
       | 
       | Sometimes it'll help, and sometimes it won't. What's interesting
       | is to engage with other people.
       | 
       | I am lucky in that regard to have been trained in a French
       | "engineering school", where I was trained in electrical
       | engineering, electronical engineering, signal processing
       | engineering, computer science, and logistics. People I was
       | trained with work on the electricity grid, others on the noise
       | that care tires make. There is no question that knowing concepts
       | about electricity or control theory made me a better software
       | engineer.
        
       | belval wrote:
       | I highly recommend people read the article before jumping to the
       | comments because it makes several interesting points.
       | 
       | My personal take is that there is no right answer because the
       | definition of engineering is quite wide. Like the author we can
       | argue that some work of the software engineering is indeed
       | engineering (planning, designing, estimating) whereas the act of
       | writing code for a giving feature is more akin to a craft.
       | 
       | That being said, I don't really care and I say that as a Canadian
       | software engineering graduate, as opposed to a computer science
       | major. If you like the engineer title and you want to use it (and
       | it's legal in your country) then you should go for it.
        
         | empressplay wrote:
         | I'd say that if you routinely create new applications or
         | services from scratch and make all of the design decisions
         | (with consultation with colleagues), put them into production
         | and take ownership of them, then you're most definitely a SWE,
         | even if you do pair programming.
         | 
         | If on the other hand you generally implement small atomic
         | changes based on predetermined design decisions not made by you
         | and those changes are signed off by other people and you don't
         | put them into production yourself, you're probably better
         | described as a developer.
         | 
         | I think the distinction is maybe if you're the (an) architect
         | or not?
        
       | pjerem wrote:
       | Nope.
       | 
       | HRs like to write "Software Engineer" on my payroll.
       | 
       | Good if it pleases them and my ego. But I never graduated from an
       | engineering school.
       | 
       | But I do the same mud stacking (that is plugging bricks to do
       | CRUDs) as my fellow "real engineers" coworkers.
       | 
       | I have too much respect for anyone designing mechanical stuff to
       | call our industry "engineering".
        
         | xtracto wrote:
         | > But I do the same mud stacking (that is plugging bricks to do
         | CRUDs) as my fellow "real engineers" coworkers.
         | 
         | That's the problem with the current state of the Software
         | Development field: Most of the work (90% I'd pull out of my
         | ass) can be done by "qualified technicians", what in Germany is
         | called Berufsschule, in Mexico "Tecnico Superior" [2] and in
         | the US I think it may be the result of studying in a Community
         | College.
         | 
         | The work of _Software Engineers_ themselves, that should be
         | doing real Engineering work. To prepare the ground and the
         | "map" for the Technicians to build. It's the difference between
         | an Architect (in an architecture firm) and their armies of
         | interns or technicians (don't know the name in English). Or a
         | Lawyer and also all the people that work for them (interns).
         | 
         | The thing is, that the Software/Computer/IT Engineer degree has
         | been watered down since its inception for 40 years. I think
         | mainly due to the huge demand that the Computing field has had
         | for developers during this time.
         | 
         | [1] https://eacea.ec.europa.eu/national-
         | policies/eurydice/conten...
         | 
         | [2] https://www.sectei.cdmx.gob.mx/oferta-educativa/tecnico-
         | supe...
        
           | [deleted]
        
       | blondie9x wrote:
       | Doubt it. Mostly we chase TC and forget what actually matters to
       | society and the planet as a whole.
        
       | daveungerer wrote:
       | > 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". The arguments
       | against the title tend to be a little more developed, as are the
       | arguments about transcending it.
       | 
       | It's a pity the author didn't go into more detail about why
       | problem-solving is not the key defining characteristic of
       | engineers. Since the author claims this is somehow not coherent
       | enough, I'll share my very strong view that this is exactly what
       | separates engineers from programmers:
       | 
       | Engineers apply technology to solve problems. They are rarely
       | interested in technology just for the sake of it (that's what
       | scientists are for), but rather in what it can do for them.
       | 
       | Most people in our industry today are far from being engineers.
       | Engineers don't pick their technologies based on hype (or more
       | charitably, excitement), and then try to find problems to solve.
       | That's how some companies ended up using machine learning for
       | projects where simpler statistical methods would have sufficed.
       | It's how inexperienced developers fell for MongoDB's marketing
       | and jumped straight to using it without considering whether it's
       | better for their use case than the alternatives. It explains how
       | at some point a ton of companies were using blockchain for things
       | that could have been done with centralised databases (although
       | that one's likely more due to company executives trying to
       | impress investors).
       | 
       | If you're always focused on using the latest thing, you'll always
       | have a solution in search of a problem. Reach for new tools when
       | you have or anticipate a problem that you think might reasonably
       | be solved by such tools. Do that and you've at least inched a bit
       | closer to being able to reasonably refer to yourself as software
       | engineer... if that's your thing - I'm generally not a fan of the
       | title myself, but the engineering mindset is the most important
       | thing I look for when interviewing candidates.
        
       | mkl95 wrote:
       | Modern software engineering is mostly abstraction engineering. If
       | you can build abstractions on top of abstractions and they are
       | profitable, you are probably a good software engineer.
        
       | satisfice wrote:
       | See Discussion of the Method by Billy Koen. He was a nuclear
       | engineer. His definition of engineering was something like
       | applying heuristics to solve problems.
        
       | reaperducer wrote:
       | Glad to see this come up, because maybe five years ago I had an
       | argument about this with a guy at a tiki bar in Vegas during CES.
       | 
       | I don't remember what argument I made (again, because it was at a
       | bar in Vegas), but it was potent enough that he and his
       | girlfriend relocated to another part of the bar. People have
       | surprisingly strong opinions about this.
       | 
       | The term "engineer" has been bastardized over the last 40 years.
       | Housewives became "domestic engineers." Janitors became
       | "custodial engineers." Garbage men because "waste handling
       | engineers." None of them are engineers. If I was an engineer, I
       | hope I'd be more amused than miffed.
       | 
       | But as far as I'm concerned, engineering is a science; software
       | is an art. But it's not like "artist" hasn't been bastardized in
       | recent years. Witness the Subway "sandwich artist." Renoir tosses
       | in his grave. Picasso, not so much.
        
       | poulsbohemian wrote:
       | I did a lot of different things in my career... I definitely saw
       | engineering or at least saw something that was a gateway to
       | engineering, but the challenge was that the vast majority of
       | organizations had incentives that went another direction.
       | Meaning, for most the cost and time to engage in any kind of
       | disciplined behaviors was beyond what they were willing to do. Of
       | course, the argument can be made that if they followed
       | engineering practices it might have _saved_ them time and money,
       | but by and large companies don 't have the _knowledge_ to do
       | things differently. You could argue that 's why they hire
       | software engineers - to show them how to do it right - but my own
       | experiences were that most companies can't get out of their own
       | way.
       | 
       | So, sure - there could be such a thing as software engineering,
       | we could all be software engineers, but in most places we just
       | hack along as programmers trying to hold it together with spit
       | and baling wire.
        
       | maxbaines wrote:
       | Maybe we should Ask Brunel, or perhaps a little more recently
       | dare I say Elon Musk.
       | 
       | https://en.m.wikipedia.org/wiki/Isambard_Kingdom_Brunel
       | 
       | I won't link Elon Musk.
        
       | jrochkind1 wrote:
       | Posted a year ago too -- and thanks for re-posting because I had
       | been trying to remember the title/author of this to find it again
       | and hadn't been able to find it!
       | 
       | https://news.ycombinator.com/item?id=25823907
       | 
       | (Yes, at first I saw Jan 18 2021 and thought it had been
       | published yesterday; but it's 2022 now y'all!)
        
       | sorry_outta_gas wrote:
       | I'm just me
        
       | ggambetta wrote:
       | LOL no. We're artisans and craftsmen.
        
       | FridgeSeal wrote:
       | > Pete McBreen and Paul Graham who say that we are not engineers
       | because engineering cannot apply to our domain. Engineers work on
       | predictable projects with a lot of upfront planning and rigorous
       | requirements
       | 
       | This strikes me as a really silly argument, it has an element of
       | "we're too good for other engineering disciplines ". I don't
       | think it's difference in our specifications, software engineering
       | does still apply the same underlying principles and intents in
       | solving problems.
       | 
       | Admittedly, software engineering has some way to go to reach the
       | same levels of guarantees and rigour, but the fundamentals are
       | there.
        
         | alanh wrote:
         | I think it's less that software programmers are "too good," and
         | more that interesting programming work is too new to have
         | established engineering practices/standards/etc
        
       | mikewarot wrote:
       | Real, actual, Engineers in my home state of Indiana are required
       | to graduate from an accredited 4 year education, and then pass a
       | state administered test.
       | 
       | The reason is simple, professional engineers work on things that
       | would cause loss of life or grievous injury should they fail.
       | 
       | Because of professional licensure, and all it entails, Engineers
       | can give a hard NO to the wants and desires of management.
       | Programmers will never have that kind of clout.
        
       | [deleted]
        
       ___________________________________________________________________
       (page generated 2022-01-19 23:00 UTC)