views:

579

answers:

12

When estimating tasks, how does one break from the grip of Hofstadter's law?

+7  A: 

Hofstadter's Law is not meant to be taken seriously --- if it were true to the letter, every task would take an infinite amount of time if you took Hofstadter's Law into account.

Adam Rosenfield
maybe that means that we should do nothing...
LB
So you don't find that it has some sense to it?
ripper234
It still has some sense, but only in that it's a humorous take on the fact that we developers are lousy at making time estimates. You can take it into consideration, but blindly increasing a time estimate isn't all that much better than the original misconceived time estimate.
Adam Rosenfield
Not necessarily an infinite amount of time. Converging geometric sums, Zeno's paradox and whatnot...
Rock and or Roll
Isn't it 3 times longer than you think, even when taking Hofstadter's law into account? That sounds infinite to me.
Kirk Broadhurst
+12  A: 

If you can politically: Estimate in small chunks, work in small iterations, and focus attention on what caused the deviation from the estimate to make the next estimate better.

One of the major causes of bad estimates in my experience is the lack of experience actually using the architecture planned for the project. By adjusting the estimates as things become more concrete and clear the estimates get better over time.

The other major cause of bad estimates is bogus estimates. Estimates kept artificially low to win a bid. The only way a consulting firm can break that cycle is give good estimates and win enough projects and deliver on the estimates to earn a reputation that they hit their estimates. Enough clients will respect that to make a reasonable business out of it, but building that up will be hard.

Yishai
That first "if" is a very big conditional. I've been in two consulting firms that built (and kept) reputation for accurate estimations for commercial projects, and it was a major advantage.Unfortunately, I'm doing Government consulting work now, and wildly unrealistic lowball estimates are the norm across the industry.
mpez0
+1  A: 

Base you estimates on past performance, not on best case scenarios. This does require you keep track of time spent on your projects. I don't care if you "know" that it will only take "6 weeks" to finish, if it took you 3 months to complete a similar project last time, it will probably take you 3 months the next time.

Jim C
A: 

+1 for @Yishai - one of the benefits of an agile methodology like scrum is that people actually get feedback on the accuracy of their estimates.

You're never going to get better at something if you never know if you're wrong...

chris
Perhaps you aren't getting the whole StackOverflow thing. You can press the arrow next to the answer to +1 someone and comment on their answer if you need to instead of submitting a new answer.
JohnFx
And I did, but wanted to add the scrum mention, and though it deserved its own answer.
chris
A: 

I like this method:

  1. Make an honest estimate of the effort required for the task.
  2. Apply a multiplier to the estimate. At least 1.5 probably 2.0. With time comparing actual effort to estimated effort you will be able to calculate the true multiplier.

Collecting the estimated and actual efforts are key to improving your estimates.

John
A: 

Agile estimation always uses "ideal hours" which implicitly takes into account Hofstadter's law. So you don't need to fudge.

If you're answering as an employee ...

"Gee, boss, In a perfect world it would take X days. Let's add a cushion to it and I'll do all I can to get it to you in that amount of time. If the estimate changes I'll let you know immediately."

That is music to a boss's ears!

If you're answering as the business owner ...

You only give estimates to your customers when backed into a corner. Then you use ideal days with clear disclaimers and be ready to adjust because you're aware of Hofstadter's law.

Rap
+4  A: 
  1. Estimate how long time something should take to code.
  2. Multiply by pi.
  3. Be amazed by how often that is closer to how long it actually takes.

(This is also not to be taken as a scientific method, but it is another way of expressing how hard it is to correctly estimate time. I really use it sometimes, though...)

:)

Edit:
A method that is a bit more scientific: Specify a time for the absolute minimum and maximum time for a task, for example that it will definitely take between 5 and 30 hours. (Divide into subtasks to possibly narrow the time span somewhat.) You get a very wide time span, but at least it's more reliable than a guesstimate.

Guffa
This often worked for me, I used a higher number, though.
DR
Interesting. I'm going to start trying this out, just to compare with finished project times. You might be on to something. =)
anonymous coward
That's funny, over many years of my experience estimating a 3x multiplier is surprisingly accurate for both myself and other programmers that have worked for me. Perhaps it is some universal constant.
JohnFx
This "multiply by pi" stuff is golden. ;) Not my approach of choice, but I can't help but laugh.
Tomislav Nakic-Alfirevic
If you haven't developed good estimating skills yet: Make your estimate, then multiply by two, then go to the next higher convenient unit of time. Thus, a one day initial estimate goes to 2 weeks; four hours to 8 days, etc.
mpez0
+3  A: 

While "Hofstadter's Law" is a bit tongue-in-cheek, there are a couple of practices that can help you, in particular for first-pass/large item estimation:

  • Estimate in relative sizes. Meaning you don't say that an item takes X time, you say that an item A is twice as big as item B, and that item B is about 4 time as large as item C.

  • Gather data from previous estimating rounds and use it as a base line. So that when you are estimating a project, and notice that item A is about as big as item B from a previous iteration/project, and you know that item B has taken 2 days, you know that item A will most likely take about as long

  • Use "wisdom-of-the-crowds" to get higher quality estimates. I've used Planning Poker in a couple of projects and the outcomes are rather good.

If you want to know more about this you can start by watch Mike Cohn's presentation (Part 1 and Part 2) and/or read his book. While it's not the end-all,be-all of estimation, he does present some good practices and best of all, the reasoning behind the practices.

Bruno Lopes
A: 

Estimating is an art, as you know and there is a sub art that is the art of estimating contingency. :) In order to properly estimate contingency (generally a % of a total estimate), one must understand risks and mitigations. Basically, you multiply the risk of something happening with the damage it can do to come up with a risk factor. Then, you sum up all your risk factors and estimate your total risk. Contingency should range from 15% for very low risk projects (I never go below 15% contingency) to 50% for very high risk (it has been my experience that very few customers will except a higher than 50% contingency estimate).

JP Alioto
+2  A: 

See Evidence-Based Scheduling. There is already a SO discussion of some of its pitfalls here.

Brian
A: 

Hofstadter's law is just another implication of how notorious self-referencing is !..... the subtle humour has far reaching effects. In hindsight this law confirms that every law/principle/axiom which is structured by logic, is incomplete (Godel like), thus even taking such laws into concern, the logic may never be complete. The sense of infinity is again a play from Zeno's paradox (turtle vs. Achilles).... infinite time for Achilles to complete the race ....etc .... these are illustrations of the omnipotent evil of self referencing which contaminates all affine logical structure.

Arkapravo
+3  A: 

I used dice. Openly. In front of my manager. Typically I use 3 standard six-sided dice.

Boss: "How long is this going to take?"

Me: (rolls) "About 11 days."

Boss: "No, seriously."

Me: "Oh, seriously." (rolls) "About 7 days."

I also used to have a poster on my wall that said "Deadlines Amuse Me". Take from that what you will.

JUST MY correct OPINION
Hilarious, plain and simple! ;)
Tomislav Nakic-Alfirevic
True too. Of course I did this in front of a manager I knew very, very, very well. He was doing the whole acting-stern-while-cracking-up-on-the-inside routine while trying to scold me. It failed.
JUST MY correct OPINION