When the news trickled through on New Year’s Eve that all (?) 30GB Zune mp3 players worldwide had collectively locked up around midnight Pacific Standard Time, speculations abounded — was the issue related to the changeover of the year to 2009, as the moniker Z2K9 suggests? Or maybe to the fact that a leap second was to be added in at midnight GMT (8pm PST)? Neither cause looked likely to me, but who knew. At the same time, I hoped it had something to do with 2008 being a leap year. Leap year bugs may well show up on the last day of the year if the code is unprepared for a 366th day.
The joy that my wild guess turned out to be correct was not just schadenfreude, but related to a passage I recently read in a book, The Mythical Man-Month by Fred Brooks. This is a classic in software project management, and relevant to the Open University’s postgraduate computing course I’m enrolled in. Brooks’s essays lay down a number of now widely accepted principles: Time (months) and people are not interchangeable, adding programmers to a late project tends to make the it even later etc.
The passage I was thinking of is from the chapter on the “second-system effect”: the idea that the second time a team builds the same type of system, the product is likely to be bloated, for the team will succumb to the temptation to implement all the nifty features that occurred to them while working on the previous system, but didn’t find the time to include. IBM’s mainframe operating system OS/360 was, according to Brooks, who had been one of the the project’s managers in the 1960s, a typical second system. And to support his claim that it was overblown and wasteful, he offers this example:
For example, OS/360 devotes 26 bytes of the permanently resident date-turnover routine to the proper handling of December 31 on leap years (when it is Day 366). That might have been left to the operator.
26 bytes is what it takes, in the most commonly used encodings for plain text — ascii, any iso-8859, utf-8 — to store the bit that’s a different colour at the start of this paragraph. But my goal here is not to point out how far computers have come in the last 40+ years. My point is about how we all are, in the most mundane situations, computer operators now. The mind-boggling part is not the 26 bytes figure. It is the “leave it to the operator” attitude, the idea that anyone’s time would be reasonably spent, the night before New Year’s Eve, to manually carry out some procedure in order to assure date calculations don’t fall over.
Some final disconnected notes:
1/ Collective experience of adversity spawns linguistic innovation. In addition to the ubiquitous Z2K9, we got Zunicide and Zuneocalypse, and a whole lot of bad puns.
2/ Kudos to the Microsoft support engineer Corey Gouker, who was among those who posted unofficial DYI unbricking instructions. I don’t know if he is connected to the Zune team, but as someone who runs a technical product support team in my day job, I sympathize with the poor support guys.
3/ The code of the third-party clock driver is available, and the bug is all too elementary (scroll down into the comments for a step-by-step analysis). It’s a banal infinite loop in a straightforward piece of code.
4/ As for the Fred Brooks text, I’m finding it less inspiring than I expected. Sure, reading the original instead of one of the numerous summaries of his ideas always adds a lot of little extra insights, and a good chunk of history, and this is why I’m not regretting the read. But the tone can be grating. As an example, here is how he introduces the “second-system effect”:
An architect’s first work is apt to be spare and clean. He knows he doesn’t know what he’s doing, so he does it carefully and with great restraint.
As he designs the first work, frill after frill and embellishment after embellishment occur to him. These get stored away to be used “next time.” Sooner or later the first system is finished, and the architect, with firm confidence and a demonstrated mastery of that class of systems, is ready to build a second system.
This second is the most dangerous system a man ever designs.
Even in the 1970s not everyone wrote with so much pathos. My mental eye invariably sees a bunch of very serious manly men, highly aware of the sacred nature of their roles.
5/ I just can’t think of the book’s title without being reminded of Elizabeth Bishop’s wonderful poem The Man-Moth.