“the single worst strategic mistake that any software company can make: They decided to rewrite the code from scratch.” – Joel Spolsky
Yes. Yes. and Yes.
There is always another option. One which is less academically pure, but it’s always the right choice. Once you’ve shipped, it’s over. You’re done. You can rework a codebase, but only the insane, or naive, attempt a rewrite.
Yet people do it all the time.
Joel is too polite sometimes.
Arrogance is key.
“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.” – Joel Spolsky
Interesting observation. On teams where we haven’t rewritten the codebase but instead have done something short of that, let’s call it invasive refactoring, it’s gone OK – if and only if – the key members of the team are still in place. Yet another reason to maintain team stability.
Yet in this area of fire and forget mobile apps – which suffer greatly from code erosion, team suability is quickly going by the wayside.
This is my #1 concern with reliance on so many cocoa pods in our existing apps. The quick speed boost they provide us is invigorating, but dragging them across iOS version transitions has been mighty painful.
Leading us to consider rewriting. /Sigh. At least they’re not huge gigantic things and have defined boundaries. The cost is still really high.
“There’s a subtle reason that programmers always want to throw away the code and start over. The reason is that they think the old code is a mess. … they are probably wrong. The reason … is because of a cardinal, fundamental law of programming:
It’s harder to read code than to write it.” – Joel Spolsky