Don't Live with Broken Windows
A Conversation with Andy Hunt and Dave Thomas, Part I
by Bill Venners
March 3, 2003
Summary
Pragmatic Programmers Andy Hunt and Dave Thomas talk with Bill Venners about software craftsmanship and the importance of fixing the small problems in your code, the "broken windows," so they don't grow into large problems.
Andy Hunt and Dave Thomas are the Pragmatic Programmers, recognized internationally as experts in the development of high-quality software. Their best-selling book of software best practices, The Pragmatic Programmer: From Journeyman to Master (Addison-Wesley, 1999), is filled with practical advice on a wide range of software development issues. They also authored Programming Ruby: A Pragmatic Programmer's Guide (Addison-Wesley, 2000), and helped to write the now famous Agile Manifesto.
In this interview, which is being published in ten weekly installments, Andy Hunt and Dave Thomas discuss many aspects of software development. In this first installment, they discuss the importance of software craftsmanship and the importance of staying on top of the small problems in your projects.
Bill Venners: In the preface of your book, The Pragmatic Programmer, you quote a Quarry worker's creed:
We who cut mere stones must always be envisioning cathedrals.
You then say "Within the overall structure of a project there is always room for individuality and craftsmanship." What do you mean by that?
Dave Thomas: In a very structured environment, people tend to abdicate responsibility. People say, "It's not my job anymore. My boss is telling me what to do. A big master plan is given to me. I just have to do this module, and this module, and this module." The analogy is with a stone mason who is a very small part of a very big whole. The reality is that the stone masons building the cathedrals were seriously high quality craftsmen. They were always conscious of the fact that the work they were doing was going to be the face of a cathedral. What we're saying is, even if you feel you don't have the authority or responsibility to do it right, the reality is you do. The quality of the work you are doing is important. It contributes to the overall impact or effect of the project.
Andy Hunt: The other facet is that this allows or encourages individual artistry. You can't go hog wild. You're building a cathedral. You have to carve your gargoyle to fit into the overall theme and coherent tone of the place. You can't start carving swans or something. But within the overall design constraints of the whole, you still have that individual artistic liberty to do your best work as it relates to that whole.
Bill Venners: Why is that important?
Dave Thomas: Two reasons. First, programming is very difficult. To do it well requires a phenomenal amount of commitment. To motivate yourself and keep yourself committed, you need to have pride in what you're doing. If instead you consider yourself a mechanical assembly line worker, whose only job is to take the spec and churn out bytes, then you're not going to have enough interest in what you're doing to do it well. So from the global perspective, it is very important. From a personal perspective, why should you be doing work you don't enjoy? It is important if you are going to commit this much to a job that you enjoy it.
Andy Hunt: The idea of artistic freedom is important because it promotes quality. As an example, suppose you're carving a gargoyle up in the corner of this building. The original spec either says nothing or says you're making a straight on gargoyle just like these others. But you notice something because you're right there on the ground. You realize, "Oh look, if I curve the gargoyle's mouth this way, the rain would come down here and go there. That would be better." You're better able to react locally to conditions the designers probably didn't know about, didn't forsee, had no knowledge of. If you're in charge of that gargoyle, you can do something about that, and make a better overall end product.
Bill Venners: What is the broken window theory?
Andy Hunt: Researchers studying urban decay wanted to find out why some neighborhoods escape the ravages of the inner city, and others right next door—with the same demographics and economic makeup—would become a hell hole where the cops were scared to go in. They wanted to figure out what made the difference.
The researchers did a test. They took a nice car, like a Jaguar, and parked it in the South Bronx in New York. They retreated back to a duck blind, and watched to see what would happen. They left the car parked there for something like four days, and nothing happened. It wasn't touched. So they went up and broke a little window on the side, and went back to the blind. In something like four hours, the car was turned upside down, torched, and stripped—the whole works.
They did more studies and developed a "Broken Window Theory." A window gets broken at an apartment building, but no one fixes it. It's left broken. Then something else gets broken. Maybe it's an accident, maybe not, but it isn't fixed either. Graffiti starts to appear. More and more damage accumulates. Very quickly you get an exponential ramp. The whole building decays. Tenants move out. Crime moves in. And you've lost the game. It's all over.
We use the broken window theory as a metaphor for managing technical debt on a project.
Bill Venners: What is technical debt?
Andy Hunt: That's a term from Ward's Wiki. (See Resources.) Every time you postpone a fix, you incur a debt. You may know something is broken, but you don't have time to fix it right now. Boom. That goes in the ledger. You're in debt. There's something you've got to fix. Like real debt, that may be fine if you manage it. If you've got a couple of those—even a lot of those—if you're on top of it, that's fine. You do a release get it out on time. Then you go back and patch a few things up. But just like real debt, it doesn't take much to get to the point where you can never pay it back, where you have so many problems you can never go back and address them.
Dave Thomas: My current metaphor for that is my email inbox. Because I have this habit every now and then of not answering email for a while. And then it gets to the point round about the 250 message mark, where I suddenly realize, I'm never going to answer these messages. And it is the same with pending changes in software.
Bill Venners: How does technical debt relate to the broken window theory?
Andy Hunt: You don't want to let technical debt get out of hand. You want to stop the small problems before they grow into big problems. Mayor Guiliani used this approach very successfully in New York City. By being very tough on minor quality of life infractions like jaywalking, graffiti, pan handling—crimes you wouldn't think mattered—he cut the major crime rates of murder, burglary, and robbery by about half over four or five years.
In the realm of psychology, this actually works. If you do something to keep on top of the small problems, they don't grow and become big problems. They don't inflict collateral damage. Bad code can cause a tremendous amount of collateral damage unrelated to its own function. It will start hurting other things in the system, if you're not on top of it. So you don't want to allow broken windows on your project.
As soon as something is broken—whether it is a bug in the code, a problem with your process, a bad requirement, bad documentation—something you know is just wrong, you really have to stop and address it right then and there. Just fix it. And if you just can't fix it, put up police tape around it. Nail plywood over it. Make sure everybody knows it is broken, that they shouldn't trust it, shouldn't go near it. It is as important to show you are on top of the situation as it is to actually fix the problem. As soon as something is broken and not fixed, it starts spreading a malaise across the team. "Well, that's broken. Oh I just broke that. Oh well."
Dave Thomas: It comes down to showing that you care. Take for example some code that is kind of shared among the team, but primarily is mine. There's some code in there that is obviously bad, but it doesn't look like I care about it. I'm just leaving it bad. Anybody else coming into that module might say, "Well, Dave doesn't care about it. It's his module. Why should I care about it?" In fact, if you come into my module and do something else that's bad, you can say, "Well, Dave doesn't care. Why should I care?" That kind of decay happens to modules as well as apartment buildings.
On the other hand, suppose I notice an edge condition that doesn't work in my code. I know it's a bug, but the bug is not critical to the application today and I don't have time to fix it. I could at least put a comment in there. Or, even better, I could put assertion in there, so that if the edge condition ever hits, something's going to happen that shows I'm on top of it. By doing that, first of all I make it easier to identify the problem. But I also show other people that I care about that enough that they will fix problems too when they encounter them.
Andy Hunt: If you walk into a project that's in shambles—with bugs all over, a build that doesn't quite work—you're not going to have incentive to do your best work. But, if you go onto a project where everything is pristine, do you want to be the first one to make a bug?
Bill Venners: In your book you tell a story about a tapestry fire.
Andy Hunt: That is a true story. A former accountant of mine in Connecticut lived in a very up-scale, wealthy section of town. This guy lived in a super mansion. He had a tapestry hanging on his wall a little too close to his fireplace, and one day it caught fire. The fire department rolled in. The fire was blazing. The house was about to go up in flames. But the fire department did not simply come charging in the front door. They opened the front door, and they rolled out a little carpet. Then they brought their filthy dirty hoses on their carpet and put the fire out. They rolled their carpet back up and said, thank you very much.
Even with the fire raging, the fire department took the care to put down the carpet and keep their hoses on it. They took extra special care not to mess up this guy's expensive mansion. It was a crisis, but they didn't panic. They maintained some level of cleanliness and orderliness while they took care of the problem. That's the kind of attitude you want to foster on a project, because crises do happen. Stuff bursts into flame and starts to burn up. You don't want to go running around crazy and causing more damage trying to fix it. Roll out the carpet. Do it right.
Come back Monday, March 10 for Part II of this conversation with Pragmatic Programmers Andy Hunt and Dave Thomas. If you'd like to receive a brief weekly email announcing new articles at Artima.com, please subscribe to the Artima Newsletter.
Andy Hunt and Dave Thomas are authors of The Pragmatic Programmer, which can be purchased from Amazon.com at:
http://www.amazon.com/exec/obidos/ASIN/020161622X/
The Pragmatic Programmer's home page is here:
http://www.pragmaticprogrammer.com/
The Agile Manifesto is here:
http://agilemanifesto.org/
Ward's Wiki, the first WikiWikiWeb, created by Ward Cunningham, is here:
http://c2.com/cgi/wiki?WelcomeVisitors
Talk back!
Have an opinion? Readers have already posted 9 comments about this article. Why not add yours?
About the author
Bill Venners is President of Artima Software, Inc. and Editor-In-Chief of Artima.com. He is the author of Inside the Java Virtual Machine (Computing McGraw-Hill), a programmer-oriented survey of the Java platform's architecture and internals. His popular columns in JavaWorld magazine covered Java internals, object-oriented design, and Jini. Bill has been active in the Jini Community since its inception. He led the Jini Community's ServiceUI project, whose ServiceUI API became the de facto standard for associating user interfaces to Jini services. Bill also serves as an elected member of the Jini Community's initial Technical Oversight Committee (TOC), and in this role helped to define the governance process for the community.
Copyright © 1996-2023 Artima, Inc. All Rights Reserved.
FAQs
What is the myth of broken windows? ›
First proposed by the late criminologist James Q. Wilson in 1982, the broken windows theory of criminal justice holds that seemingly minor instances of social and physical disorder in urban spaces can contribute to an atmosphere of lawlessness that encourages more serious crimes.
Is the broken window theory true? ›They found “no consistent evidence that disorder induces higher levels of aggression or makes residents feel more negative toward the neighborhood,” they wrote in their paper in the Annual Review of Criminology.
What is the broken windows theory NYPD? ›The broken windows theory is an academic theory proposed by social scientists James Q. Wilson and George Kelling in 1982. The academic theory, which first appeared in The Atlantic Monthly, states that signs of disorder in a neighborhood, like a broken window, encourages petty crimes and leads to more serious crimes.
What is the broken window theory in schools? ›In education, the broken windows theory is used to promote order in classrooms and school cultures. The belief is that students are signaled by disorder or rule-breaking and that they in turn imitate the disorder. Several school movements encourage strict paternalistic practices to enforce student discipline.
What is the risk of broken windows? ›Broken glass also has the potential to be a health hazard if it is contaminated with toxic chemicals, blood, or infectious substances which may enter the body through a cut or puncture.
What is a criticism of the broken windows theory? ›The problems with the theory, which include the fact that perceptions of disorder generally have more to do with the racial composition of a neighborhood than with the number of broken windows or amount of graffiti in the area, are numerous and well documented.
What are examples of broken window fallacy? ›According to this fallacy, if a hooligan breaks the window of a bakery, the subsequent repair expenditures by the baker will have no net benefits for the economy. This is supposedly because if the baker had not spent his money to fix his broken window, he would have spent it on something else, say, buying a new jacket.
Why is the broken window story a fallacy? ›The broken window fallacy is an argument that assumes destruction and the subsequent repairs create a net benefit for society. This is a fallacy because it ignores lost opportunity costs or otherwise unseen factors because they are not readily obvious.
What are the advantages of broken windows theory? ›The obvious advantage of this theory over many of its criminological predecessors is that it enables initiatives within the realm of criminal justice policy to effect change, rather than relying on social policy.
How is zero tolerance theory different from broken windows theory? ›It should be noted that, while zero tolerance prioritises law enforcement, 'Broken windows' suggested a broader order maintenance strategy, not least because some of the targeted behaviour was not illegal and because some of the police methods advocated to deal with disorder were unlawful.
What is zero tolerance theory? ›
First published. 1 July 2021. Zero-tolerance policing (ZTP) is a strategy that aims to reduce minor offences and more serious crime through relentless order maintenance and aggressive law enforcement, against even minor disorder and incivilities (Dur and Van Der Weele, 2013).
What is the main argument of the broken windows theory quizlet? ›The broken windows theory argues that enforcing a zero tolerance strategy can control criminal activity. This implies that if there is a broken window in a neighborhood, action must be taken to fix the window immediately.
How did the broken window theory contribute to crime prevention? ›According to broken windows theory, heightened perceptions of disorder, increased fear of crime and diminished community social control are significant inhibitors of public participation in crime prevention arising directly from concerns for personal safety and sense of futility associated with the effort required.
Can burglars get through small windows? ›Even small windows such as skylights or bathroom fanlights need locks. A thief can get through any gap that is larger than a human head. Remember to keep windows locked. Remove the keys and keep them out of sight in a safe place.
Does a broken window add to the economy? ›The Bottom Line
The broken window fallacy argues that there is no economic gain from fixing the destruction caused by a certain event. Even though capital will be spent to repair any damages, that is only a maintenance cost that does not spur the economy in the long run, as it is not a true increase in economic output.
Broken glass is sharp. Even though the glass might shatter into smaller pieces, the fragments can still cause lacerations. If the cuts are deep, they can be very damaging. Cuts from glass in a car accident are not only painful but also increase the risk of infections, which can affect the entire body.
What are the cons of broken windows policing? ›Such practices can strain criminal justice systems, burden impoverished people with fines for minor offenses, and fracture the relationship between police and minorities.
What was one of the main findings from Wilson and Kelling's study broken windows? ›Wilson & Kelling's (1982) broken windows thesis posits that disorder and crime are causally linked in a developmental sequence in which unchecked disorder spreads and promotes crime.
Do more broken windows mean more crime? ›Now, Northeastern researchers say they have debunked the “broken windows theory.” In research published in the Annual Review of Criminology and inSocial Science & Medicine, they have found that disorder in a neighborhood doesn't cause people to break the law, commit more crimes, have a lower opinion of their ...
What does broken windows mean in slang? ›Broken windows refers to crystal meth, which FGW often implies is the fuel of the foos they highlight.
What is the significance of the window in the story? ›
What is the significance of the window in the story'? Answer: The window in the story, reveals niece's habit of playing jokes and pranks.
What is an example of zero tolerance? ›The phrase 'Zero Tolerance' is used to describe a policy, practice, or law that provides severe penalties for a certain behavior or offense, with no exceptions made for extenuating circumstances. Example of Use: “There's a zero tolerance policy in place regarding smoking: It isn't allowed on company property at all.”
What are the pros and cons of zero tolerance policies? ›- Pros.
- May be required by law. ...
- Aim to keep kids safer. ...
- Prepares children for the real world. ...
- Cons.
- Involves favoritism. ...
- Students banned from school face risks at home without supervision.
The Purpose of Zero-Tolerance Policies
The term was first introduced by the Reagan Administration when the President launched his War on Drugs. When the federal government passed the Drug-Free Schools and Campuses Act of 1989, zero-tolerance policies became the law.
Which statement most accurately summarizes broken windows theory? Signs of disorder breed additional disorder.
Was broken windows policing successful? ›Broken windows policing alone did not bring down the crime rates (Eck & Maguire, 2000), but it is also likely that the police played some role.
What is the broken windows theory in Chicago? ›In Chicago, the researchers Robert Sampson and Stephen Raudenbush analyzed what makes people perceive social disorder. They found that if two neighborhoods had exactly the same amount of graffiti and litter and loitering, people saw more disorder, more broken windows, in neighborhoods with more African-Americans.
What are some examples of the broken window fallacy? ›According to this fallacy, if a hooligan breaks the window of a bakery, the subsequent repair expenditures by the baker will have no net benefits for the economy. This is supposedly because if the baker had not spent his money to fix his broken window, he would have spent it on something else, say, buying a new jacket.
Why do people say they don't do windows? ›“I don't do windows.” That famous phrase originated in a 60's ad campaign, and the saying stuck for decades in reference to thankless jobs nobody wants to do.