Zero Defect Tolerance and Perfectionism

This is more interesting than your average tweet as it contains three or perhaps four different opinions together.

Firstly I’d like to briefly introduce everyone:

Anne Lamott is the author of several books, including “Bird by Bird: Some Instructions on Writing and Life” where this quote appears. The full paragraph is:

Perfectionism is the voice of the oppressor, the enemy of the people. It will keep you cramped and insane your whole life, and it is the main obstacle between you and a shitty first draft. I think perfectionism is based on the obsessive belief that if you run carefully enough, hitting each stepping-stone just right, you won’t have to die. The truth is that you will die anyway and that a lot of people who aren’t even looking at their feet are going to do a whole lot better than you, and have a lot more fun while they’re doing it.

Jim Coplien is an Agile Software Developer with many more credentials than can be adaquately summarised in one sentence. See here for a fuller description.

Sonja Ablignaut is the founder and CIO of More Beyond, which offers Strengths Finder based coaching.

Esther Derby runs Esther Derby Associates Inc. which provides Agile Consultancy services, and retweeted Sonja’s quote.

Dan North is and probably will forever be best known for introducing the development world to Behavior Driven Development.

Now I would like to give my take on all of this:

Anne Lamott: I agree. Writing is an art, and a process that requires continuous refinement.
If you are writing a book, your first draft is rarely going to be much good. Writing a blog post is a lot easier than writing a book, but it’s still common (at least for me!) to have a crappy first draft. As an example, if I demanded perfection from own blog posts, I would have published exactly zero articles.

Sonja Ablignaut: Appears to be making a link between Anne Lamott’s quote and Software Development. If this is the case, then I agree! One example of this might be having a vision of the perfect product with every imaginable feature. Another example might be insisting on 100% code coverage.

Jim Coplien: Insists on zero known defects. I agree.

Dan North: Sees Irony. I entirely disagree! These two concepts are hardly related at all. Why?

The beginning of wisdom is the definition of terms. – Socrates

refusal to accept any standard short of perfection.

1) the expression of one’s meaning by using language that normally signifies the opposite, typically for humorous or emphatic effect.
2) a state of affairs or an event that seems deliberately contrary to what one expects and is often wryly amusing as a result.

There is some debate regarding whether a defect is a bug, or a deviation from requirements. I will use the term bug, but regardless of your definition here, in absolutely no way does refusing to ship with known defects equate with perfectionism.

Zero Defect Tolerance is about satisfying your definition of done.

Zero Defect Tolerance values:
Quality over mediocrity
Professionalism over sloppiness

However having no defects does not mean that the software is of high quality. Far from it! It is quite possible to create awful software with zero known defects. Zero defects is a very low baseline. However, having zero known defects is the most fundamental, most obvious and most important measure of software quality that we have.

But perfectionism? No that is something else. Perfectionism is pursuing the unattainable. Having zero defects (that we know of) is not only attainable, it can be quite easy, as long as you don’t get too far ahead of yourself.

Write tests as you go and fix tests as you go. Write tests that match what your users actually want, and for everything that your users want. And then ship.

And version 1 will be a long way from perfect. But if it has no defects, that’s a good start and gives you a good foundation to build on.

Further Reading

Comments on Reddit
Agile Connection: Zero Defect Vision
Mind Tools: Zero Defects

Follow me on Twitter

One thought on “Zero Defect Tolerance and Perfectionism

  1. Thanks for the nice summary. I do think there is at least a paradox lurking at a deep level here. But it goes away if one removes a misunderstanding on Sonja’s part. Kaizen mind is about the pursuit of perfection, not about perfection. There is a difference between zero defects and zero known defects. I often discover defects after the fact, and redress them at the time they become known. I have a fear that Sonja quotes Lamott in the context of the state of something, whereas I am stating something about a process of becoming.

    I won’t say that zero defects is easy but I do feel it’s attainable. I nonetheless treat it, operationally, as a goal rather than as an objective. There’s something important going on at the meta level here, and it’s the same behaviour I applied as a Researcher at Bell Labs. A Researcher is chartered to take risks: we are expected to “fail” 80% of the time for a suitable definition of failure. This of course leads to a risk paradox.

    If I fail to achieve zero defects I neither disappear in a puff of logic nor do I yearn to commit suicide. It is just information. It’s an opportunity to introspect and learn. The difference between my view, and what I consider to be the simplistic view behind the retort, is that in my case perfection is a process (as you rightly state above) and in her case it is a state. I think that’s a bit naive given any knowledge about what modern physics says about reality, but it is a sadly uncommon view in the Western world. (You find it much less in the East.)

    Of course, such lapses are there for someone who, er, might let such bugs of misunderstanding slip through.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s