This post originally appeared as part of an internal email thread at TripAdvisor. If you do not enjoy ranting on the internet (and if you say you don’t, you are not kidding anyone), please read no further.
So last Friday, Ian Bogost’s post on software engineering appeared on TripAdvisor’s internal humor mailing list, “catbert”. In it, he shares his opinion that software engineers aren’t really engineers proper, because of the flaws that sometime appear.
He is entitled to his opinion, insulting as it may be. I completely disagree. In fact, I think that software engineering is the purest form of engineering. As a software engineer, when I write down my ideas for something I am building, that something simply exists. There is no need to pour hot metal or use big cranes. Lots of these non-engineering activities are required in all other industries. Software is the only industry not encumbered with physical constraints.
Because of this lack of friction, software artifacts reach a level of complexity that no other form of engineering can ever approach. The guts of most computer programs today rely on layer upon layer of abstraction, providing more and more functionality at each layer. Gone are the days when a single person can know how each component of a computer system works, down to the actual electronics (an Apple ][ for me). However, that’s OK. I think this complexity can be beautiful.
Sure it can introduce unforeseen problems, but being so much more complex, that is inevitable. The alternative to avoiding software problems is to keep programs simple. Unfortunately, if you wanted to keep software that simple, almost all the innovation you see today would not exist.
Furthermore, the author completely misses the point about software design and real business opportunities. In order to fix a software bug, you can just release a patch. No need to tear down the bridge. Mr. Bogost seems to think this is a bug in the industry and not a feature. He points to Facebook’s change in philosophy as evidence that fast moving software development is a wrong-headed idea, ignoring the fact that Facebook wouldn’t be there if not for their original mantra.
Sure there are areas where we need the code to be rock solid. As engineers, we make the decision to design for speed or design for stability on a case by case basis. Those other forms of engineering simply don’t have the option of designing for speed.
I’m a bit surprised that Mr. Bogost, being a game designer, doesn’t realize that. Video games, unlike nuclear power plants, are one of the areas where a designer has to take chances and move fast. If not, the end result may be a perfectly rock solid implementation of Tetris, rather than something truly creative, interesting, or leading edge.
For all you software engineers out there: Next time you pass a building under construction, stop and take a close look at the simplistic symmetry of its design. Try not to laugh.
And apologies to the architects that designed our new building, which I think is awesome.