Defining 'Done'

  1. Posted on September 8, 2008 1:32:PM by Earl Beede to Practicing Earl
  2. Testing & QA, Technique, humor, quality, done

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 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 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.

Maksym Shostak said:

September 16, 2008 6: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 Koh said:

March 25, 2009 4:42:PM

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

Navajo Discounts, Navajo Clothing Blouse Concho Be said:

May 20, 2010 12:53:PM

Pingback from  Navajo Discounts, Navajo Clothing Blouse Concho Belt

Nissan Dealer Cape Town, Change Tail Light 2003 Ni said:

May 20, 2010 5:07:PM

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

G25 G 2500 Minivan 1997 Gmc Safari, Pontiac Grand said:

May 20, 2010 9:14:PM

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

535is Style, Bmw 535is Model Horsepower said:

May 20, 2010 10:08:PM

Pingback from  535is Style, Bmw 535is Model Horsepower

V1500 Part Auto Compare Chevrolet Chevy, V1500 Com said:

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 Explor said:

May 21, 2010 1:27:AM

Pingback from  Bumper 2005 Ford Explorer Sport Trac, Spore Explorer

Cadillac Allante Buick Skyhawk, Citizen Jy0000 53e said:

May 21, 2010 1:56:AM

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

Sale Used Bmw Season 850ci Certified, 850ci Discou said:

May 21, 2010 2:00:AM

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

Used Dodge Challenger For Sale, Discount Chevrolet said:

May 21, 2010 5:50:AM

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

Benihana Fiesta, Ford Fiesta Brake Pad Replacement said:

May 21, 2010 6:45:AM

Pingback from  Benihana Fiesta, Ford Fiesta Brake Pad Replacement

B3500 Horsepower, R3500 Part Truck New said:

May 21, 2010 6:15:PM

Pingback from  B3500 Horsepower, R3500 Part Truck New

Mazda Millenia Radiator Copper Bronze, Coupon Mall said:

May 21, 2010 6:35:PM

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

Aftermarket Torino Windstar Parts Ford Freestar, 2 said:

May 21, 2010 7:39:PM

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

1992 Bmw 318is Parts, 318i Aftermarket Order said:

May 21, 2010 10:25:PM

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

1981 Oldsmobile Toronado Toyota, Oldsmobile Torona said:

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 Tibu said:

May 22, 2010 4:10:AM

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

2000 Mercury Sable Oxygen Sensors, 1995 Mercury Sa said:

May 22, 2010 4:18:AM

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

Prius Battery Pollution Canada, Deals Toyota Prius said:

May 22, 2010 6:25:AM

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

Gm L300 3 Parts, L300 2 Removal Sega Saturn said:

May 22, 2010 5:23:PM

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

R63 Amg Zone Dual 2009 Mercedes Benz, R63 Amg Auto said:

May 23, 2010 3: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 Par said:

May 24, 2010 6:23:AM

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

Bmw 750li Parts Oxygen Sensor Brake Master Cylinde said:

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 said:

May 24, 2010 1:57:PM

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

Achieva Aftermarket Review, Oldsmobile Achieva Aft said:

May 24, 2010 2: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 said:

May 25, 2010 2:58:AM

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

Toyota Celica Supra Chilton, Toyota Celica Power - said:

May 25, 2010 1:34:PM

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

Caravelle Toy, Thrift Volkswagen Caravelle - 224.a said:

May 25, 2010 1:35:PM

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

Q45 Radiator Competitors Steering Rack, 2001 Infin said:

May 25, 2010 3: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 P said:

May 25, 2010 8:07:PM

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

1984 - 2003 @ E 250 Used Distributors Contact, 06 said:

May 30, 2010 5: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 said:

May 30, 2010 8: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 Ca said:

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 said:

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, said:

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 said:

May 31, 2010 1: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 Dow said:

May 31, 2010 2:13:AM

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

1994 - 1986 @ Rio5 Radiator Replacement, Kia Rio5 said:

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 Co said:

May 31, 2010 1: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 said:

May 31, 2010 2: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 said:

May 31, 2010 3:05:PM

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

Dark Under Eye said:

March 10, 2011 5:13:PM

Pingback from  Dark Under Eye

Post a Comment:

 
 

Earl Beede

Earl Beede, CSDP is a Senior Fellow at Construx Software, where he designs and leads seminars and provides consulting services on early project-lifecycle practices, estimation, requirements, quality assurance, contract management, and software methodologies.

With more than 20 years experience as a quality assurance representative, systems analyst, process architect, and manager, Earl has designed and written software development processes for companies across a wide variety of industries. Prior to joining Construx, he held quality assurance and systems analyst positions at organizations that include the Department of Defense, Boeing Computer Services and Verizon Wireless.

Earl has a Bachelor's degree from the University of Washington. He is a member of the IEEE Computer Society and a past coordinator of the Seattle Area SPIN (Software Process Improvement Network).

 

Contact Earl