Jurgen Appelo writes:
In a Dutch article titled “Traffic is safer without rules” traffic expert Hans Monderman explained that the flow of traffic at an intersection can increase, while at the same time casualty rates decrease, when all traffic lights and road signs are removed. The reason is that, in a situation without rules or guidance, people feel compelled to take responsibility and to judge for themselves how to reach the other side safely and in one piece.
The cause of this paradox can be found in risk perception and false security. Remove the green traffic light (false security) and car drivers will not blindly go full throttle on the assumption that they have priority over everybody else. Wipe away the crosswalk and pedestrians will better watch out for any dangerous vehicles (increased risk perception). Monderman claimed that the number of accidents diminished, and traffic throughput increased, in all situations where this concept was introduced. The idea is called shared space, which entails that all participants in traffic are equal, and that they all have to watch out for each other. Nobody can assume priority over others.
Read the whole thing. Jurgen’s point is that rules can create a sense of false security and “sometimes it is necessary to abolish rules precisely to prevent people from blindly following them“. Unfortunately, in most current situations, people never look towards removing some existing process to make things better. We hear about “tailoring” which sort of implies you could remove stuff, but talk to any process consultant and they start blinking very rapidly when you ask them what can be removed.
But here is the twist: The mistakes created at a traffic intersection are by those who violate the rules consciously or accidentally. If everyone only crossed a green light, we wouldn’t have accidents. The usual accidents are caused by a person trying to beat a red light or someone racing out before it is green, resulting in tragedy.
Rules, if followed properly, create a safer environment (with respect to their purpose) than no rules. They are also efficient in the short-term, avoiding the need to make the same decisions over and over again. But rules are not followed by all the people all the time, because of forgetfulness, lack of training, etc. And so you cannot entirely rely on them to protect you. For example, if an intersection has too many accidents, then it is not enough to insist that rules are already in place. Instead, maybe the green light should be delayed and the lights for each side should only be visible from that side to avoid cars jumping out early and to let some red-light-crossers pass without incident.
In a software environment, you can have rules about how people should check code in properly. But these rules are unreliable because the people for whom these rules are made for are inherently unreliable, like all human beings are. Some people are better than others at following rules, but sooner or later, everyone makes mistakes. So the rules have to be supplemented with the right source control tool (probably a distributed version control system), battery of unit tests, continuous integration testing and other checks. The more natural or automated the additional checks, the better. Leaving things to human frailties is not the answer.
The caveat is that rules implemented for one purpose may cause tension with those for another purpose. For example, rules for “bulletproof code” may conflict with rules for “first to market”. They need not, but most people find it difficult to balance conflicting priorities and sometimes the same people may not be in charge for both purposes. Think about how different departments within your organization (legal, marketing, finance) may each have their own set of rules which together make an incoherent mess.