Steam Engines

February 13, 2014

Typically when you think about the software engineering profession, the first thing to come to mind isn’t steam engines.  However, I believe that studying past technologies may provide valuable insights to how our profession, heavily reliant on computer technology, may evolve and change.

If I trapped you in a corner and started asking you about the inventor of the steam engine, you might say something about James Watt[1].  However, James Watt didn’t actually invent the steam engine.  Hero of Alexandria did[2].  That’s right the ancient Greeks had steam engines; they just didn’t use them to do any work.  I think they were all toys and trinkets.  So James Watt invented the first useful steam engine.  Except he didn’t do that either.  That award goes to Thomas Newcomen[3] (apparently a Baptist preacher, I didn’t know that).  Thomas created the Newcomen steam engine in 1712 [4].  It was used to pump water out of mines and, here’s the bit I’m trying to draw attention to, was 0.5% efficient.

The first Watt steam engines were around 10% efficient; after that the incremental improvements started coming in and today state of the art is around 50% [5].  Consider the jump in efficiency encountered with the advent of the Watt steam engine.  Even at 10% you’re looking at 20 times the efficiency.  That’s enough to change everything.  And in fact the Watt steam engine arguably did change everything.

The first computers required rewiring in order to reprogram them [6].  Being able to use punch cards is actually a pretty big step up.  Then Grace Hopper[7] created the first compiler[8] and that makes a pretty big difference as well.  Platform independent programming languages, high level programming languages, java and .net, open source libraries and ubiquitous frameworks for any task you can imagine.

Maybe we’ve already seen our Watt transition and everything from now on in software will be incremental changes of the same sort of thing we’re already used to.  Although with this many disruptive developments so far, I think it’s prudent to watch out for what might be next.  A 20 to 100 fold improvement in efficiency changed the world when it happened to steam engines.  Imagine what would happen if you could experience a 20 fold efficiency increase in how you are working now.  Also consider what would happen if everyone else experienced a 20 fold efficiency increase and you didn’t.  Seems like it might pay to keep an eye on the horizon.

One other thing to keep in mind, software engineering is fundamentally about automating tasks that would otherwise have to be performed by a person.  And theoretically that includes software engineering tasks themselves.  Even if we do not encounter new Watt transitions, then we still need to stay alert because prized skills today may become obsolete due to mundane incremental progress tomorrow.

[1] – https://en.wikipedia.org/wiki/Watt_steam_engine

[2] – https://en.wikipedia.org/wiki/Hero_of_Alexandria

[3] – https://en.wikipedia.org/wiki/Thomas_Newcomen

[4] – https://en.wikipedia.org/wiki/Newcomen_atmospheric_engine

[5] – https://en.wikipedia.org/wiki/Steam_engine#Efficiency

[6] – https://en.wikipedia.org/wiki/ENIAC

[7] – https://en.wikipedia.org/wiki/Grace_Hopper

[8] – https://en.wikipedia.org/wiki/History_of_compiler_construction#First_compilers