When programmers want to redo things from scratch, that’s 90% time a wrong decision!
In which cases programmers want to redo things:
Redo to add some features:
What happen: They start redoing everything because they thing that’s the only solution to add a particular feature. Deadline coming closer they don’t have time to finish -> In that case, they will probably have fewer features than before and worked for nothing!
If code is too complicated to insert features -> rework it.
For the same result, redoing is always more time-consuming than reworking.
Read the article of the creator of Minecraft in the Game developer Magazine of February. He explain his experience on this point ( chapter “What went wrong” ).
Redo to simplify:
What happen: They saw a complex piece of code made by others that they don’t understand. They just don’t want to spend time understanding it and decide to produce a simplify version.
They program the simpler version they had in mind -> they stumble on an unforeseen problem -> add complexity to solve this problem -> new unforeseen problem -> again add complexity etc…
In the end, they get a solution as complex as the first one… They just lost several days/week of developement for nothing.
Rework is again the good solution: You can simplify the code faster.
Even if you choose to redo things, you should, at least, read the previous code to avoid falling in the same pitfalls.
Redo to take credits:
What happen: They can’t be proud of being the guy that has fixed all bugs. They just don’t have developed the feature, and can’t take credit from it, even if they have made all the dirty work by turning an unusable things into a perfect piece of code. They just prefer redoing everything.
Redo because it’s too buggy:
What happen: Bugs take way too long to fix because code are a mess.
This is the only case redoing can be a valid solution. Redoing can take you less time than fixing bugs in dirty code.
But be aware of not falling in previous cases.
By adopting the reworking method, you will produce better code faster.
That’s a very good process if you want to respect Deadlines, and I think it should be a more common practice in the industry.