Oh, the slippery dream of starting over. Seems to me that every project that I have ever worked on has been surrounded by people who just wanted to chuck the whole project out and start again. It's a beautiful dream huh?
It also seems to always end in a nightmare. When you hit the reset button in the software world, you dispose of the institutional knowledge contained within the source code. You forget the lessons learned. Given a large project, you also are likely to lose core features that you have assumed were of marginal value. And sometimes at the end of the reset cycle, there are some that just want to reset again. I'm sure there's a name for this phenomenon - dunno what it is though.
At then end of the journey down 'reset valley' - you typically have a product that isn't what you wanted when you began. It may be a great place to start future work, but in the meantime you have a product that feels very unfinished or unpolished
I'm not sure that it's truly possible to pull off the reset button mentality anymore for large scale software projects. Can anybody name one that worked out (near term at least)?
One of my favorite related stories was told to me by one of my early mentors. It was a story of this old gas station in his home town.
His home town had one of those old fashioned full-service stations with garages and pumps out front. The owner of this station kept being told how he was losing business to the new fangled gas stations across town - the ones with the fancy pumps, convenience store, etc , but the owner also knew that if he closed down shop just to update his image, the gas station would never reopen.
So he cooked up a plan. For months townsfolks noticed workers going into the garage, and coming out at the end of the day. New stuff kept being delivered and carried inside. Finally, a year later - another group of workers came by. These workers promptly removed the walls of the garage and revealed a new fancy station. Once the walls were down, the new station opened for business. The old pumps still worked for awhile, but were removed some weeks later.
Sure it would have been faster to just close up shop and bulldoze the entire station and build it up again. But what if the new station just wasn't ready in time? Can you afford the failure?
Okay - I'm sure the guy made the whole thing up - but I've always liked the sentiment. It's old timey, and a pretty good analogy of my beliefs about rearchitecture.
Focus on abstraction or even add abstactions first, perhaps implementing with what you already have in place. Prove the abstation - then remove the old with the new - and check for improvement.
Rearchitect from the inside out.
Reset Buttons --- Here be Dragons.