Refactoring: Emerald Lake to Aspen Grove

Tim Bray is talking about refactoring, the process of rewriting code. Tim makes the point that it seems extremely painful to rewrite something that's more or less working but that it isn't as bad as it seems, having been through it once before. My personal experience leads me to agree.

When I was at iMALL, we built a multi-million dollar eCommerce system that allowed small merchants to set up a web-based storefront online. The system was code-named "Emerald Lake" or EL. We planned and implemented for months. We spent a lot of money. When we were done, we were severely disappointed. Performance wasn't good and there were some nasty problems with transactions that were hell to track down.

We almost immediately started a complete refactoring of the code that was code-named "Aspen Grove." Aspen Grove was completed, thanks in large part to our earlier experience, in a few months by a much smaller team and far exceeded our expectations in performance and ease of use.

Were we just inexperienced? That might explain some of it, but there were a number of seasoned people on our team. I chalk most of it up to the fact that refactoring is a real technique. I've always been a big fan of prototypes and while EL couldn't really be considered a prototype, Aspen Grove was certainly the beneficiary of its legacy. Tim quotes Fred Brookes from The Mythical Man-Month who said in 1975 "Plan to throw one away. You will anyway."