Heinlein the Software Engineer


Despite dropping-sideways from my Coursera course, I still can’t help but to pick up books lying around.  In fact, I’ve made this act easier for myself by dedicating a bookshelf completely to books that I haven’t finished. Time Enough for Love, by Robert A. Heinlein (RAH) was on the shelf and still being in the science fiction mood, I took it with me on my trip to San Francisco.

My “to read” shelf. Some books, like Ulysses, have been on there for awhile…

Even though I read Stranger in a Strange Land in High School, it wasn’t until well after I graduated college that I re-discover RAH and The Moon is a Harsh Mistress won me over.  I failed to appreciate RAH during college, which is a shame since RAH is a fellow alum from the U.S. Naval Academy.  Which is why the contrast of his counter-culture futuristic societies is even more drastic when I take into account his experience in the rigid social structure of the Naval Academy and the Navy.

But what does this have to do with software development?  Heinlein appreciated the virtue of laziness.  Certainly, this trait is not listed in Qualifications of Naval Officer (see below) but it is an especially important one in the software industry.


My worn out copy of Reef Points. I must have used those line breaks to help me memorize the verse. On the right, a menu for evening meal, which I also had to memorize although I don’t know how I read my own hand writing.

There is a chapter in Time Enough for Love, entitled “The Tale of the Man who was too Lazy to Fail,” that recaps the Naval career of David Lamb.  This character despised manual labor and was constantly looking for shortcuts, probably much to the chagrin of Jones.  At the academy, upper classmen force the freshmen (plebes) to memorize all sorts of silly useful things.  One statistic, on the forefront of a 1st classman’s (senior) mind is the number of days until graduation.  A particular evil firstie (as they were called), could require the number of seconds until graduation.  At any point, a firstie can require a plebe to provide the days/number of seconds until graduation and if not known, suffer unspeakable consequences.  So, David simply converted periods of time into 10,000 second increments and wore a watch divided in decimal partitions vice the normal hours and minutes.  When demanded, David produced a reasonably accurate time that was easy, for him, to calculate.  That chapter is filled with other anecdotes of a naval career that are accurate even today, like choosing to fly fixed wing aircraft to avoid the difficulties of landing on a carrier…

The infamous “days” that a plebe must memorize. Given that graduation was on May 26, 1999 I must have written this on Sunday, July 19th, 1998. Too bad I didn’t have Wolfram Alpha back then.

The moral for developers is to avoid “honest-work” like David and automate and invent quicker systems for performing mundane and repetitive tasks.  I stumbled upon this presentation by a GitHub employee on how to “unsuck your development environment.”  They have an impressive goal at GitHub to get a new employee to make a significant code contribution to a project in one week.  With the complex server and tool chain environments these days, that is quite an accomplishment, one that requires effort to make the first time installation effortless.  Setting up a development can be very frustrating and not very fun.  It’s like trying to paint, but realizing that first you have to make the brush from scratch.  Sure, some purists enjoy this kind of thing, more power to them, others would rather just paint.

Hackers are very good at asking the question, “Why am I wasting time on this and why can’t this be automated?!?!”  This is a good thing.  If it’s automated it should be repeatable and consistent and allow people to get back to creative work vice building scaffolding.  David Lamb has a certain Yossarian-like quality to him and while this quality may not have been respected in my past line of work, fortunately it’s useful now.