I've been involved in the assessing whether a number of our systems need to be rewritten from the ground up or if they should be partially rewritten, or if they should just continue as is with patches on top.
In order to better assess the situation I was wondering what questions I should be asking myself and others to help determine the appropriate action to take?
' Process questions require more thought and analysis and/or a sharing of opinion. Examples include, 'What skills can you bring to this organisation that the other applicants cannot? ' or 'What are the advantages and disadvantages of asking leading questions to children?
I'd recommend you read Things You Should Never Do, Part I. He makes a strong case for not redeveloping.
Money quote:
It's important to remember that when you start from scratch there is absolutely no reason to believe that you are going to do a better job than you did the first time. First of all, you probably don't even have the same programming team that worked on version one, so you don't actually have "more experience". You're just going to make most of the old mistakes again, and introduce some new problems that weren't in the original version.
Perhaps you should ask yourself if you know the system well enough to fix the problems without re-writing it. If you don't, it might be safe to say you don't know the system well enough to redevelop it from the ground up.
In general, I've found that re-writing code tends to be trouble (it is expensive, time-consuming, and involves a discovery phase that makes the first system look better).
That said, here are a few questions to ask:
Would core refactoring suffice? You'll know from evaluating the system whether or not the central issues go deeper than the code. If the issues are in the code base (rather than the technology itself), I prefer refactoring.
To what extent is the current system testable? Testability goes a long way toward extending the service life of any system module because testable code generally lends itself more readily to extension and maintainability. This relates to #1 as well.
Lastly, would the value provided from a re-write justify the effort. This is a business question, certainly, but one that the developer can and should help make.
In most cases I've encountered, the answer was no.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With