Tell HN: My rule of thumb for initial estimation
48 points| RiderOfGiraffes | 15 years ago | reply
I've found these estimates to be remarkably accurate and use them all the time. If I think something will take a day of coding, it usually takes a week of work to get it properly done. That's not one day from midday Tuesday to midday Wednesday because I turn it into 3 mini-projects and run around the design/write/test/integrate cycle as fast as possible, but it's a surprisingly good predictor.
I now use it when estimating other people's work. If they say it will take a day, or a week, I multiply by 6. If they say it will take a month, it'll never be done.
Unless they're using the same rule ...
[+] [-] dugmartin|15 years ago|reply
[+] [-] frankus|15 years ago|reply
[+] [-] cperciva|15 years ago|reply
[+] [-] tomjen3|15 years ago|reply
[+] [-] rw140|15 years ago|reply
- If I think I understand everything it involves, then I take my estimate for all the bits, add them up and multiply by 4.
- If I think I understand everything it involves, have done something similar before, and gone through my list of things to do a couple of times looking for stuff I've forgotten, I can multiply it by 2 instead. If I'm unsure how long something will take I am never allowed to round down.
- If I find myself sizing something with the word 'just' in the sentence, I'm missing something big. (e.g. Then it's just a matter of recreating the error condition and making sure my error gets triggered correctly.)
- If I'm not almost finished (i.e. functionality working with some hacks, unit test passes) by halfway through the time then I'm going to miss my deadline.
- I am still mystified as to where that other half of the time goes (I have a proper 90% rule going on), but some of it is getting my code in a shape where I'm happy about checking it in - dealing with comments so they mean things to people other than me, removing ugly bits of code, checking with co-workers in places where I wasn't sure I'd made the right decision. My maximum speed on this is about 500 lines a day. Some more time is then spent getting things back working again, because I'll have broken things in the process. And I need at least a day to get a sandbox build behaving properly, and willing to run on my hardware.
edit: formatting
[+] [-] drbaskin|15 years ago|reply
[+] [-] thibaut_barrere|15 years ago|reply
- http://www.mountaingoatsoftware.com/books/1-agile-estimating... (with free chapters; also read the various presentations on the site)
- http://www.amazon.com/Software-Estimation-Demystifying-Pract...
One key point is to really understand what is risky in terms of estimating (either technically or politically or because it's too vague).
At some point, you can really become accurate as long as the scope is well understood.
In my case, the Fred Brooks technique does not apply: my last customer iteration was 70% infrastructure, 20% code, 10% pm. The one before was 70% code, 10% infrastructure, 10% documentation, 10% pm.
[+] [-] gte910h|15 years ago|reply
It's full of great light and heavyweight techniques I use all the time in my day to day running a fixed fee software development company (which basically thrives or falls on the quality of our estimation and the risk pricing to go with it).
[+] [-] fara|15 years ago|reply
[+] [-] briandoll|15 years ago|reply
There are many techniques for estimating how long software development tasks will take primarily because they all suck. Estimating takes time, and is almost always wrong. Some people even advocate figuring out how off your estimates are, to improve your future estimates, so you can be a better estimator. What?
I think it's best to stop estimating and start shipping.
[+] [-] RiderOfGiraffes|15 years ago|reply
In short, sometimes estimation matters. Knowing when it does and doesn't matter is a different question and a different skill. Perhaps for you it never matters, but before you diss someone as heavily as you just did, I suggest you consider that some people have different circumstances than yours.
[+] [-] HeyLaughingBoy|15 years ago|reply
When you say "a day of coding," what fraction of a normal workday are you able to spend actually writing code?
[+] [-] grigy|15 years ago|reply
[+] [-] wilhelm|15 years ago|reply
[+] [-] mrlyc|15 years ago|reply
[+] [-] robwgibbons|15 years ago|reply