The tyranny of bad code leads to the tragedy of legacy code

You create legacy codeset, one check in at a time

jigsaw

“Tyranny of small decisions. Where a series of small, individually rational decisions ultimately leads to a system wide negative consequences, or tyranny.” Gabriel Weinberg and Lauren McCann — Super Thinking

There is term called the Tyranny of small decisions where a series of small decisions that alone do not make much difference can collectively cause big problems.

“So what is the tyranny of small decisions? In a nutshell, it is what results when a person, group of people, business or organization make a number of small decisions over a period of time. These decisions are not bad decisions on their own but, taken together over a period of time, the result of the decisions are diametrically opposite from the outcome desired.” Are You Getting Beaten By the “Tyranny of Small Decisions”?

The journey to legacy

Entropy states that systems want to move to from an order state to a disordered state, to resist this you have spend energy keeping order. A code base wants to change to a disorder unless developers spend energy to keep it ordered and maintained.

Code quality is kept high by creating standards, using code reviews and static analysis tools to keep quality and resist the code moving to disorder.

Developers will do as little as is acceptable, they check in code that meets the minimum level to pass a code review. If you don’t make sure quality is kept high, it starts to deteriorate and move towards a legacy code state.

Death by a thousand cuts

One check in with poor quality code doesn’t seem to bad, what harm can one check in with poor quality code.

Once one low quality check in is allowed, it opens the door for more low quality check ins. It sets a new lower standard for developers to use.

One poor quality code check in, will be followed by more and will transform into legacy code. It starts with one poor check in and will eventually be death by a thousand poor quality check ins.

Once you let in one poor quality check in, it leads to code base degradation, which isn’t where you think it would lead. There comes a tipping point where the number of poor quality code check ins leads to a code base that is irreversibly reduced to a state of legacy book.

Conclusion

Legacy code can be avoided by stopping the low quality code from entering the code base. This takes energy to keep the code ordered and it needs the team to consider the whole code base.

Standards are needed to ensure the developers know the quality expected. Standards can’t just be a document, they have to be known, understood and enforced. Having standards and implementing them, creates the culture of the team.

Legacy code is a mindset, where the development team has lost the fight against poor quality code.

Legacy code start by letting in one poor code check in and deteriorates, so keep your standards high.

Further reading

Other articles you might like

Worked in software development for 20 years, Dynamics 365, Power platform and delivering enterprise projects. Books are awesome

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store