[HN Gopher] Are We Really Engineers?
___________________________________________________________________
Are We Really Engineers?
Author : nathcd
Score : 108 points
Date : 2021-01-18 17:12 UTC (5 hours ago)
(HTM) web link (www.hillelwayne.com)
(TXT) w3m dump (www.hillelwayne.com)
| ascotan wrote:
| I have seen that a lot of people that now have "software
| engineering" titles that are not doing "engineering of software".
| They're doing network/platform management or some other task that
| doesn't involve the actual design and architecture of software
| systems. ie. it's more of a payscale for HR than an actual
| discipline
|
| Engineers should be able to understand design principles and be
| able to architect a new system from those principles. In today's
| world i think we are moving further away from this than closer.
| We spend much of our time learning trivia such as how to fiddle
| with a particular software platform to get it to work.
|
| Additionally with all the various abstractions that we have built
| (lock-in cloud services, high level languages, proprietary
| platforms, etc) many people are no longer capable of discussing
| with you what is happening on the CPU or how data should flow
| through a system or the disadvantages of a distributed
| architecture, etc.
|
| I think that software engineering is still in it's infancy in
| someways and hasn't yet matured enough to be an engineering
| discipline. That being said there is an egalitarian quality about
| being a "software engineer". We're all software engineers.
| roenxi wrote:
| There is something special about software engineering that
| deserves a bit of thought - the discipline is all of 70-80* years
| old. There are people on HN who are older than software
| engineering.
|
| Engineering is very much about the accumulation of experience -
| the reason all the planning is up front isn't because the Secret
| Society of Engineers said so, but because they are practicing
| something that has between hundreds (electrical, maybe ~200
| years) and thousands (mining, dates back to the stone age) of
| years experience.
|
| In 100 years, software engineers will have an enormous advantage
| over almost all non-engineers at designing and running software
| projects. There'll be a few amateur prodigies that nobody trusts,
| and putting an engineer in charge of software projects will
| mysteriously trigger a lack of things going wrong.
|
| Software isn't unpredictable. Nearly nothing is unpredictable.
| The process of figuring out which bits are predictable isn't
| finished because the hardware keeps changing and forcing the tech
| stack to change. When the S-curve of hardware progress flattens,
| software engineering will gain in importance.
|
| * Changed from 20-30 because that was wrong. Changes none of the
| arguments.
| weff_ wrote:
| >the discipline is all of 20-30 years old.
|
| How do you define software engineering such that it's 20-30
| years old? Why isn't it 50 years old? I ask because I've heard
| the argument that software engineering is a young discipline
| but it feels like you're _really_ stretching it with those
| 20-30 years.
|
| >When the S-curve of hardware progress flattens, software
| engineering will gain in importance.
|
| But a lot of software engineering issues are entirely divorced
| from the underlying hardware. So I'm not sure how the shape of
| hardware has any significant bearing to our current situation.
|
| >Engineering is very much about the accumulation of experience
|
| I would argue that we actually know a ton about how to build
| software. It's just that it's not really being taught or valued
| or applied. I would argue that's an important distinction
| because it strengthens the analogy of electrical engineer vs
| electrician. So it's more about just an accumulation of
| experience.
| spiffytech wrote:
| > But a lot of software engineering issues are entirely
| divorced from the underlying hardware. So I'm not sure how
| the shape of hardware has any significant bearing to our
| current situation.
|
| To play devil's advocate with the other's position, even just
| over the time I've been in software since the early/mid 2000s
| I've seen things shift a number of times as new hardware
| creates new demands from our software or obsoletes old
| development struggles. PC RAM capacities rising 100x from 20+
| years ago, more operations coming over on a slow and flaky
| WAN from untrusted devices, fewer people tolerating apps that
| only work on the tower PC stuck on their desk, more apps
| expected to sync state across devices because they're cheap
| enough we can own a bunch of them, use cases we learned to
| handle with plugged-in tower PCs adapting to power-draw-
| sensitive mobile devices, mobile devices being 1.5GHz instead
| of 16HMz, CPUs becoming fast enough that performance is often
| a footnote concern for whether to implement crypto, dedicated
| AI microchips changing what's possible on-device...
|
| All of these seem like very reasonable justifications to
| rethink the way we build software, to change what's standard
| practice or to invent new tools that solve old problems in a
| modern context. To some degree the clock on when our industry
| starts accumulating stable knowledge won't start ticking
| until these kinds of changes stop happening.
| weff_ wrote:
| >All of these seem like very reasonable justifications to
| rethink the way we build software, to change what's
| standard practice or to invent new tools that solve old
| problems in a modern context. To some degree the clock on
| when our industry starts accumulating stable knowledge
| won't start ticking until these kinds of changes stop
| happening.
|
| But we already have stable knowledge that's simply not
| considered valuable. Your list of changes over the decades
| is of course a change but I don't understand why the
| attitude is "unless things stay stable over the next 30
| years, there's no point in trying".
|
| All those SOLID, agile, TDD, DDD, micro-services memes that
| are being implemented so superficially and cargo-cultishly
| are actually grounded in a real understanding that has a
| context, constraints, and trade-offs. The issue is that
| superficial and cargo-cult application. "Software
| engineers" that decide they're going to do micro-services
| without understanding what it solves, how it solves it and
| what they're trading off. And a business that doesn't care
| or know enough to ask for better. Maybe they don't need
| better! Maybe it's ok to slap together and the product will
| be equally mediocre whether the devs use cargo-cult pattern
| X or not. Maybe the quality doesn't matter that much to the
| business. In which case the devs being hired also don't
| need to actually know that much software engineering. In
| which case maybe the idea of electrical engineer vs
| electrician makes sense here too.
| [deleted]
| canadianfella wrote:
| 20 years old? Are you high?
| Jtsummers wrote:
| While the dead comment is rude:
|
| > the discipline is all of 20-30 years old.
|
| Is kind of silly. The term "software engineering" originated in
| the 1960s, well beyond your range for it.
| VLM wrote:
| "The Mythical Man Month" first edition is 45 years old as a
| retrospective on a decade old development project 55 years ago.
|
| The strongest indication programming is not engineering is
| forgetting and reinventing the past. Also revolutionary tools
| and techniques are invented far too often in CS.
|
| In mechanical engineering we've had screws for a few centuries
| and off the top of my head the most recent innovation in screw
| fastener tech was the creation of the "Torx" screw standard in
| the 60s. The Torx innovation was due to smarter torque
| controlled automatic screwdrivers on assembly lines WRT
| electronic drive tech and early digital control.
| goatinaboat wrote:
| _The strongest indication programming is not engineering is
| forgetting and reinventing the past_
|
| If it was engineering, or even a "profession", experience
| would be prized, instead ageism is rampant.
| ardit33 wrote:
| lets be real, how many versions of the Combustion Engine
| are.... a gazillion.
|
| Gas, Diesel, Turbine, Rotary, in-line, V, Turbo, Carburated,
| SuperCharged, SkyActive-X etc.. etc..
|
| While the basics principles are the same and over 120 years
| old, the Combustion engine has been re-invented and re-
| engineered a gazillion of times...
|
| Maybe some of you guys here are young, but there were cars
| (large SUVs, or Sports Cars), that would consume 8-9mpg, yet
| still be slow as molasses compared to today's cars.
|
| So, yes while the basic principles of the combustion engine
| are the same... but it has been re-engineered (from scratch),
| a many times, and each time it would be slightly better and
| better.
|
| Same with planes, jets, tanks, etc...
| tobmlt wrote:
| Additionally, the process of doing the physical engineering
| has changed drastically -- computational tools, design
| space exploration, optimization methods. (recognizing that
| the grandparent comment stuck specifically to screw-tech,
| but it's interesting to think about physical-engineering-
| innovation in broad terms)
|
| Then there are innovations in manufacturing enabling new
| designs. 3D printing is coming along. Not everybody has to
| pull from a catalog of shapes, thicknesses, etc, for
| structural design.
| chrisseaton wrote:
| > There is something special about software engineering that
| deserves a bit of thought - the discipline is all of 20-30
| years old
|
| 20-30 years? You think software engineering began in 1990 at
| the earliest?
|
| Common production software, GCC for example, is older than
| that.
| xkeysc0re wrote:
| >the discipline is all of 20-30 years old.
|
| You are right that software engineering is a relatively young
| field, but people have tried to apply engineering principles to
| software since at least the Fifties. The term itself was coined
| sometime in the early 60s and was used by the ACM in 1966.
| siva7 wrote:
| I think this question always poses something about status
| insecurity as the old discussion of what makes a "true" software
| developer. Engineering and Software Development share a key
| characteristic which is about inventing and implementing things.
| The key difference is that engineering is fundamentally based on
| applied physics and math where software development doesn't care
| about physics because it's an already solved abstraction in this
| discipline.
| Buldak wrote:
| I think you're right about the underlying concern about status.
| My sense is that people in this discussion are really asking
| whether software engineering is just easier than mechanical or
| chemical or aerospace--or whatever--engineering. That's also
| why I don't think calls for certification standards really
| address this concern (you can just as well be certified to do
| something easy).
| siva7 wrote:
| the absurdity of the question becomes clearer if you start
| thinking about the right tool for the job. if you need to
| invent facebook you don't start with reinventing the wheel
| but with applying software development. it's the right
| abstraction for the job. and no sane mind would claim that
| serving content to billion users a day is an easy task but in
| the end it's just software.
| iphorde wrote:
| This is the dumbest debate next to using 2 spaces or 4 spaces.
| The word engineer can be traced back to ingenium, the person that
| operated a ballistic siege weapon. Ingen in Latin means in and
| out. If you put something in, you get something out.
|
| Over time, this went from the person operating a machine, to
| someone building the machine, yet the person that operated it was
| still called an engineer. This continues today. Engineers in
| transportation have nothing to do with design. It is about
| learning a process.
|
| As an engineer, who holds IEEE certification, and certified with
| the State Board of Professional Engineers, my field of study was
| Computer Science and Mathematics. I do not hold a degree in
| engineering. Yet, I was able to pass the certifications. The
| state certifications are a joke, and I'm not paying stupid yearly
| dues to continue that nonsense. This is about politics.
|
| The certifications are protection mechanisms for gatekeeping
| jobs. Not quality control. We now have standards to help with
| that. For instance, ISO.
|
| These titles are outdated, and stupid, and are hold overs from
| the European caste system which everyone hates, but for some
| reason people continue to relish with wanting a title. If you
| want the caste system to continue, please make the title engineer
| more important than it is.
|
| If you hired for a job, who cares what your title is. It doesn't
| matter. Just get your job done the right way, make sure adequate
| testing is done, quality controls are in place, and move along.
|
| To the person that said engineers go to prison if they're product
| is defective, I would like to meet that person. Elon Musk's cars
| catch fire, have killed people, but last time I checked, no
| engineer went to prison.
|
| If a person that operates a train can be called an engineer
| (requires 10 days of training, a GED, not kidding), then a person
| that operates a computer can be called an engineer.
| jgwil2 wrote:
| I like the author's conclusion and I think a good litmus test for
| the difference between craftsmanship and engineering is the
| adage, "If you're not taking measurements, you're not doing
| engineering." So when we systematically measure and improve
| performance, security, productivity or what have you, we are
| doing engineering.
| mrbill29 wrote:
| No, because when software "engineers" are told to build a bridge,
| two weeks before the bridge is set to open, the dependencies
| change because they found out no one was using the bridge, so now
| it's a train bridge. Also instead of going over a river, it's
| going over a highway, also it's 1/3rd the length. Just need to
| change some function calls right?
| esoterica wrote:
| Who cares? "Real" engineers love to gatekeep the term because
| they think there's an aura of prestige associated with the term,
| and they think that software developers calling themselves
| engineers are trying to steal valor. But in the present economic
| environment where fake engineers can make much more money than
| real engineers, why would anyone want to pretend to be a real
| engineer?
| letitbeirie wrote:
| My degree is in mechanical engineering but I've been working in
| software for 4 years now but I worked on industrial control
| systems for a number of years before that.
|
| My answer: to an extent. Broadly speaking, software engineers do
| _basically_ the same thing that "real" engineers do - learning
| patterns and applying the useful/applicable pieces to the problem
| at hand.
|
| The fundamental difference that separates software engineers from
| the rest is the consequence of failure and the culture of caution
| that comes with it.
|
| If you're working on (non-embedded) software and you ship broken
| code to prod, chances are your consequences range from
| embarrassment and some angry emails on one end to a major
| financial loss at worst. With most other engineering disciplines,
| the cost of a screw-up _starts_ with a major financial loss and
| worst case? Honestly the sky is the limit. Fatalities,
| environmental ruination, loss of critical infrastructure, you
| name it - there are enough case studies on industrial horror
| shows to keep you up for the rest of your life, and in
| engineering school we had to read a lot of them.
| watermelon59 wrote:
| Sorry for going off a tangent here, but when you say you got a
| CS degree after being a mechanical and energy engineer, do you
| mean you went back to university for a full undergrad in CS? Or
| was that a Master's?
|
| I've been thinking of going back to school to go the opposite
| route (CS -> engineering, probably aerospace), but I have no
| idea how to go about it or how to estimate how much cash I
| need.
| oh-4-fucks-sake wrote:
| I'm a bit of a centrist here:
|
| I think of software lies somewhere nebulously between
| craftsmanship and engineering.
|
| There's a flavor of pure craftsman/artisan that can make an
| excellent product with overall little "technical" knowledge. A
| traditional potter works much on instinct, texture, feel. He
| might know how to select a clay by color, not knowing or even
| thinking about the constituent minerals. Water is added in eye-
| measured doses.
|
| Then, there's a flavor of pure engineer that executes most of his
| tasks in structured, industry-prescribed, formally-verified,
| deterministic ways. Particle aerospace engineers are the extreme
| in this category--they're a slave to the formal methods that rule
| their design, build, and test processes.
|
| But we software "engineers" float back and forth between the two
| --and all the time. One minute, we might hacking together a
| throwaway script that checks if Amazon has toilet paper. The
| next: writing a test for a rules engine that tests every corner
| case in a truth table. Or proving that some algo runs in O(log n)
| time.
|
| Most craftsmen/artisans lie somewhere on this spectrum, but I
| feel we software "engineers" wobble around a large swath.
|
| So, call us software engineers, call us software craftsmen--they
| both apply.
| rdiddly wrote:
| Look, do you use
|
| _specialized knowledge_ or _techniques_
|
| to _design things_ ,
|
| to achieve or cause a specific _outcome_
|
| within certain _limits_ or _constraints_?
|
| Then you're doing engineering. Whether to call yourself an
| engineer, well in the absence of a formal certification program,
| that's gonna be up to you and/or your employer. Former
| civil/structural here (that's the bridge-building one, and as far
| as I know, the most stringently credentialed/licensed).
|
| It's helpful to remember that "engineer" comes from the French
| _ingenieur_ which is also the source of the word "ingenuity." So
| an engineer is sort of an _ingenuity-izer_ if you will. If you
| trace it back further, you get to the Latin _ingenium_ (engine),
| of which the "genium" part comes from _gignere_ (basically to
| cause something) which gives us "engender" and "generate" and
| "progeny" so you see there's a creative aspect too.
| GIFtheory wrote:
| My take is that engineering is essentially the use of
| predictive models to solve design problems. I think the general
| trend is that the more accurate and universally accepted the
| models are, the more 'engineery' a particular discipline is.
| EEs use models of circuits and devices. ChemEs use models of
| chemical reactions. MechEs use models based on physics.
| Financial engineers use models of options pricing, etc. Optical
| engineers use optics.
|
| So, similarly, SWEs are engineers to the extent that they use
| widely accepted models to solve design problems. People
| building compilers, databases, or OS schedulers might be called
| engineers, because there are relatively well accepted (but
| evolving) models of the performance and capabilities of those
| things---although those models are perhaps less universally
| accepted than say, Newton's laws. Hacking, on the other hand,
| is not engineering, because it is not backed by something like
| a well-understood model. It therefore tends to command less
| respect, as the output of such activity is less certain--since
| there is no good predictive model to judge whether that
| activity will achieve the goal.
| sys_64738 wrote:
| No, we're not. We are software developers who are indemnified
| from being responsible for our bugs. Real engineers go to prison
| for their bugs.
| deanCommie wrote:
| We need a button to flag posts as "Clearly just responding to
| the headline and didn't read the article."
| dilyevsky wrote:
| Clearly you never owned a german car or a tesla. I doubt anyone
| went to prison for those
| Conlectus wrote:
| The moral differentiation is one the author talks about a lot,
| because it's the usual reaction.
|
| That said; which engineering field are you basing this on? I
| thought that generally only lead engineers or architects were
| responsible in that way.
| tobmlt wrote:
| Not sure if this is hyperbole, but usually bugs are caught
| elsewhere in the design spiral. If caught early enough, this
| results in a chewing out at worst (I had a bad first job). If
| caught late enough, this results in a law suit. (Seen it happen
| from afar)
|
| If you try to hide your bugs, paper over them, and somebody
| gets killed... that's where the crime comes in... Looking at
| you Boeing.
| speedgoose wrote:
| I doubt any engineer at Boeing will go to prison for the
| engineering of the very deadly Boeing 737 max.
| [deleted]
| bsder wrote:
| The one thing everybody seems to forget is that the term
| "engineer" generally means "liable."
|
| Do "software engineers" _really_ want to be liable for software
| bugs? That 's what you're asking for.
| jjk166 wrote:
| I'm a mechanical engineer. Not every software developer is an
| engineer in my book, but many if not most are.
|
| Engineering is a method of problem solving: accomplishing goals
| within a specified framework by using your understanding of the
| situation to identify constraints and predictably satisfy
| requirements.
|
| To translate that into something more clear: if you can quantify
| what you're doing, and within some range you know you'll succeed
| and outside that range you will fail, you are doing engineering.
| If you're regularly doing engineering, you're an engineer.
|
| If you regularly find yourself saying "we need a server response
| time of less than x" or "we only have y amount of memory to work
| with" or "this layout reduces churn by z%", you're doing
| engineering. Even if the numbers are only implicit (for example
| saying it has to run on a phone is just a standin for it has to
| meet the quantitative requirements to run on a phone) it still
| counts.
|
| There are plenty of software developers who are more artisans
| than engineers - they don't think in terms of satisfying
| requirements and what is "good enough" but rather in qualitative
| terms. Perhaps they are more interested in how their software is
| made than what it actually accomplishes, or perhaps they aren't
| really trying to accomplish anything specific and are more just
| hacking for its own sake. If nothing else, plenty of software
| developers simply don't question why they are doing something in
| a given way, deferring to past experience or taste over
| understanding. Note that in many situations, the artisanal
| approach is perfectly valid, though in cases where predictable
| and optimized solutions are really necessary, an engineering
| approach is really warranted.
|
| Also note that no one exclusively engineers. Just because you're
| not doing engineering right now doesn't mean you never did in the
| past nor never could in the future. And vice versa, just because
| you're an engineer at the moment doesn't mean you can't
| occasionally apply an artisan's touch.
| kissgyorgy wrote:
| No, we are not! I just wanted to tweet today, that "Software
| Development is NOT Engineering it's ART."
| fjabre wrote:
| This is just silly. Lots of hubris here. It's also silly to spend
| much time thinking about this.
|
| Of course we are engineers. OP uses "building a bridge" as an
| example of 'real' engineers. This is patently ridiculous on the
| face of it.
|
| The one thing that unites us is we like to build. Whether it's
| the great pyramids or the latest social network, engineers are
| the ones who get it done.
|
| We build. That's what engineers do. We build something to solve
| some problem whether it's with bits and electrons or with larger
| physical mediums like slabs of concrete. Engineers are builders
| and they build to solve some particular use case.
|
| "Scientists build to learn. Engineers learn to build"
| Conlectus wrote:
| I believe the comparisons between how engineering is practiced
| make this more than "silly". The purpose of the writing is not
| to answer that shallow question, but to better understand both
| fields.
| fjabre wrote:
| When OP said that we are not 'real' engineers because we have
| not built a bridge is when I stopped reading. For how could
| anyone take him seriously after that?
|
| 'Real' engineers are not judged by whether or not they can
| build a bridge as if it's some rite of passage to being a
| real engineer. That's ridiculous on the face of it.
|
| That he used this example as some kind of proof to justify
| his argument is where he lost me.
| andrewchambers wrote:
| No need to tell us again about your lack of reading
| comprehension.
| fjabre wrote:
| Who is 'us'? I'm speaking directly to you.
|
| Seems like you're just interested in name calling. When
| people resort to name calling it usually means they've
| lost the argument.
|
| But I'm sorry you're having a bad day.
|
| I'll leave it that. Thank you and take care.
| leapis wrote:
| "Of the 18 crossovers I talked to, 16 said yes."
|
| I'm just as surprised to see the number be this high. I can't
| help but wonder if this might be due to survivorship bias:
| crossovers are, after all, self-selecting. Perhaps not all
| engineers would say the same, if forced to swap roles.
|
| Regardless, I'm excited to hear more from these crossovers. As a
| (soon-to-be) recent graduate, I think there can tend to be a
| great difference in perception between CS students and
| Engineering students, particularly at institutions without
| rigorous CS programs. Many tend to view CS students in the same
| way that some CS students view bootcamp students- people
| motivated by an "easy path to success". I've found this opinion
| is rarely held of engineering students, given the reputation of
| engineering programs. I think it's very useful to profile the
| motivators, mindsets, and general attitudes between the
| disciplines, if only to see that perhaps the difference isn't as
| large as one might assume.
| syntaxing wrote:
| MechE here so my thoughts can be biased. It's high because of
| two reasons. One the pay is typically much better (upward of
| 20%-100% (yes 100) better) and secondly the "crossover" barrier
| is much lower compared to other engineer mobility. For instance
| I would argue, a MechE becoming a SWE is easier than a SWE to
| become a MechE since companies are opened to SWE not having a
| specific degree in it.
| analog31 wrote:
| I wonder if there might be a technological barrier. My degree
| is in physics, so I depend on mobility for any hope of
| employment. ;-)
|
| It was easy to learn programming. One reason was that the
| tools were always relatively cheap (even when they cost
| money), and the cost to learn by trial and error was
| negligible. At least this is true for the basics. Becoming a
| good programmer who can be an asset to a large project is
| outside my wheel house, though I'm in the process of
| learning.
|
| Today, for mechanical design, you at least need access to
| SolidWorks, and the part of learning that comes from
| experiencing failure is costly and time consuming. Surely 3d
| printing is changing that equation, but not overnight.
|
| But you can test the waters of programming without asking
| anybody for permission, and if you discover that you hate it,
| then you can just bury it.
|
| Now, programming and mechanical design by themselves are not
| _engineering,_ but if someone wants to get into a new skill
| through the back door, they are similar. A person with
| SolidWorks skills can be useful as a designer without being a
| full blown engineer.
| tobmlt wrote:
| The answer is a clear yes in my case, but I work on commercial
| numerical design and analysis software. The interleaving of
| computers and engineering entailed here makes a hard case that
| there is not an absolute "no" available. But computational
| software is a corner case, I know. (sigh)
|
| We certainly view our pure CS people as experts in what they do
| -- and the things I see them do are, e.g., build out cloud
| based versions of our product, add new GUI features, automate
| build and test systems (until management tries to replace them
| with us... a dubious proposition at best). That's just the
| stuff I see day to day, since it's most closely tied with us on
| the numerical side. Why wouldn't that be engineering? I could
| speculate but I don't care to. We are all working to make the
| product the customers want.
| fancyfredbot wrote:
| I tend to think of engineers as people who apply scientific and
| mathematical techniques to solve real world problems. Clearly
| some programmers do these things, but equally clearly some
| programmers do not! Why would you expect a yes or no answer?
| VLM wrote:
| I thought it kind of odd the author asked randos off the street
| to define "engineering"
|
| Back in '47, the ECPD, which later more or less turned into the
| ABET, used the definition:
|
| "The creative application of scientific principles to design or
| develop structures, machines, apparatus, or manufacturing
| processes, or works utilizing them singly or in combination; or
| to construct or operate the same with full cognizance of their
| design; or to forecast their behavior under specific operating
| conditions; all as respects an intended function, economics of
| operation and safety to life and property."
|
| It would seem programming-type-stuff is more of a technical craft
| than an act of engineering. Ideally on the best days on projects
| of small scope, programming can approach engineering levels of
| rigor.
|
| The tolerance for bugs is vastly higher in programming than in
| structural steel engineering, for example. There are no valid
| statistical analysis techniques for programming to reliably
| predict quality of code, although infinite conflicting opinions
| exist alongside some rather trivial rules. Some "full stack"
| types approach full cognizance of their design; but its rare
| outside narrow areas like embedded or device driver designers.
| Economics of operation is usually hand waved away with "moores
| law" and "batteries always get better over time", and
| environmental impacts (aside from mere greenwashing and virtue
| signaling) are ignored. Engineers use reliable and predictable
| statistical process control methods to ensure mass produced parts
| work together under a well defined standard, programmers are like
| "here's a URL to the docs for the API from a couple versions ago
| best of luck to ya".
|
| I'd say on the technical continuum that programming is very much
| like village blacksmithing. Somehow in general the horses get
| horseshoes but its not cheap, efficient, safe, clean,
| predictable, or fast.
|
| The future being distributed very unevenly, I'd predict we'll see
| the first widespread "real engineering" of computer-stuff appear
| in corporate IT departments probably revolving around statistical
| analysis of cloud computing.
| 8note wrote:
| Mechanical engineering has specifications for "bug" tolerance.
|
| These are manufacturing tolerances and safety factors.
|
| Unless you're testing the piece of steel you're bout to use,
| you don't _really_ know that it 's yield strength is what the
| box says. Similarly, the welding might be done by an apprentice
| with a bad teacher, and during maintenance, the repair guy
| might run out of a certain bolt and use a different one with a
| washer.
| hn3333 wrote:
| Not sure if it applies to engineers, but there's a difference in
| the job description between defining and implementing. Sometimes
| someone knows some theory, does some math and is done. And his or
| her result is passed to another person that implements it.
| Sometimes it's the same person doing both, but probably less
| often. Sometimes the implementer grows and starts putting down
| some ground rules (becomes an architect) or the other way round
| (for example there because might be more jobs for implementers).
|
| Perhaps another distinction is between trying something and see
| if it works, and knowing it will work (or won't work) before it's
| implemented. Then the difference is between knowing from
| experience and knowing from having studied the theory (and having
| worked through the proofs).
| blackcats wrote:
| You can name anything you want, the career is not a protected
| name. Software directors? Code artists? Byte doctors? Anything's
| possible, nobody cares
| 7thaccount wrote:
| My own personal views (electrical engineer who deals a lot with
| software and who codes a lot) are that you can find people that
| can do engineering work without an engineering degree today. A
| lot of that stems from powerful software that abstracts away much
| of the math. So you can load a model into a vendor's product and
| run transmission load flows without much formal training.
| However, if you haven't taken any circuit classes, complex power,
| calculus...etc, you're never going to truly understand the
| results of what you're doing and the end results will suffer in
| quality. That's why engineers are generally hired (assuming a PE
| license isn't required) instead of anyone with a 4 year degree.
| Before computers, a lot of that would be done by hand (at least
| the calculations that were feasible at that time) and you would
| pretty much have to have gone through an engineering, physics, or
| math program to have those kinds of chops.
|
| Software is different in a lot of ways. Especially at the high
| level, you are solving a puzzle. Let's say you need to generate a
| report. You've got all the tools in your language and several
| libraries. You know you'll have to talk to a database, pull down
| data into some kind of data structure, open a file handle, write
| the data, close the file, and save the results somewhere and then
| send an email. Is it technical? Yes. Challenging, well...maybe
| not this example, but software can be very challenging yes. But
| is it engineering? I wouldn't call it that. And no, I'm not
| sneering at it, or calling engineering superior. I just see the
| two as very different.
|
| The stuff you do in engineering school (calculus, differential
| equations, statistics, linear algebra, circuit analysis, signal
| processing, Fourier transforms, control theory...etc as tools to
| solve problems with radio, industrial machines, turbines..etc)
| has pretty much zero to do with web design, standard business
| apps, databases, compilers...etc. If you use engineering as a
| general term to mean "make technical stuff" than you could apply
| it to either field equally, but engineering has already had a
| definition for many years and software is it's own thing. So use
| the term "coder", "developer", "programmer", "hacker",
| "complexity guru", or even "software engineer" as they all make
| sense. But the general term "engineer" would apply to mechanical,
| electrical, chemical, industrial, civil, biomedical...etc. All of
| those fields have the same core math classes and they then
| usually share an intermediate set of classes (thermodynamics,
| dynamics, statics, circuits...etc) before the advanced classes
| which specifically apply to your field. I don't think a very high
| percentage of coders (amazing, technical, often better paid, and
| very valuable as they are) have an overlapping lineage and
| language with what you would think of as traditional engineering.
| Believe me when I say I'm not gatekeeping the term either. I just
| honestly feel like there these things are taxonomically
| different. Maybe a new single word term should exist to convey
| what software developer does with two words.
| zaptheimpaler wrote:
| More specific questions can be readily answered - is software
| engineering as demanding of perfect execution as other
| engineering disciplines? are software engineering projects
| completed on time more/less relative to other disciplines? does
| software engineering require formal certification to practice?
| does it have a component of skill in that people who put in more
| time or have more aptitude do better than others? is it more
| critical or less critical to
|
| But the "are we really engineers" question, like many others
| about definitions is destined to go in circles IMHO. Most
| important quote from the post:
|
| > It's a standard Wittgenstein game problem: human constructs do
| not neatly fall into precise definitions.
|
| The actual debate seems to be around social status.. are software
| engineers as high up the social status ladder as "real"
| engineers? I don't know/care. Play stupid games, win stupid
| prizes :D If software engineering stays a sufficiently selective,
| high-paying, important field for long enough, it will gain the
| prestige to be considered "real" engineering. Otherwise it will
| not.
|
| I think it will become both - more bifurcation. The top salaries
| & status will be reserved for 1/10th of the engineers. A lot of
| the bottom will become lower paid and more automated, closer to
| technical support.
| renewiltord wrote:
| The enduring popularity of this question baffles me. I get it:
| other people like other things. But is it an idle enjoyment or is
| it something that helps conclude other things?
| Barrin92 wrote:
| It helps clarify to what standards software is supposed to
| adhere. As the author points out, the key feature of
| engineering is building to specification. Engineers have formal
| processes, standards, fault tolerances and expectations.
|
| The people who write software for a space-shuttle do
| engineering work, your average app store app is likely not
| 'engineered'.
|
| I think it matters because it says a lot about how seriously
| the software industry as a whole takes the quality of its
| products and to what standards we hold software and with what
| goals in mind we make software. If we treated software like
| engineers treat aircrafts we'd likely have a lot less of it,
| but what we had would probably not crash that often.
|
| The debate is tied to the debate about why so much software
| today feels so terrible and bloated and that makes it
| relatively important in my opinion.
| renewiltord wrote:
| Fascinating. Thanks for sharing your perspective.
| cs-szazz wrote:
| This question gets more complicated in places like Ontario,
| Canada, where the term "engineer" is actually protected. To call
| yourself an engineer in a professional setting, you have to be a
| member of the Ontario Society of Professional Engineers. Of
| course in practice, they choose not to go after people who call
| themselves engineer vs developer, but perhaps that will change in
| the future.
| toast0 wrote:
| Yes [1], my degree says Computer Engineering; so prima facia,
| that's what I am; I suspect some of my job titles said as much
| too, but job titles are easier to fake than degrees. I'm sure as
| anything not doing science. I bash on computer systems while
| they're running with whatever implements are near by; just like
| the people who run train engines do. Maybe that makes me a
| mechanic, but I feel like there's a distinction because there's a
| lot of original design in addition to fixing and modifying the
| work of others.
|
| [1] Not in the State of Texas; I'm not licensed, and don't intend
| to be.
| canadianfella wrote:
| Train engineers are not engineers and they are not mechanics.
| dropit_sphere wrote:
| "Engineer" sounds like kind of a moving target. The only "real"
| engineers design...engines. So it's worth asking what the actual
| value is of "engineering."
|
| In my mind, there are two: making stuff, and tolerances.
|
| Making stuff is magic. Most people reading this can sit down at a
| computer and formalize an idea such that the computer can do it.
| Most people can't do this. It is valuable for the same reason the
| ability to design a car or escalator or rocketship is valuable.
|
| _Tolerances_ is all about providing certain guarantees about the
| stuff you make. I think most developers _could_ hit those
| guarantees...if they were ever verbalized. What, you want me to
| decrease memory usage by 50%? Actually, I probably _can_ do it.
| At the very least, I can point you some academic papers as to why
| it 's impossible.
|
| But nobody has ever asked me to do that, ever (except in
| interview questions). I suspect my experience is common among
| developers.
|
| So, from a "making-stuff" perspective, yeah, we're engineers.
| From a "tolerances" perspective, most of us aren't, but wouldn't
| have much trouble becoming them. It's just that no one actually
| wants that.
| [deleted]
| totemandtoken wrote:
| Mechanical engineer who worked as an energy engineer before
| getting his CS degree speaking here, but I'd tentatively say yes.
| I don't have a whole lot of experience using my CS degree yet but
| the main difference between a software developer/SWE/programmer
| and a hacker is the amount of paranoia that goes into making
| something. If you are a good software engineer, you've tested and
| verified everything and you've made sure there little to no risk
| to your end user. If you don't you're a hacker.
|
| Not to look down on hackers, but the main reason I think this
| whole question exists in the computer side of the world but
| doesn't exist for mechanical engineers is that there isn't the
| hacker/engineer dichotomy in "traditional" engineering. Maybe
| makers vs mechanical engineers counts, but almost all of the
| makers I knew were employed as engineers.
|
| A good software engineer/developer and a good "traditional"
| engineer take the time to think through every edge case, every
| corner case, and any other case that might cause problems.
| Makers/Hackers just get to the first thing that works, damn the
| consequences for anyone else. Which is fine because often the
| only people using their product is themselves.
|
| Just my $0.02
| tobmlt wrote:
| Computational software engineer with physical engineering
| qualifications here -- we better be engineers on both sides of
| the divide! I suppose I don't really count though, as far as
| the question goes, since the software I write is used for doing
| physical engineering, and is a tiny fraction of software
| development, etc.
| robocat wrote:
| I suggest you avoid using the word hacker, as to me you are
| using it in a negative sense, while missing that a good hack
| can be excellent engineering. "Hacker" contains a wild variety
| of behaviour and skills. The concept is too amorphous and
| people have wildly disagreeing meanings associated with the
| word (the meaning is very audience and context sensitive) so it
| is difficult to use the word as a proxy for the sense you
| wanted to convey, in a discussion with a wide audience.
|
| Edit: I am suggesting hacker is a loaded/confusing word that is
| definitely not the opposite of engineer. Good engineering and
| good hacking are compatible - the right temporary fix can be
| excellent engineering. Cowboy ([?]hacker) mechanical and civil
| engineers exist, so the concept of hacking is not incompatible
| with engineer. Using the word hacker intrinsically includes the
| concept of software, so contrasting hacking and engineering is
| not a tidy argument.
| Thorentis wrote:
| I would go out on a limb and say the negative connotations
| are correct in most cases and usages. E.g.
|
| "I'm just going to hack something together." (usually means
| do substandard work but with the benefit of speed)
|
| "It works, but it's a nasty hack." (a workaround that might
| be clever, but isn't necessarily safe, testable, or
| repeatable).
|
| A "hacker" in the sense that GP is using it means somebody
| who's default method of working involves doing the above on a
| regular basis.
| Groxx wrote:
| tbh I think it's fine, this site is literally named "hacker
| news". they're using the term in roughly the same way.
| [deleted]
| CamperBob2 wrote:
| Did you design some software or hardware? Did somebody pay you
| for it? Congratulations, you're an engineer. That, plus $4, will
| get you a cuppa joe at Starbucks.
| na85 wrote:
| Aerospace engineer who dabbles in code here: I've seen a lot of
| these articles and they always miss what I feel is the central
| tenet of engineering, which is the ethical piece.
|
| I've said it before on HN and I'll say it again: Engineering is a
| social process, not a technical one.
|
| It's a social process because society has certain expectations of
| the people who design bridges and skyscrapers and cars and
| toaster ovens. By certifying a design you as the engineer are
| making a representation to society, not just that you are trained
| but also that you have conducted yourself in an ethical manner.
| You are making a representation that, for example, you did not
| cut corners just to save your employer money, or that you sought
| fair compensation for your work (so that you are properly
| motivated to carry out your due diligence), or that you didn't
| opt to use $fancy_new_but_not_proven product merely because the
| manufacturer took you out to the strip club.
|
| Conversely, when engineers screw up then society rightfully
| demands that there be consequences whether punitive or remedial.
| This is why engineering isn't just a job but a Profession, that
| is to say Engineering as a field is self-governing. Professional
| Engineers are accountable to their fraternal orders (regulatory
| bodies) who are themselves accountable to society.
|
| Given limitless time and money, anyone can design a bridge that
| will stay up. But only a properly trained engineer can design a
| bridge that will _just_ stay up, and therein lies the difference
| between a software engineer designing and maybe implementing code
| that will fly on the Space Shuttle versus me slapping together
| some javascript for my personal website. The latter is not
| engineering just because I 'm an engineer.
| root_axis wrote:
| You can approach the creation of software as an engineering
| problem, but what's unique about software is that you can still
| produce useful software even if you don't. If there are budgets
| and deadlines and guarantees to be considered then you need
| engineering.
| tofuahdude wrote:
| `This is an important question...`
|
| It really isn't.
|
| The definition of engineer is "a person who designs, builds, or
| maintains engines, machines, or public works."
|
| We're building software engines, machines, and public works. Just
| because we're applying it for the software incarnation of the
| concept doesn't break the definition.
|
| This is getting silly.
| weff_ wrote:
| That's _a_ definition of engineering.
|
| How isn't that like claiming you're a chef because you have a
| catering company where you serve microwaved foods, and claim
| it's silly to try to distinguish degrees of cooking skills.
| robocat wrote:
| Why does every person who pulls out a dictionary use a
| definition that looks like it came from a century old
| dictionary? Words change meaning over time. There were
| computers a century ago.
|
| By the definition you gave, no one can be a chemical,
| industrial, or electronic engineer. Silly!
| Conlectus wrote:
| It may be an important question because answering it requires
| dissecting the similarities and differences between software
| development and the jobs that people usually call
| "engineering".
|
| In doing so, we see what lessons there are to take from each
| other, and gain a better understanding of both fields. For
| example, the author cites that version control is an innovation
| that traditional engineering could hugely benefit from.
| ssivark wrote:
| I think the difference between craft and engineering is whether
| the knowledge is systematized (not binary, but on a continuum).
|
| Can decisions be motivated by clear objectives and rigorous
| deductive reasoning, which are useful to validate the design
| process and also to clearly communicate what is being done and
| why?
|
| A lot of conventional software "knowledge" is too hand-wavy &
| wooly (not to mention fad-driven) to pass that threshold, imho. A
| lot of software platforms/infrastructure we use is the way it is
| for fairly arbitrary historical reasons, quite apart from the
| fact that many domains where software is applied are quite hard
| to parametrize rigorously. There are islands however, where the
| design is fairly rigorous and could be considered closer to the
| spirit of "engineering". But the most important input for a craft
| to mature into engineering is time and rigorous effort.
|
| Either ways, I don't see this question mattering too much in
| immediate practice.
| lwansbrough wrote:
| In Canada the title "engineer" is a legally protected term. You
| can't legally call yourself a software engineer without going
| through the Engineers Canada accreditation.
|
| I had a friend question me for calling myself a software engineer
| (even though they referred to themselves as one.) I've been
| programming for 15 years (8 years professionally) by 26 but they
| were unemployed and not practising after getting their BSc.
|
| So in my opinion, there's more charlatanism coming out of
| academia than from honest professionals who have established a
| career and deep knowledge of their profession. But then again,
| I'm not building dams and bridges. So the answer mostly depends
| on what you're doing and how you got there.
| robertbalent wrote:
| However, this is not enforced at all for software engineers.
|
| So in lot of companies the official title is software engineer
| even without any accreditation.
| Humdeee wrote:
| Is there a source on this? I thought this was for specifically
| for "Professional Engineer" status. If not, myself (3 year
| college program grad) and many, many others are not what our
| current titles are as given by multiple employers.
|
| I've asked many times even on these forums and have yet to get
| a credible source on this. I've been officially "called" sw
| engineer as per job title for roughly over a decade with 4
| different large employers. I've never given this premise much
| credibility because of that, and perceive it to be wishful
| gatekeeping. I am hoping for some kind of clarification
| however.
|
| I'd like to retire one day being able to say I've built a 40-50
| year career while being a living, breathing lie. That makes me
| chuckle. =)
| freshpots wrote:
| https://engineerscanada.ca/frequently-asked-questions
|
| "An engineer is an individual who has been issued a licence
| to practise engineering by a provincial or territorial
| engineering regulatory body after demonstrating that they
| have the requisite education, skills, knowledge and
| experience. An engineer is sometimes referred to as a
| licensed engineer, a registered engineer or a professional
| engineer."
|
| Professional engineer and engineer are both functionally
| equivalent and protected. You can't legally have the term
| engineer in your title in Canada unless you are an accredited
| engineer and pay your dues.
| Khaine wrote:
| Gatekeeping is the entire point of professional bodies, and
| certifications. It is suppose to show that people with those
| qualifications have sufficient skill and experience to do the
| role.
|
| This is one of the many problems with IT. I've interviewed
| many people with IT Security certifications who cannot
| explain the difference between encryption and hashing.
|
| On the flip side, it is one of the great things about IT,
| that you don't need to go to university to get a job.
| rhodozelia wrote:
| >Can a person with an engineering degree call themselves an
| engineer in Canada?
|
| >No. Individuals with an engineering degree are known as
| engineering graduates, and a licensed engineer must take
| responsibility for their engineering work.
|
| https://engineerscanada.ca/frequently-asked-questions
| hollimolli wrote:
| Wonder whether it has the same impact on salary like the common
| IT certifications (see e.g. https://www.forbes.com/sites/louisc
| olumbus/2020/02/10/15-top...). Otherwise it's just a waste of
| time.
| dctoedt wrote:
| > _In Canada the title "engineer" is a legally protected term.
| You can't legally call yourself a software engineer without
| going through the Engineers Canada accreditation._
|
| Same in Texas. [0]
|
| [0] https://pels.texas.gov/downloads/eb17.htm (search for
| "Software Engineering")
| RupertWiser wrote:
| I don't like to call myself a software engineer just because of
| how contentious the term is. But I will admit that I do feel
| somewhat more _precise_ at my current job than I was at my
| previous.
|
| I used to work in an agency and we would charge by the hour so
| you needed to find a safe space between speed and safety. I wrote
| some nice, and some not so nice code there.
|
| I now work at a much larger company and the environment is vastly
| different. We focus heavily on metrics, are very careful with
| testing, make sure to design design components, security reviews,
| and have plenty of documentation.
|
| I really do wish software engineering could be used as the term
| to identify this kind of environment where it's not just about
| the code, but about all the stuff you do around code to ensure
| it's safe.
| sombremesa wrote:
| I have a degree in Software Engineering and NOT CS. I had to
| teach myself a lot of core CS, largely for interviewing in the
| industry which is full of CS majors and people with myriad
| unrelated degrees (or no degrees).
|
| You can't call yourselves 'hackers' and 'engineers' at the same
| time. (I mean, you _can_, but talk is cheap)
|
| That's not a bad thing by a long shot. There's a time and place
| for hacking as there is for engineering.
| [deleted]
| saberdancer wrote:
| I'm not sure what the big deal is. I've finished my studies and
| got a title that includes "software engineering".
|
| Even with that title, I don't think it's a big deal if someone
| who didn't get the same title calls himself an engineer. Talk is
| cheap, but if you can create systems you can call yourself an
| engineer in my opinion.
| Enginerrrd wrote:
| This right here is the major difference between software and
| actual engineering. I studied and got a 4 year accredited
| engineering degree and I have been working in civil engineering
| for 7 years, but, I am not YET an engineer. I don't yet have my
| license to independently verify and stamp designs. I've passed
| most of the tests required to do so, but I've got another one
| to do. In most jurisdictions in the US, there is a 4 year
| minimum training period AFTER school, where you must train and
| apprentice under an engineer before you can apply to take the
| tests. They go through that application with a fine toothed
| comb. To get authorization for that last test, I had to send in
| sealed recommendations from 4 different licensed engineers
| familiar with my work where any one of them has the opportunity
| to basically say "no, this guy isn't ready" without my
| knowledge.
|
| What is lacking is an understanding of the ethics, duty and
| responsibility to the public that is hammered into the
| conventional engineers on day one. It starts with subtle
| things... In school, we had very strict standards for report
| formats. If you screwed up something (like putting a figure
| title above a figure instead of below, or vice versa for a
| table) you got ZERO credit for that report, regardless of how
| much of your grade it counted for. If you misreported the
| significant figures on a result? Zero credit. Didn't do an
| appropriate error analysis? Zero credit.
|
| This isn't just anal retentive BS though. It teaches from the
| very beginning that failure to adhere to the code has serious
| ramifications. It teaches you that when you, as an engineer
| with a duty to the public, report a figure as a result of your
| calculation, you had damn well better be right. If you get it
| wrong, people can and do die.
|
| In the real world, if I inappropriately call myself a
| "Professional Engineer" or a "Structural Engineer", that's
| straight up illegal. I can lose the right to future licensure
| for something like that. If as a P.E., you make a mistake, or
| perform work outside of your scope of knowledge, the licensing
| board WILL sanction you ruthlessly. For minor things, they may
| just require you to re-mentor under an engineer and get all of
| your work reviewed before you stamp it. For more serious
| things, you will lose your right to sign off on work at all.
| bigger_cheese wrote:
| I'm a Materials Engineer (I currently work in Metallurgy and
| industrial refining, before that Lithium Ion battery research).
|
| One thing I don't think was covered in the article was liability.
| I think that is a major thing that separates software engineering
| from other branches of engineering. Maybe it is not the case in
| the US but in my country if I contribute to an engineering
| project I can be held accountable in a court of law for my work.
|
| I can see a future where software has similar laws applied to it.
| chrisulloa wrote:
| Working in healthcare, engineers are liable for breaching data
| violations around health data. In everything from logging,
| storage and deletion of data, developers need to make sure that
| there is no personally identifiable information. There are
| plenty of other high stakes domains where engineers are
| certainly liable.
___________________________________________________________________
(page generated 2021-01-18 23:02 UTC)