90% Complete not = Done

What do you do when a developer claims “I’m 90% complete”? Well, don’t rely on it and patiently wait for 100%.

Example of “90% complete”

Traditional methods of reporting progress involve reporting on percentage complete on granular work items. The trouble with that approach is the numbers are not very reliable. For example:

Q: “How is the Data Visualisation Widget going?”
A: “Great. I’m 90% complete”
[two days later]
Q: “How are you going now with the Data Visualisation Widget?”
A: “Still great. I ran into a few problems but got them sorted. I’m 90% complete”
[etc]

Arrrrgh!

90% complete = not Done

90% Complete

90% Complete

A developer who is confident they’ve got the problem cracked conceptually, and they’ve just got to make the code align with concept, will be tempted to report “90% complete”. They will, pretty much always, be wrong.

Those folk who report “90% complete” are not bad people. They are not trying to deceive you. They are probably just being overly optimistic and are giving in to the desire to give a positive answer to “How is it going?”. But software development is hard and something always comes up to make that final 10% stretch, and stretch, and stretch.

The Pareto Principle is at work here. You might know this as the 80-20 rule. The idea is that that 80% of the effort comes from 20% of the causes. Or, turning that around, 80% of the work (the easy bit) is done in 20% of the time.

When a developer claims “90% complete” there is a good chance they are near completion of the easy bit but haven’t bumped into the hard bit yet. So “I’m 90% complete” can actually mean “I’m 18% complete for the total work for this User Story but I haven’t done enough work yet to realise that there is another 82% still to do”.

Other ways to say not Done

Obviously “90% complete” has some common alternatives. All of these mean “not Done”:

  • 67% complete1
  • Nearly there2
  • Should be finished by the end of the day3
  • Just have to deploy to the integration environment4
  • Works on my machine5

Notes
(1) Yup. Happened today. One of the developers said he was “67% complete” on a User Story. Quite a precise number but I doubt the accuracy. Hopefully he was just trying to rib me.
(2) Nearly where exactly?
(3) Or tomorrow. Perhaps Wednesday.
(4) Which might fail horribly. Let alone all the other exit criteria they have to fulfil to get dev done.
(5) Give the man a prize.

Done = 100% complete

Because of the “90% Complete” problem I, like other Agilists, don’t ask for a percentage complete on granular Agile work items (User Stories and Tasks if you’re using them). “Done” is done. 100% or nothing.

Tracking progress when Done = 100% complete

Some people might look at that and ask how I track progress on a User Story if I’m waiting for 100% complete.

Well, I don’t track it with a number. To be honest the number would be rather uninteresting even if it was correct. We are talking granular work items here, so they’ll be finished in a couple of days. I can live without knowing whether a two day task is 67% complete. The effort to track and report that level of progress would be far more than the value generated.

Of course I do have to check whether the developer is struggling and spot whether a two day task is going to turn into four day task, or worse still a two week task. For that I track progress with a conversation – that is what the daily team meeting is for.

User Story Status

I’ve been picking on developers but the same idea applies to other disciplines. In fact I track the story’s status throughout the development process (define, development, manual test, whatever). So, for example, I do know if I’m 100% done on Manual Testing for a particular User Story, or not. If the tester reports “90% complete” then, as with the developers, they get zero credit on the status. If the User Story is “In Progress” in the Manual Test step then I don’t particularly care to what degree it is “In Progress”. I do care that it is not “Done” for Manual Test.

Just to be clear even if the User Story is 100% complete in Manual Test I still give myself zero credit for the User Story in terms of overall progress. I just know where that item is in the process.

Done for User Story = Live

I only give myself credit for the User Story when it goes Live. Nothing prior to that is done for the User Story. 100% credit or nothing. Live or nothing.

In a subsequent post I’ll look at how to track progress across a project or programme when Done = 100% complete.

This post is part of my What do I do When … ? series. Please drop me a line or add a comment if you’ve got a question you’d like answered.