Sunday, April 08, 2007

How To Accurately Estimate Projects

Back in the 1940's, the Rand Corporation described a methodology to accurately estimate just about anything for any project. The technique is called Delphi and it was enhanced in the 1970's and was re-named to Wideband Delphi after Barry Boehm added some refinements. There is an excellent article at embedded.com that describes the technique. It's worthwhile reading before going on to my next paragraph.

I really get a kick out of the hard core PMBOK crowd when they tell me that agile techniques are fine for small projects but don't scale to large ones. Frankly, I just have to look at some of the MS-Project monstrosities I wonder how scalable those are. Wideband Delphi has been used to accurately estimate some pretty large, expensive and life-critical projects. After reading the article, for anyone with even with a bit of familiarity with most agile techniques, one sentence in the article should really stand out:

"Do some architectural design, bring a group of experts together, have them estimate individually, and then use a defined process to make the estimates converge to a common meeting point."

That's really not much different than "elaborate and understand the user stories, have the team individually estimate story sizes and iterate through negotiations to reach an agreed upon size for the story." That's pretty much what happens in an XP or Scrum iteration, isn't it? That's certainly the approach I have used. Let's take a closer look at the Wideband Delphi and Scrum to see where Scrum has corresponding steps.

Delphi: Assemble a team of 3-7 experts and a moderator.
Scrum: Assemble a team of no more than7-9 including a scrum master.

Delphi: Coordinator presents each expert with a specification and an estimation form.
Scrum: Scrum master presents the stories.

Delphi:
Coordinator calls a group meeting in which the experts discuss estimation issues with the coordinator and each other.
Scrum: Scrum master calls a planning meeting with the team and product owner to clarify the stories.

Delphi: Experts fill out forms anonymously.
Scrum: Team members individual estimate each story's size.

Delphi: Coordinator prepares and distributes a summary of the estimates.
Scrum: Scrum master puts stories and corresponding sizes on the wall.

Delphi: Coordinator calls a group meeting, specifically focusing on having the experts discuss points where their estimates vary widely
Scrum: Scrum master allows everyone to explain their story sizes, one story at a time.

Delphi: Experts fill out forms, again anonymously, and steps 4 to 6 are iterated for as many rounds as appropriate.
Scrum: Scrum master facilitates a negotiation between team members to come to a resolution of a story size, one story at a time until all stories are sized.

I just find it interesting that a proven technique gets revived about 50 years later to be codified into agile methodologies. It's also interesting to see that expertise and experience are valued as the key ingredients for accurate estimates above all other methods. Too bad PMBOK doesn't include a "History of Project Management" that goes back 100 years; I think fewer projects would fail if project managers actually repeated the useful parts of history, like recalling that people are always more accurate than (MS) Project.

3 comments:

Anonymous said...

Correct apart from a few points:
1. never heards somebody presented it as agile practice never heard before. On the countrary you will usually find people saying almost all practices are known it is just the way they are combined to achive the inspect/adapt in everything you do
2. delphi isn't timeboxed and generally takes more time. planning poker for example is time boxed and gets you an estimate for a few minutes.
3. Agile estimating is in size , delphi estimation is in time. Not going to comment on it but in my experience avoiding time estimates helps

Michael James (Scrum Coach/Trainer) said...

Great post and comments.

If anyone is new to Planning Poker, here's a humorous example of how it might work.

--mj

Kofi said...

Hi,

I just wanted to say that I really enjoyed your blog and this post. You make some very informative points. Keep up the great work!

-
Delphi development