The throwaway prototype has long been a software development best practice, but I think there’s a case for taking it even further and actually throwing out a whole lot of production code. I guess we’ve all experienced the scenario where a piece of work (not just source code) is accidentally lost. I recently worked on a project plan for about 4 hours before a file corruption lost it all (thanks MS Project), I was shocked and numb, I’d put so much effort into it, and it was a good project plan. I resigned myself to restarting from scratch and after only another hour or so, I had recreated it. Only this time it was better, much better. It was cleansed of lots of little compromises that I’d unconsciously tolerated in the old plan, I’m talking about subtle things like a convention I’d adopted early on in the old plan for how I break down tasks. In the new plan, I reevaluated the approach and slightly modified the breakdown in a way that made more sense. Critical milestones for interdependent tasks were more clearly laid out, I guess I just had a better instinct for what was important and what was not so important, which allowed me to organise the information accordingly. It was effortless and the result was very satisfying. I doubt the old plan would have been as good even if I’d applied that extra hour or so to tidying it up.
History provides some famous examples. The tragedy of the Apollo 1 Fire led to a reassessment of the most basic assumptions that went into the design of the command module. I’ve seen documentaries in which Apollo insiders speculate that it would have taken longer or even cost more lives to reach the moon (if at all) if it hadn’t been for the refactoring of their engineering in the aftermath of the fire.
On a lighter note, I love the Curtis Hanson movie Wonder Boys in which Michael Douglas plays a Salinger’esque writer who has been working for years on a colossal manuscript to followup a hit from early in his career. His character’s turning point occurs when the one and only copy is lost. Released from the burden of the manuscript he is able to be more decisive in his subsequent efforts which leads to him being published again.
Thinking about all this, I may never have the balls to abandon a whole production system and start from scratch, but at the very least, I won’t despair if I lose an email draft, or a document corrupts or a backup fails, I’ll look at it as an opportunity to do it all again and know that it will be better the second time.