How the costs of a rewrite should enforce reinvention
Often you have to deal with legacy projects. Legacy features, legacy code, legacy technology, legacy infrastructure. Getting to a certain degree you will find yourself in a dead end. Innovation feels impossible as does motivation.
Lets do it from scratch.
If you’re a developer you will probably have proposed a rewrite to your project manager / client / superior at least once in your professional life. I guess the reactions in most cases have been negative.
Why is that so?
The hurdle to decide on a rewrite is quite big – a rewrite is costly.
A rewrite will cost you:
- Innovation – for the time the rewrite takes it will bind most of your development resources who will not be available for anything else.
- Reactivity – whatever happens on your live product you will have very little means to react as everyone is busy rewriting.
- Infrastructure – while the legacy product is still in use you will have to maintain its full infrastructure while your rewrite comes on top.
- Involvement – often you won’t have enough developers to do the rewrite and the maintenance so you need to expand to freelancers for the rewrite while your own devs will have to deal with the legacy code instead..
All of the above costs money and at the end of it you will end up with what you started with in terms of features. You will have improved the quality of your code and probably raised the productivity by a lot.
But how can your project manager decide to spend all that money if in the end it doesn’t show?
A possible solution – which might not fit to all products out there – is to not do a rewrite but a reinvention. Instead of rebuilding the old you build something new. Your product wil have flaws and short comings anyway so why not start from scratch with a new concept?
This will costs even more as you need to conceive this new product first but it will allow your project manager to sell a story. Whoever needs to fund this endeavour will want to know what he’s paying for – a shiny new thing or the old thing he already got?