On Rewriting Software
Kevin Barnes has an interesting post about software rewrites. Here are some of the questions he thinks you should be able to answer “yes” to in order to proceed with a high chance of success:
- Do you honestly believe that if you rewrote it without adding any features the resulting code would be 33% smaller than the current code?
- Do you have a very senior sponsor who understands and believes in the project?
- Can you get enough resources (even on a temporary basis) to support development on the old code base while the new code is written?
- Is the project critically important to the company’s future?
- Can the company go without a major release of the product for half the planned coding duration?
- Do you have anyone on the team who has successfully rewritten a major piece of software before?
I find his list thought provoking for two reasons. First, like (all|most) programmers, of course I have applications in use that I would like to rewrite.
Secondly, though, and perhaps more significantly, it seems like a really good list of questions to tape up by your desk when you start a new project. We end up with things we want to rewrite often because of the things that we were going to “fix later”. Then “later” gets later and “fix” gets expensive and, well, there we are. A reminder of just how important some of those early decisions are might just be a tonic.
(If you are interested in the subject, Chad Fowler also has a recent post which I haven’t had a chance to read yet.)