Friday, October 8, 2010

How To Estimate Software

A guide to estimating percentage complete and remaining time.

I haven't looked at the problem. Completed: 0% Time esimate: about 2 weeks.

I've looked at the problem. Completed: 50% Time estimate: about 2 more weeks.

I've implemented almost everything. All that remains is the difficult stuff that I don't really know how to do. Completed: 90% Time estimate: about 2 more weeks.

I've done everything. All that remains is documentation, code review, tests and error handling. Completed: 99% Time estimate: about 2 more weeks.

I still haven't finished documentation, code review, tests, or error handling. The truth is I've been gold plating what I already wrote. But I just saw another problem that seems more interesting. Completed: 100% Time estimate: 0 more weeks.

14 comments:

Eric said...

Shouldn't you be doubling the estimate each time? To give the impression of finally having a handle on what it will "really" take to get it done?

dr-steve said...

10 Get estimate from developers
20 Multiply times by 3
30 Give estimate to developers for review
40 Go to 10

The Freerider said...

actually:
10 Get estimate from developers
20 Multiply times by π
30 Give estimate to developers for review
40 Go to 10

ZungTee898 said...

OH wow, pretty cool. Never thought about it that way before.

www.privacy-web.it.tc

Arto Vuori said...

I have some six months of data or so from one particular project, and did some comparing of the estimated and actual time some months ago. The magic factor was not π but rather very close to φ.

fonebone said...

I have a simple rule that seem to work fine: Multiply your best guess by 2.

jimbob said...

That's funny because "2 weeks" has always been my off-the-cuff estimate

charlie. said...

Get estimate from developers, double it, and move up a timescale. 5 mins becomes 10 hours, 3 hours == 6 days, 5 days == 10 weeks etc. It never fails.

James said...

Anti-gold plating is just another way of saying developer's ideas are worthless. The fact is developers are in a much better position to judge the business value of things like code quality, UI, exception handling, and a million things that are discounted by non-developers. If developers did only the bare minimum to meet the short-sighted requirements given, the project would fail because most PHBs have never heard of words like 'nonfunctional requirements' before. In fact a large percentage of projects do fail because performance wasn't taken into account, or quality wasn't considered. Rockets explode, planes crash, and government systems freeze solid every day. If it takes 10 weeks for a developer to make a honest working product, it takes 10 weeks.

philgo20 said...

golden

Jeff D said...

Wasn't the project name for Perl 6 "The Neverending Story"?

Jake McGraw said...

6 to 8 weeks

Manoj Kumar Singh said...

Hello 

Nice blogging... have a nice day! Just visiting here....

http://www.quantity-takeoff.com/
http://projectestimating.blogspot.com

Kim said...

This has worked surprisingly well for me in the past (not kidding!). Stick your finger in the air and multiply what ever number that comes to mind by 3.14159265.