When is it ok to compromise quality?

This weekend we packed up the littlest kids and trucked them over to the aunt & uncle’s house early Saturday morning. Our mission? Cleaning out the garage which has, over the holidays and last six months, become the dumping ground of partially finished projects and the victim of my latest office remodeling overflow.

I wondered how things got into such a state. We didn’t intend the garage to look like this. Just last spring we had it cleaned and everything was neatly in its place. Exactly the opposite of a thief in the night, items began to appear almost immediately and at random. A dropped off item, something that didn’t belong elsewhere in the house, something that we really wanted to finish/fix/sell, but just hadn’t gotten around to yet.

By now, everyone just figures the garage is the “junk drawer” that every kitchen has – just for our whole house. Every time I open the doors on the weekend I fear someone will think we’re the ones having a garage sale.

This week I was speaking to the development team about a decision we had to make. We could take a shortcut, which would inevitably require rework later, or we could invest the 2-3 days of extra effort and do it “right”^. Inevitably this started down the path of talking about the “broken windows theory“.

The theory itself is simple: General acceptance of a small defect will create an environment in which even larger defects are acceptable. There was an interesting social experiment conducted where a nice car was left in a bad neighborhood for several days. It remained completely untouched. The same car was left in a nicer neighborhood, but one of the windows was broken out. Almost immediately the car was rummaged through – by people most would never expect to act in such a manner.

In New York, there was a severe problem with crime and violence on the subway system in the early 1980s. Every time a subway car was tagged with graffiti and rolled through a station, it was said that it created a perception that people didn’t care about the subway. NY’s subway maintenance department soon started taking car out of service immediately and repaint them as soon as any graffiti was noticed. By addressing this issue head-on, New York was able to clean up its problems with crime and their subway system.

When is it ok to compromise quality?

Never. Incurring technical debt is one thing, though if you are putting in a known security risk, performance problem, or a faulty design that won’t meet the business requirements – it’s your responsibility to say something. Call it out like a broken window and request time to address it immediately. The next question is usually…

So how much shortcutting or planned inferiority should you allow on a new project?

In my career, I’ve almost never seen a technical debt item, identified up front, to be given ample time to be reworked later in the project. I would say that the proper amount of technical debt you are willing to incur is proportional to the amount of time you want to spend looking back at those broken windows and worrying about who will follow behind you – stepping over the glass and leaving their own marks behind.

^ I’ve learned in software to almost never use the term “right” or “wrong” as the spectrum of working code that solves a problem is much like art, to each we have a personal connection to it & our reasons for picking each color.