A Tenuous Analogy

Did you ever watch Star Trek growing up (or, say, when you were a full-grown adult)? It doesn’t matter which series, could be TOS or TNG or NKOTB — they all share a common trope whereby an engineer or engineers will spew technobabble to describe some problem they’re having with the engines / shield / warp drive / phaser array / microwave sensor. The resulting nonsense ends up looking something like this:

The doohickey is thingumming the whatchamadad

Well, watching the entirety of TNG on Netflix when I was growing up about two years ago, I got to thinking about how I really admired Lieutenant Commander Geordi La Forge. He’s not really the most important person in the show and there’s only a few episodes that really center on him (and they all seem to turn him into an uber-creep), but he’s got a space-PhD despite being blind, and he’s third in command on the ship despite being a nerd, but there’s almost always a scene where the Enterprise gets into trouble, and they cut to him in the engine room and he’s like holding a wrench or something and off the top of his head he has some great techno-babble way of jump-starting the warp core or declustering the tachyon emitter or whatever, and he saves the day.

I took a look, in a book, it’s a Klingon Warbird and it’s approaching at Warp 7!

As someone who studied mechanical engineering in college, I love that 300 years in the future, there are still engineers — not software engineers, but real engineers, mechanical engineers.  Mechanical engineers are where the term “engineer” comes from; in the 19th Century (and apparently, the 24th), humanity was harnessing the power of heat to convert water into pressurized steam — pressurized to a point where it would rupture whatever container you put it in and explode outward, killing or maiming the poor souls who were charged with operating these steam engines in their early days.  So people started studying what happens to materials and shapes when they’re subjected to internal and external stresses, laying out standards for allowable pressures and inventing mechanisms like safety valves to make steam engines safer. Once these engine-ers had conquered steam, they applied their knowledge to other engines like internal combustion engines and to applications of their newfound — and relatively safe — power, like cars and planes, rockets and, one day, warp drives.

The inventor of the warp drive, in traditional 21st Century engineering garb

What’s not necessarily apparent to the outside observer is that the power source behind each of these concepts (except, maybe, the warp drive) is basically the same — heated and pressurized gas. The mechanical engineer’s job is to safely and efficiently direct the heating and pressurization (and cooling and de-pressurization) of gasses in order to do work.  That’s basically what’s happening in your car’s engine, your air conditioner, a jet engine, your refrigerator, and the Falcon Heavy rocket, which is why so much of the mechanical engineering profession (and surrounding professions, like materials science) revolves around channeling, directing, and monitoring the heat and pressure of gasses.  Entire careers can be spent in materials science working on an alloy that can withstand another few degrees before melting, on optimizing the curvature radius of a pipe’s bend, or on the precise attack angle of each airfoil blade in a turbine so that you can extract just a bit more kinetic energy from the chemical potential energy of a fuel source.

Meanwhile, in my actual profession of software engineering, the software engineers just sort of … write code, I guess? Where’s the engine in that? That doesn’t feel particularly engineer-y to me. To sum up my grievances against software engineering (more like so-calledftware engineering, amiright?) in one pithy statement, I would say that mechanical engineers work with engines and software engineers don’t, so they shouldn’t be called engineers.  

But recently, I’ve been thinking a bit more metaphorically about the software engineering profession.  For a long time, I mentally made a distinction between “software engineers” (those who wrote infrastructural code) and “software developers” (those who write applications on top of infrastructural code), which seemed like a meaningful, if blurry, distinction.  But, the more I think about it, the more artificial the distinction appears, created primarily for the purpose of keeping me down. (I would primarily consider myself a developer.)  Instead, I’ve completely retooled my mental model for what a software application is and how an engineer relates to it.

You see, a software application isn’t just some hunk of code that lives on a computer, it’s a machine that turns data into information, and just like mechanical engineers optimize the heat and pressure of gasses through tubes, a software engineer’s job is to optimize the flow and quality of data through a system, whether they’re laying down the foundations of that system or building applications on top of those foundations to turn the data into something useful, like a mechanical engineer turns potential energy into kinetic. If data is the oil of the 21st Century, then software engineers will build the engines to turn that potential into something useful.

Here are some tenuous examples of how I think engineering works in the 20th, 21st, and 24th Centuries:

This idea has completely retooled my thinking around what it means to be a software engineer and how to think about my career. Honestly, it’s gotten me more excited about what I do. And if I play my cards right, in a few hundred short years, I, too can make the jump to warp aboard the Starship Enterprise.

Engage!
20th Century21st Century24th Century
Design for high octane levelsMove from scraping to integrating a trusted third-party APIReplace the tachyon converter with a warp particle accelerator
Optimize dispersal through the fuel injectorFront-end EngineerWe’ve unclogged a backup of gluons in the forward warp nacelle, which should allow us to reach Risa within 14 hours.
Build the combustion chamber out of new, higher-melting-point materialSwitch from Vue.js to React.jsIf my calculations are correct, with this modification to the neutrino generator we can run at Warp 9!
AfterburnersAWS AutoscaleEject the warp core before it detonates and ride the wave out of the muon nebula!