Saturday, December 13, 2008

The Broken Window Effect


A broken window - not a notable event by itself but, if not fixed soon enough, might lead to the idea that the owners don't care. If that's the case, eventually another window gets broken or some graffiti is painted on the walls. Later, it spreads throughout the entire neighborhood. The criminality rate starts to raise and the community collapses. A dramatic scenario that is quite unlikely to occur if there weren't already hidden tensions beneath the peaceful surface but the point is that, if an issue is left unfixed, things are much likely to start degrading exponentially. Imagine a car parked in the street. It can stay there for months left untouched but, once somebody breaks one of its windows or punctures a tire, the car is soon vandalized: all windows are broken, beggars start using it as a place to spend their nights, all valuable parts are stolen and it becomes a wreck in no time.

Smaller scale, personal life, common example: it is easy to wash the dishes immediately after dinner but, once you leave them in the kitchen sink unwashed, new dishes will start to gather there and it will be more difficult and unpleasant for you to wash them. A dirty car, uncompleted jobs are just the same. It is easy to maintain things in proper shape but, once you loose track of them, they start to multiply and then it is more difficult to put them back in order - with really bad possible consequences: lack of motivation, depression, loss of productivity and a sense of incompleteness, affecting your mood, your job, your relationships.

In software development, sloppy code maintenance can lead to disaster. It all stars with the inability to enforce coding rules or standards, a too permissive architecture and a lead programmer that does not validate code - either because he / she is too tired, under too much pressure or just doesn't care. Failure to maintain a good code quality is a clear sign that the project is slipping and every programmer will start hacking his way through the source or impose his personal view on things, leading to bugs and spaghetti code. Once this state of things installs, it triggers an acute loss of motivation in every team member, the feeling that the project is loosing track that, in turn, leads to a great decrease in productivity. People become unhappy with their jobs, soon fights start to happen and some might even start looking for something else. Again, a snowball effect.

Points I'd like to make:
  • Little things can get amplified and have really bad consequences if not properly recognized and managed.
  • Problems left unfixed generate a feeling that "no one cares" and weight that will, eventually, lead to bigger problems.
  • Taking care of issues when they first manifest is the easiest way to stay fit.
The subject is somehow analyzed, among other very interesting topics, in "The Tipping Point: How Little Things Can Make a Big Difference", written by Malcolm Gladwell - published in Romania by the "Publica" print house.

An interesting article on the subject is also "http://www.ambiguous.org/robin/word/brokenwindows.html"

No comments: