Evidence Based Scheduling - Joel on Software
joelonsoftware.com
joelonsoftware.com
Anyway, my problem with scientific analysis of my work habits has always been the observation phase. I can keep timesheets, but that turns out not to be useful data because I only keep timesheets reliably when I'm full of energy. When I'm full of energy, I'm more productive at everything.
However, when I run though what Joel was talking about, you create a feature list with the estimate first. Keeping track of the time you spent on a feature means going down the list and putting down how much time you spent on it. Keeping track of time by just entering in a log has always been problematic for me.
And not having to keep track of interruptions is even better.
Essentially, take the gut feeling, double it, double it again, and add an increment.
Example1: gut estimate is "yeah, thats a five hour task".. so, 5 -> 10 -> 20 plus.. oh.. 2 hours, so 22. Seems absurdly large, yes, but factor in all those little thingsl, testing, deploying, etc, and lo and behold, two days plus some is gone.
Example2: Hmm, 2 weeks of solid (40hr week) dev time. So, 2->4->8 + 1 = 9 weeks. Woah, yeah that seems a bit large for project X.. but wait, client drags on assets, unforseen issues here and there, run into a snag for a couple days.. and boom!, almost two months have gone by.
I know it feels dishonest to so drastically overestimate what you Really think it will take, but the truth is the reason there is so much distrust of programmers by business people is that we so consistently miss deadlines. I know the estimate seems huge, but it needs to be, because ultimately it is very realistic, and if you beat it (doubtfully by much), everyone will be happy.
An oversized estimate finished early is better than an undersized estimate finished late. Always.
Ahh! Of course...
How dare he.
;)