Waste in engineering

This is a broad one. I’m not sure how to zero in on the root of what I want to discuss. I think the issue is lost efficiency, and the root cause is sloth, and the subject: engineers. I’d like to make a case that there’s a large underlying flaw in the industry thought processes, and through that, the people in it. This could be a book, but I don’t want to write a book, I want to write a short post. It makes sense in my head, but let’s see if I can get there through some process of reason rather than just a easy-as-pie prejudice.

Where do we start? There’s a lot of waste in the computer science field, a discipline that claims to have a focus on efficiency. This is ingrained in us almost from day one, to greater or lesser degrees. Raise your hand if you were shown bubble sort in CS101, followed by a lecture on how much better quicksort is. How about those exercises in assembly (do they teach that anymore?) to avoid a memory reference when a register would do?

This is all well and good, even if everyone promptly graduates, forgets all of this, and decides to go off and help develop the next javascript-based OS, like YouOS, GoogleOS, etc. It’s not about absolute gains made in efficiency, it’s about relative gains. Yeah, your sorting algorithm used to manage data in your Web 2.0-based OS isn’t going to be as fast as one hand-coded and running on bare metal. There’s a trade-off there. The important thing is that reasonable steps are made to be efficient given the tools at hand.

In this regard, software engineers do a decent job at making things fast enough, even if not everyone is uniformly capable of doing so. My issue is with the fact that this is as far as most engineers take their focus on efficiency.

Let me define the scope here, so the question of ‘how far should the focus go’ can have meaning. Really, it’s simple - more than just SQL code should be analyzed and optimized for efficiency. Efficiency is the ratio of output energy to input energy, so if you can do more with less, do so, regardless of the task. Energy applies to much more than that function displayed on the screen - the whole world runs on energy. If there’s going to be a focus on efficiency, let’s focus on efficiency, not just where it requires minimal effort to apply. (Let’s be specific: don’t just think about efficiency when you’re sitting in an office chair.)

Here’s an example - if it’s OK to spend hours reworking a set of functions and data to make better use of the system’s L2 cache, in order to make a possible small gain in speed (don’t get me started on benchmarking methodology), it should make just as much sense to ride a bike to the store instead of hopping in the F250. If page reload and resize speed get focus in the name of efficiency, then by all means, stop wasting all the energy invested in building, shipping, charging, and throwing out the latest stupid USB gizmo idea, cell phone, etc.

I could go on, but the specifics don’t matter - the idea is, if you care about efficiency, be efficient. Drive less. Don’t order lots of crap. Get a smaller house, insulate it. Install CFLs. Whoops. Specifics again. If you really only do care about bragging rights for speeding up that inner loop, that’s fine, but call it what it is (code masturbation?), it’s not a focus on efficiency. It’s an interest in code optimization. It’s a microscopic view of the much larger field of resource optimization.

I think the reason software appeals to so many is that it’s so accessible. It really doesn’t take much in the way of scientific rigor compared to the ‘hard’ sciences. Repercussions for poor choices and poor science are light compared, to, say, a bridge design that is found to be insufficient halfway through construction.

I’m not saying software should be hard; nearly infinite flexibility is what makes software so potentially powerful. My concern is that it’s too common for software engineers to fail to extrapolate what science they practice on the screen out to the larger world. If they did, their sense of the world would be better for it. Their sense of science would be better for it. In applying a better sense of science to a better view of the world, science itself would be better off. I think that would be a good thing.

Leave a Reply