Justifying Code Rewrites?
snow70 asks: "It seems that it is getting harder and harder to justify the decision to re-write rather than hack/patch away on a flawed code base, given the economic situation and the drive to squeeze every last drop out of an existing code base. Are the readers aware of any research articles or reports that extoll the benefits of re-writing in terms of the cost savings in maintenance and support ?" This topic was discussed two years ago, but I think many people who'll find themselves in this situation would also benefit from any research articles or publications as snow70 requests.
From The Cathedral and the Bazaar, by Eric S. Raymond:
"... To put it another way, you often don't really understand the problem until after the first time you implement a solution. The second time, maybe you know enough to do it right. So if you want to get it right, be ready to start over at least once [JB]."
Portions of that quote are borrowed from The Mythical Man-Month. More is available online
"I'll say it again for the logic-impaired." -- Larry Wall.
I have a pretty good formula for getting the actual time it will take :
...' : 3 months minimum, 18 months average.
If your coder is just out of school take any time estimates and factor by x5 Estimates two days, it will take him two work weeks. (*)
Junior programmer with 1-2 years experience on this kind of thing - factor by x4.
Senior programmer with half a decade or more of experience = factor by x2 or x3 - it varies.
Any task with a description that starts 'Why don't you just
Manager says 'It can't be done.' - it will be done by Monday.
(*) - the reason the Junior guys do this is the estimate how many hours it will take them to complete (which is generally half the number it will actually take) and the math in their head assumes 24 hours of productive time in a day until they finish it. They -could- finish in two days, but they are not going to actually finish in two days. Senior guys recognise that they only get 5 productive hours in a day (on a good day) and divide the number of hours they think it will take by 5 to get days. Of course they also take twice as many hours to get it done, hence the 2x factor for them.
Glonoinha the MebiByte Slayer