Don't forget to brush your teeth
Or — how does a piece of software become legacy?
I think the answer is:
One commit at a time
To paraphrase Fred Brooks quote from the The Mythical Man-Month: “How does a project get to be a year late? One day at a time.”
There is never one commit so awful that it destroys a project and means that it must be rewritten from scratch or thrown away. It is either through a series of commits over a sustained period of time in which each commit does not improve the system sufficiently, or it is through a lack of commits.
One thing about brushing your teeth is that skipping it once is entirely unlikely to lead to dental ruin. However, skipping it or not performing it often enough over a sustained period of time will surely lead to poor dental health and a trip to the dentist at the very least.
In a high pressure delivery environment, it can be very easy to convince yourselves that skipping brushing your teeth — for example performing dependency upgrades — today makes sense given all of the other priorities you have such as that feature you just have to get out, because after all, one day won’t make a difference.
You must very cautious about this — if I were to ask you, given two teams, one of which has skipped brushing their teeth before (to continue the metaphor), and one which has not — who would be the most likely to skip brushing their teeth in future?
I think most of you would say it is the team that skipped it in the past.
So it is with organisations — organisations that have high pressure one day, are more likely to have it the next.
And so, over time, commit by commit, the systems developed by such organisations fall further and further behind, ultimately requiring large and costly programmes of work to upgrade and refactor or rewrite them entirely that stop any new features being delivered for customers and the business.
Make sure that you are not skipping brushing your teeth every day, and that each step your team takes, each commit, is sustainable.