5 ms·
I think "software engineers aren't really engineers" is putting "real engineering" on a pedestal that is borne of ignorance. Hillel Wayne's engineer interviews
by organian 3y ago
I think "software engineers aren't really engineers" is putting "real engineering" on a pedestal that is borne of ignorance. Hillel Wayne's engineer interviews were eye-opening on this: https://www.hillelwayne.com/post/are-we-really-engineers/ https://www.hillelwayne.com/post/are-we-really-engineers/
- s1artibartfast 3y agoI have a different take. Engineer is basically synonymous with application physicist. Someone why applies the laws of physics to achieve a goal. I don't think this is so much a pedestal, or why some software engineers are passionate. Is being a computer scientist somehow negative?
- sterlind 3y agoI think of applied physicist as something very different, closer to science than engineering. The kinds of people who research new battery chemistries, or the techniques to unlock new semiconductor process nodes. Basically, scientists do hardcore research and expand the field, while engineers apply the techniques and formulas that the scientists have discovered, and craftsmen combine prepackaged modules built by engineers for a job. So an applied physicist discovers the light-emitting diode. An electrical engineer designs an LED light panel. An electrician wires light panels into a home. Likewise, a computer scientist discovers NFA reduction, an engineer uses it to build a regular expression compiler, and a developer writes a regex to validate email addresses.
- fsckboy 3y agoAn electrician who designs a complex light panel using 120VAC for use in a habitable or public building needs to submit the plans to the building department to get a permit and certify that it's not a fire hazard. You need to be a Licensed Engineer™ to do certain levels of certification. People certified to be licensed engineers didn't necessarily graduate from a School of Engineering at a famous university that is also filled with physicists and mathematicians and English literature. Instead they need to study, learn, and pass the tests that legally certify them as Licensed Engineers™ to keep us all safe. It's much of the same material, overlapping, but not the same. They're less likely to consider themselves ready to move over to building rocketships to the moon on the basis of their bachelors degree. This is the source of all the debate about who is an Engineer and who is not. Licensed Engineers don't want to consider unlicensed engineers as engineers. People who went to universities and had to study a dose of liberal arts along with control theory to get their "Engineering degree" don't want to consider the choo choo Train Engineer™ as an engineer. In the US there is a bit of academic snobbery around, it's not universal but, University of Michigan is harder to get into academically, and a little more high falutin'. Michigan State is a bit more plebian but more practical. University of Washington vs. Washington State, same thing, and so on. The licensed engineers are more likely to come from the State school, the unlicensed engineers more likely from the University of. Both want recognition for their training, which makes sense. I'm exaggerating for effect, but this is the issue. Whether software engineers are engineers is a minor skirmish on the flank of this larger war, both because there are no certifications for computer engineers, and because mathematicians are not engineers and programming languages can be studied from a mathematical perspective or from something closer to Electrical Engineering.
- sterlind 3y agoI'm confused, is the electrician in this example the Licensed Engineer(tm)? They definitely have to be licensed, since they can burn your house down if they don't know what they're doing. And checking that the plans aren't a fire hazard isn't done by an electrical engineer, is it? I definitely wouldn't trust the electrical engineers I went to school with to do DIY home wiring, by the same token.
- defrost 3y agoTo the extent that Australia and the US are similar, various things require a licensed tradesperson to certify. The sticking point is what licensed tradesperson would sign off on work done by another unlicensed person? Here, I've often done full 240 V AC wiring and gas fitting for houses, workshops, abd glass blowing | ceramic studios .. but never connected or made any of it live, instead I've called in local tradespeople to inspect and test the work from end to end, just as they would check the work of an apprentice, and then certify it. It's been cheaper for me that way as well as allowing for better control of how I want things to go, it's been less hours work for them in an area where they're in high demand and a bit of a win-win. On at least two such jobs I've been advised to change some details as the most recent codes had changed and required things I'd been unaware of, no drama. And no, in general university electrical engineers don't leave university with the practical trades skills to wire looms between power plants and racks of mills, screens, and grinders drawing high voltage high amp three phase and requiring complex control and instrumentation circuits. They can sketch that out but they rarely get the practical cable pulling, wire cutting, box layout, etc experience outside of an actual trade apprenticeship type role.
- fsckboy 3y agoabsolutely, you nailed it! "collegy" engineers don't know a damn thing about safety in the home, and what causes electrical fires. They know kinda ("resistance results in heat") but they don't know specifically a zillion little gotchas that have killed thousands of people in electrical fires. if you want to cut a hole in your wall to put in a window, it could be as easy as cutting a hole and putting in a window. Or, it could be that it's a "load bearing" wall, and you need to put a wide I-beam over the new window to safely redistribute/bear the load that the formerly intact wall was carrying. Or, you could have chosen a spot on the wall that has a column/pillar that's holding the roof up. Probably you'd choose a different spot, but if wanted that spot you could hire some engineers to figure out a new set of "cantilevers" or "flying buttresses" or (i'm not this type of engineer, I'm just throwing around words). As the work you do becomes more and more dangerous to more and more people, you need somebody with higher levels of certification/licensure to approve the plan. an electrician, who has a license, is not an engineer, but a good electrician could become one if she wanted, it would require study and exam passing. Some electrical work an electrician is allowed to do, they can "self certify", but the city might spot inspect it. The next level of complexity they perform the work, but a building inspector needs to inspect. The next level of complexity, the plans need to be certified and approved in advance. I'm sort of making this up, piecing it together how steam fitting is done (that's mechanical engineering), how air handling is done (also mechanical engineering), plumbing, etc. But this is the general scheme. some of this is legacy disputes left over from the 19th century. When they were inventing electrical circuits, everybody was an engineer and everybody could do everything, and people just invented stuff on the spot and tried it. After enough people died, it was decided we needed standards. And slowly a white collar/blue collar sort of distinction started to emerge, for work that required calculus vs work that requires knowledge of lots of specific requirements. Calculus people design cars and planes with smooth sleek shapes, but those items can't be constructed without the other type of engineer saying "hey, that's not strong enough"
- crdrost 3y agoI liked these interviews but I do find the result kind of... apathetic? I feel like you can read these and just come to a sense that nothing is engineering because everything is amorphous, which is not (I think) Hillel’s thesis but he doesn’t really want to anchor the discussion in principle because he is fundamentally asking for opinions. For a more principled approach, I would say (as one of these “licensed engineers who has not done as much actual engineering”) that engineering as I have seen it kind of has three really major themes: • Prototyping/building/creation. Tinkering. I guess the reason we don't talk about this is that everybody finds it trivial? But when you talk to ChemEs and they discuss optimizing pipelines for chemical processes you do see that it can get a little abstract so it's worth pointing to as a baseline. • An underlying scientific theory that guides the models used. Building stuff has happened since way before science but engineering is clearly a postscientific endeavor, “here’s the underlying mechanical principles of how this works.” This is probably the sketchier principle in how we talk about “is this software design really engineering,” we tend to not have a firm scientific understanding of the problem domain of building software. Some things like CAP theorem, patch theories in version control (Darcs, Pijul), distributed consensus algorithms, TCP/IP, I would say really rise to that challenge and say something hard-learned about real systems. Things like OS kernels also have so much trial and error, so much prototyping that it feels like “yes you really did do enough hypothesis-test-reëvaluate cycles that the result embodies a model of the problem domain that counts as a scientific understanding.” But a lot of our work is just gluing systems together and that seems more “electrician” than “electrical engineering.” Now, science uses math, so people think of engineering as highly mathematical, I am not sure that it has to be. Whereas I do think it has to be scientifically based. • The last big thing that I think we don't talk about enough is risk assessment. The reason that we’re doing all of this science and math to build a bridge, is so that we can assess how strong it needs to be to just barely survive the peak loads that it will ever have, and then double that strength just in case. I think that when we say “not all programmers are doing software engineering” a good proxy for that is looking at, first, do you have a scientific model of the sorts of approaches that you can do; and then, do you use it to assess numerically the kind of loads that your system will come under up-front and design accordingly—writes per second, queries per second—and set realistic targets and choose caching and consensus and whatever else to achieve those and measure that you have... Or do you work via crude heuristics, “we use Kubernetes so I'm sure it will scale later, we do ‘best practices’ so we don't have to think about those,” and related kludges where we can comfortably say you're just tinkering rather than being principled about it. And then, this reveals that maybe you don't need to be doing engineering, maybe you really do just need to tinker in the problem space while you achieve better product-market fit. Maybe you are doing science rather than engineering, and that is okay. Like, the idea that you are going to launch the next space shuttle with your reliability, I am sure that makes for a very energized, focused workplace, but it's not a precondition, it's not the only way to get there.
- RGamma 3y agoProgrammers calling themselves software engineers suddenly is a very recent phenomenon (barely a decade). Dunno who pushed that, but it's mostly basically (cognitively difficult) Lego at this point. That said, it's also on the order of a hundred years younger a discipline and our theory is not so well developed.
- fragmede 3y ago> cognitively difficult Lego Ah yes. Meanwhile, my friend who's a mech-e at a car company starts from scratch on every single last project, never reusing components, and also machines every component from scratch because there's no such thing as McMaster or any other vendor. When he works on a project, the physical parts never ever fit together like Lego. It's not like he'd use calipers or something to do what's called measuring (twice!) so that things fit together. There are plenty of places to demand more rigor from people writing software before considering it engineering, but reuse of parts, and having them fit together nicely is a weird one.
- paulryanrogers 3y agoEngineers used to mean seige-machine builders. Language will evolve.
- batch12 3y agoMy dad called himself a 'computer software engineer' in the early '90s. I don't think it's only a decade old.
- contrarian1234 3y agoIn the 90s it sounded pretentious and people used to joke about it. In the early days of Google they tried to label themselves as engineers to set themselves above the rest of silicon valley. It was a way to try to signal that their work was somehow more technical
- unmole 3y ago> barely a decade Yeah, no.