Defining "Done"

Published 08 September 08 01:32 PM | Anonymous

In software development, like many other areas of life, we need to decide when some item of work is done. The decision of "doneness" has wide impacts as under-done creates creates defects, downstream rework, and lost opportunity costs while over-done wastes time and resource and incurs its own lost opportunities.

To be even more critical, in my review of documents from hundreds of clients I find that work items are often under-done in important areas and over-done in trivial ones. That is, the document cover, table of contents, document purpose statement, and sign-off areas have been vetted to precision. However, the requirement, design, test plan, or code contained within has defects both minor and major.

This may be explained by human nature as the trivial parts can easily be checked and confirmed. Committees or teams charted with creating common process and practices occasionally find that the only place where they can garner agreement and claim success is in the trivial. One instructor from my past called these the blah-blah pages; they just seem to go blah, blah, blah and not say anything really important.

What about that other part, the important part? Why can't the committees or teams which gain success on the trivial part garner the same agreement on these parts? Well I think the answer here lies not in human nature so much but in the nature of the problem. The issue is that the important stuff in software development, as in many parts of life, is contextual. What is going on in the project, the team, and the organization at the moment when the work artifact is completed all have an effect on the decision of done. You can't really spell out in advance what done looks like.

For example, let's look at the requirement written on a story card, "Make it faster". If I were to consult my requirement books, articles, and heck, even the class I teach, all would proclaim "Make it faster" a woefully inadequate and a completely NOT done requirement. Way too much ambiguity. No scale identified. Not tagged adequately. Not testable as it stands. And the list could go on. This requirement is doomed to cause a lot of defects and angst.

However, on my imaginary project where this story card has been written, the small team has been together for six years and through four releases. The story is was written shortly after the entire team had witnessed the prototype of the fifth version perform reasonable well but much slower than the fourth release did. Having a well defined target customer understood by every team member, the entire team knew what it would take to make that customer happy. For this team, the requirement "Make it faster" is in fact done. It is "good enough" to get the team to focus on the right work to the right level. There will be no defects or angst.

So we can't come up with a clear, complete, consistent definition of done for the parts of software development that really matter. Faced with this challenge, out committee and teams often take one of two paths. The first path is to create the "mother of all templates" and put in everything and every practice they can think of and give (often in small print, with dire consequences if actually attempted) direction that the template may be tailored. This offer to tailor is seen as the compromise to the reality of contextuality. Unfortunately, the compromise is not required as most implementers of templates know that if they do it all—make it over-done—then the process police will give them their blessing and all will be right in their world.

The other path that committees and teams often take to deal with not being able to define done is to slip into a "father knows best" syndrome. The person with the most experience in a given area (even if that means it is the recent hire who is the only one who claims to know the new technology) gets to define "done". So the entire team starts to do what the most experienced—or the loudest—person on the team does. Occasionally, like any flock or pack, there is a fight for dominance or pecking order. Most of the time everybody does it the same way that, by definition, fails the contextuality test.

Given the two paths I seen, what is a committee or team to do? Contextuality demands that doneness can't be defined ahead of time but the costs of not being done are so high. The answer, I believe, is not in defining "done" but defining how to determine "doneness" within a context. The process I use I call my "good enough" criteria. That is, I have four criteria I use to help me decide if the work artifact is done to a level that is good enough for what the project needs to do.

The four criteria are

  1. Sufficient to Proceed. Is the work to a level that the next person who must take up the work has what is needed to do their job?
  2. Appropriate for the Environment. Are the people who take up the work likely to understand it?
  3. Sanity Checks. Has the work committed a classic mistake that can easily be detected by the review of a short checklist of critical attributes?
  4. Feedback from Stakeholders. Do the critical stakeholders tell me that it is OK?

I find using the combination of these four criteria gives me insight into how done the work artifact is and is fully contextual. Process standardization zealots can take heart in the sanity checks and experience anarchists can rejoice in the feedback.

In future entries, I will explore each of these four criteria. Until then, I am anxious to hear how you define "done".

That's it, I'm done... for now.

Filed under: , ,

Comments

# Maksym Shostak said on September 16, 2008 06:24 AM:

Earl, you know, I had "Make it faster" task from

one project manager in the past. The requirement

was to make the build process (by Ant) faster.

When I asked to define how faster, the answer

was "just more faster" :)

I define "done" by intuition :) I think it is important

first - to define "done", and second - to define it right. Better to make wrong decision, then not to make any.

# How to take a break when programming | Ryan Kohn said on March 25, 2009 04:42 PM:

Pingback from  How to take a break when programming  |   Ryan Kohn

# Navajo Discounts, Navajo Clothing Blouse Concho Belt said on May 20, 2010 12:53 PM:

Pingback from  Navajo Discounts, Navajo Clothing Blouse Concho Belt

# Nissan Dealer Cape Town, Change Tail Light 2003 Nissan Altima said on May 20, 2010 05:07 PM:

Pingback from  Nissan Dealer Cape Town, Change Tail Light 2003 Nissan Altima

# G25 G 2500 Minivan 1997 Gmc Safari, Pontiac Grand Safari Radiator Review said on May 20, 2010 09:14 PM:

Pingback from  G25 G 2500 Minivan 1997 Gmc Safari, Pontiac Grand Safari Radiator Review

# 535is Style, Bmw 535is Model Horsepower said on May 20, 2010 10:08 PM:

Pingback from  535is Style, Bmw 535is Model Horsepower

# V1500 Part Auto Compare Chevrolet Chevy, V1500 Comparison Receiver Yamaha said on May 20, 2010 10:15 PM:

Pingback from  V1500 Part Auto Compare Chevrolet Chevy, V1500 Comparison Receiver Yamaha

# Bumper 2005 Ford Explorer Sport Trac, Spore Explorer said on May 21, 2010 01:27 AM:

Pingback from  Bumper 2005 Ford Explorer Sport Trac, Spore Explorer

# Cadillac Allante Buick Skyhawk, Citizen Jy0000 53e Skyhawk At Casual Watch said on May 21, 2010 01:56 AM:

Pingback from  Cadillac Allante Buick Skyhawk, Citizen Jy0000 53e Skyhawk At Casual Watch

# Sale Used Bmw Season 850ci Certified, 850ci Discount Problem 1993 Bmw said on May 21, 2010 02:00 AM:

Pingback from  Sale Used Bmw Season 850ci Certified, 850ci Discount Problem 1993 Bmw

# Used Dodge Challenger For Sale, Discount Chevrolet Caprice Dodge Challenger said on May 21, 2010 05:50 AM:

Pingback from  Used Dodge Challenger For Sale, Discount Chevrolet Caprice Dodge Challenger

# Benihana Fiesta, Ford Fiesta Brake Pad Replacement said on May 21, 2010 06:45 AM:

Pingback from  Benihana Fiesta, Ford Fiesta Brake Pad Replacement

# B3500 Horsepower, R3500 Part Truck New said on May 21, 2010 06:15 PM:

Pingback from  B3500 Horsepower, R3500 Part Truck New

# Mazda Millenia Radiator Copper Bronze, Coupon Mall At Millenia Orlando said on May 21, 2010 06:35 PM:

Pingback from  Mazda Millenia Radiator Copper Bronze, Coupon Mall At Millenia Orlando

# Aftermarket Torino Windstar Parts Ford Freestar, 2002 Ford Windstar Suspension said on May 21, 2010 07:39 PM:

Pingback from  Aftermarket Torino Windstar Parts Ford Freestar, 2002 Ford Windstar Suspension

# 1992 Bmw 318is Parts, 318i Aftermarket Order said on May 21, 2010 10:25 PM:

Pingback from  1992 Bmw 318is Parts, 318i Aftermarket Order

# 1981 Oldsmobile Toronado Toyota, Oldsmobile Toronado Used Browse Cars For Sale said on May 21, 2010 11:46 PM:

Pingback from  1981 Oldsmobile Toronado Toyota, Oldsmobile Toronado Used Browse Cars For Sale

# Hybrid 2008 Honda Civic Hyundai Elantra, 2000 Tiburon Repair Manual Hyundai Elantra said on May 22, 2010 04:10 AM:

Pingback from  Hybrid 2008 Honda Civic Hyundai Elantra, 2000 Tiburon Repair Manual Hyundai Elantra

# 2000 Mercury Sable Oxygen Sensors, 1995 Mercury Sable Repairs said on May 22, 2010 04:18 AM:

Pingback from  2000 Mercury Sable Oxygen Sensors, 1995 Mercury Sable Repairs

# Prius Battery Pollution Canada, Deals Toyota Prius Camry Hybrid said on May 22, 2010 06:25 AM:

Pingback from  Prius Battery Pollution Canada, Deals Toyota Prius Camry Hybrid

# Gm L300 3 Parts, L300 2 Removal Sega Saturn said on May 22, 2010 05:23 PM:

Pingback from  Gm L300 3 Parts, L300 2 Removal Sega Saturn

# R63 Amg Zone Dual 2009 Mercedes Benz, R63 Amg Auto Show Same 2007 Mercedes Benz - 498.eumreborn.com said on May 23, 2010 03:26 AM:

Pingback from  R63 Amg Zone Dual 2009 Mercedes Benz, R63 Amg Auto Show Same 2007 Mercedes Benz - 498.eumreborn.com

# 2000 Chrysler 300m Radiator Fan, Chrysler 300m Parts Accessories - 89.dlmreza.net said on May 24, 2010 06:23 AM:

Pingback from  2000 Chrysler 300m Radiator Fan, Chrysler 300m Parts Accessories - 89.dlmreza.net

# Bmw 750li Parts Oxygen Sensor Brake Master Cylinder, 750li Bumper - 202.animejin.com said on May 24, 2010 11:33 AM:

Pingback from  Bmw 750li Parts Oxygen Sensor Brake Master Cylinder, 750li Bumper - 202.animejin.com

# Honda Civic Real Estate, 2000 Civic Si Forum - 270.rkwrh.com said on May 24, 2010 01:57 PM:

Pingback from  Honda Civic Real Estate, 2000 Civic Si Forum - 270.rkwrh.com

# Achieva Aftermarket Review, Oldsmobile Achieva Aftermarket Timing Chain Cutlass Calais - 353.tgrconversions.com said on May 24, 2010 02:15 PM:

Pingback from  Achieva Aftermarket Review, Oldsmobile Achieva Aftermarket Timing Chain Cutlass Calais - 353.tgrconversions.com

# 1971 Volvo 1800 1800e, V1800 Inputs Unbiased - 386.1fh.org said on May 25, 2010 02:58 AM:

Pingback from  1971 Volvo 1800 1800e, V1800 Inputs Unbiased - 386.1fh.org

# Toyota Celica Supra Chilton, Toyota Celica Power - 463.eumreborn.com said on May 25, 2010 01:34 PM:

Pingback from  Toyota Celica Supra Chilton, Toyota Celica Power - 463.eumreborn.com

# Caravelle Toy, Thrift Volkswagen Caravelle - 224.an74.com said on May 25, 2010 01:35 PM:

Pingback from  Caravelle Toy, Thrift Volkswagen Caravelle - 224.an74.com

# Q45 Radiator Competitors Steering Rack, 2001 Infiniti Q45 Review Lexus Ls 430 - 114.rkwrh.com said on May 25, 2010 03:49 PM:

Pingback from  Q45 Radiator Competitors Steering Rack, 2001 Infiniti Q45 Review Lexus Ls 430 - 114.rkwrh.com

# Windsor Landing Apartments, 1991 Highlander Auto Parts - 121.animejin.com said on May 25, 2010 08:07 PM:

Pingback from  Windsor Landing Apartments, 1991 Highlander Auto Parts - 121.animejin.com

# 1984 - 2003 @ E 250 Used Distributors Contact, 06 Gmc Savana 2500 Cargo Van - 71.binggreen.com said on May 30, 2010 05:29 PM:

Pingback from  1984 - 2003 @ E 250 Used Distributors Contact, 06 Gmc Savana 2500 Cargo Van - 71.binggreen.com

# 1981 - 1996 @ Vgp Ac19v10 Port Replicator, R8 V10 Radiator United States - 429.computeronlinebingo.com said on May 30, 2010 08:53 PM:

Pingback from  1981 - 1996 @ Vgp Ac19v10 Port Replicator, R8 V10 Radiator United States - 429.computeronlinebingo.com

# 1994 - 1986 @ S420 Mature, S420 Headlight Brake Caliper - 171.mfbattle.com said on May 30, 2010 11:54 PM:

Pingback from  1994 - 1986 @ S420 Mature, S420 Headlight Brake Caliper - 171.mfbattle.com

# 1996 - 1988 @ 850ci Headlight 1994 Bmw Autohaus Az, Buy Bmw M6 Coupe - 44.renters.ws said on May 31, 2010 12:25 AM:

Pingback from  1996 - 1988 @ 850ci Headlight 1994 Bmw Autohaus Az, Buy Bmw M6 Coupe - 44.renters.ws

# 1981 - 1984 @ 2001 Silverado 1500 Specifications, Anh?ngerkupplung Silverado - 188.computeronlinebingo.com said on May 31, 2010 12:51 AM:

Pingback from  1981 - 1984 @ 2001 Silverado 1500 Specifications, Anh?ngerkupplung Silverado - 188.computeronlinebingo.com

# 1996 - 1983 @ Matrix Multiplication Linear Algebra, 2008 Toyota Matrix Interior Models - 18.computeronlinebingo.com said on May 31, 2010 01:33 AM:

Pingback from  1996 - 1983 @ Matrix Multiplication Linear Algebra, 2008 Toyota Matrix Interior Models - 18.computeronlinebingo.com

# 2002 - 1980 @ Pb25 Game Radiator, Pb25 Episode Download Exhaust - 129.zapstreaming.com said on May 31, 2010 02:13 AM:

Pingback from  2002 - 1980 @ Pb25 Game Radiator, Pb25 Episode Download Exhaust - 129.zapstreaming.com

# 1994 - 1986 @ Rio5 Radiator Replacement, Kia Rio5 Parts - 172.ja3ra.com said on May 31, 2010 12:32 PM:

Pingback from  1994 - 1986 @ Rio5 Radiator Replacement, Kia Rio5 Parts - 172.ja3ra.com

# 2002 - 1980 @ 1980 Sale Used Dodge Colt, 1911a1 Colt Government - 432.tvshowzone.com said on May 31, 2010 01:31 PM:

Pingback from  2002 - 1980 @ 1980 Sale Used Dodge Colt, 1911a1 Colt Government - 432.tvshowzone.com

# 1983 - 1994 @ 2000 Lhs Parts, Motor 2000 Chrysler Lhs Sedan - 356.myipgirl.com said on May 31, 2010 02:59 PM:

Pingback from  1983 - 1994 @ 2000 Lhs Parts, Motor 2000 Chrysler Lhs Sedan - 356.myipgirl.com

# 1986 - 1982 @ 750i Part Used Bmw 750il, 750il Buy Used Bmw - 287.an74.com said on May 31, 2010 03:05 PM:

Pingback from  1986 - 1982 @ 750i Part Used Bmw 750il, 750il Buy Used Bmw - 287.an74.com