The broken windows of software
By Martijn Storck
This is not a rant about an operating system. The broken windows theory was introduced in 1982 by social scientists James Wilson and George Kellin as follows:
Social psychologists and police officers tend to agree that if a window in a building is broken and is left unrepaired, all the rest of the windows will soon be broken.
This theory was an important factor in the prevention of crime and vandalism in the nineties. The idea is that if a broken window is left unrepaired, it signals that nobody cares and thus the barrier to break more windows is lowered. This extends to other urban concepts such as sidewalks (clean daily to prevent littering) or graffiti. The broken windows theory can easily be extended to software development projects.
The broken windows of software
-
Changesets that do not include automated tests;
-
Hacks to work around fundamental architectural or tooling issues;
-
Poor or missing error handling;
-
Skipping the pull request or review workflow;
-
Test suites that take too long to run or are unreliable;
-
Breaking conventions (style, architecture, documentation).
When senior developers in a team break windows like this they signal to their team members that they don’t care about the project (neither the code nor the business). If these windows are left broken, this will lead teams down a slippery slope where the number of broken windows will increase. These windows can be repaired when caught early, but if left unreparied they will eventually lead to a low quality codebase, unsatisfied developers, and, as an end result, an unhappy customer or business.
Quality is a team responsibility
It is the responsibility of every team member to keep their colleagues in check and prevent broken windows from piling up. Development teams often have to deal with pressure to fix issues and release new features fast, but it is important to not leave these broken windows unrepaired for too long.
Put those broken windows on the backlog and make sure they get fixed! This is all part of the cost of developing software and will benefit all those involved in the long run.
Photo by Tama66 via Pixabay.