Don’t Be Surprised That Programmers Don’t Act Like Engineers

It’s obviously true that software is terrible. But we shouldn’t be surprised that software development doesn’t live up to the ideals of engineering when we don’t treat it with the same respect we afford to other engineering professions.

Bogost writes that “methodologies like Scrum never allow that infrastructure to stabilize.” This misses the point.

First, it confuses two different meanings of the word “stability”. Things built by Real Engineers are iterated upon over time too. They just typically don’t catastrophically fail in the process.

But even apart from that gripe, it gets the causation backwards. Software isn’t constantly-evolving (read: breaking) because a bunch of hippies signed the Agile Manifesto and invented Scrum. They created Scrum because their customers’ requirements were changing on a weekly or daily basis, and the straw-man software engineering methodology that looks like what you’d expect a Real Engineer to do (see “Waterfall”) simply does not work in software. Heck, I spent four years of my undergrad and two years of my Master’s program trying to help solve this problem.

So why is this such a unique problem to software? This article already argues why it’s the fault of programmers, so let me offer an alternative explanation.

Maybe businesses simply don’t respect this profession. I know Real Engineers are overworked and have incredibly stressful jobs, but I have a feeling they don’t have to put up with quite the shit software developers do in this area. I am doubtful that a business owner would ever tell an architectural engineer, “That’s a great proposal you have there, but could you construct the building in half the time and with half the concrete you suggested?”

Or that she would be asked to change the height and shape of the building halfway through construction.

Or that she would be asked to just work a few 70 hour weeks and get the building done by a deadline even if it’s missing a few support beams.

Or that a bunch of amateur engineers with no credentials would be hired to construct the building for dimes on the dollar, instead of a single experienced engineer, because they all end up building the same thing, right?

Leave programmers to do their own thing and they can create beautifully-designed, stable software. Sure, some programmers are awful, but not even the best of us are immune to the cut corners and errors that result from working for businesses who tacitly or even explicitly tell them they should cut those corners, because the software budget (you know, to pay for the construction of their entire product) is a fraction of what it should be.

Are those business owners wrong, though? No one will die because Facebook was down for an hour once, or because Twitter ate an AJAX error and didn’t really post a Tweet even though you thought it did. We moan when our computer, like, takes a second to open a thing, much like we moan about cramped seats and bad service on airplanes. But at the end of the day, we obviously prefer low prices to high quality, both when posting pictures of our cats to Facebook and when flying. As long as the plane itself is built by a Real Engineer.