Things going against the big rewrite • Same people and same methods: they will get the same results • The old software contains knowledge and details that we’re not aware of • While we are busy rewriting the old features, competitors are busy implementing new ones • Why is there always time to do things over, but there is never time to do things right?
A tale of two companies • There once were two competing companies, with equal market share • One company rewrote their product… • … and many customers migrated to the other! • The company who kept the old codebase now has twice the market share
Simplicity is achieved when… • Each box is understandable in isolation • Each box does only one thing • Each box represents a single concept • Each box is cohesive
Strangler application Database nuovo App Nuova Database legacy App Legacy Batch Sync Utenti Apache Perl filter Utenti migrati Utenti non migrati Router Old and new apps Update mechanism
For best results, the new app and the old should not be aware of each other! • A router • The old application • The new application(s) • An update mechanism