Thu, 05 Sep 2013

Estimating Tasks

As described in the previous post about our development process at GreatVines, we use LiquidPlanner for project management. Estimating how long tasks will take is important in most software development projects (and generally any project involving more than one person).

LiquidPlanner provides a great way of estimating tasks using an 80% confidence interval, but estimating tasks like this is a new concept for most developers. Below is a transcript with a developer that recently joined our project. We were able to get from "I have no idea how long it will take" to a decent estimate in about half an hour, but it should only take a minute or two for the next task.

2013-09-05 11:16:52: <Christian G. Warden> have you guys reviewed all of the
                     tasks for the september release?
2013-09-05 11:20:44: <Ben H> yes, but many of the tickets refer to parts of the
                     code I have no experience with so I have no idea how much
                     work they will be.
2013-09-05 11:23:11: <Christian G. Warden> you can put wide estimates on tasks
                     like that.  can you give me an example, and i'll walk you
                     through it?
2013-09-05 11:25:15: <Ben H> 10631525- Make Modal Form Fields scroll-able: I
                     have no idea where contacts are viewed in the application,
                     I haven't had any reason to look at their controller/model
2013-09-05 11:25:52: <Ben H> so any time estimate I would come up with would be
                     a sheer guess
2013-09-05 11:26:38: <Christian G. Warden> ok, no problem.  what's the
                     likelihood it will take you more than 2 weeks to complete
                     the task given what you currently know about the app?
2013-09-05 11:27:21: <Ben H> darn near 0% I would figure
2013-09-05 11:27:26: <Christian G. Warden> phew :) 
2013-09-05 11:27:31: <Christian G. Warden> how about 1 week?
2013-09-05 11:28:29: <Ben H> that's still very high, so 2%?
2013-09-05 11:28:38: <Christian G. Warden> how about 3 days?
2013-09-05 11:28:40: <Ben H> given that it looks like pure GUI work
2013-09-05 11:30:03: <Jim Thompson> yeah Ben the problem is that one customer
                     has put so many fields in the FieldSet that you can't see
                     the entire modal, the Save and Cancel buttons scroll below
                     the page
2013-09-05 11:30:33: <Ben H> I guess 3-4 days (if it is pure GUI work then 1-2
                     should be more then enough, unless there's something
                     unseemly complex)
2013-09-05 11:30:45: <Jim Thompson> I am going to move this task beneath the
                     Performance items Christian
2013-09-05 11:30:47: <Jim Thompson> (and Ben)
2013-09-05 11:32:20: <Christian G. Warden> would you say there's a 10%
                     probability that it will take more than 4 days?
2013-09-05 11:33:34: <Jim Thompson> at 12-32 hours it might have to drop off
                     the list, or at least to the bottom
2013-09-05 11:34:40: <Christian G. Warden> jim, we'll go through the tasks and
                     reprioritize after the estimates are updated.
2013-09-05 11:34:57: <Jim Thompson> ok, I also moved "New Task" and "New Event"
                     to October, which is when we promised it
2013-09-05 11:35:39: <Christian G. Warden> you're interrupting my estimation
                     lesson    :) 
2013-09-05 11:36:02: <Ben H> (yeah, he's been high balling for tutorial
                     purposes)
2013-09-05 11:36:11: <Jim Thompson> ok im out
2013-09-05 11:37:50: <Christian G. Warden> no, i want to come up with realistic
                     estimates.  if they're wide right now because of
                     uncertainty as to what it will take to complete them,
                     that's fine.  once we have estimates, we can decide
                     whether to invest time to come up with tighter estimates.
2013-09-05 11:38:44: <Christian G. Warden> so, do you think 4 days as a high
                     estimate is accurate?
2013-09-05 11:39:29: <Ben H> for this example I put 12-24, it's really wide and
                     most likely most of that will be learning about how that
                     GUI element is working and making the tests
2013-09-05 11:39:57: <Ben H> the range is more to show that it could go
                     horribly wrong if there is something there I have no idea
                     of
2013-09-05 11:40:24: <Ben H> but 12 still seems really high
2013-09-05 11:40:30: <Christian G. Warden> what's the likelihood that you will
                     complete the task in 2 hours?
2013-09-05 11:41:14: <Ben H> the likihood I'll complete it in 6 hours I would
                     meet the 10% threshold
2013-09-05 11:41:26: <Ben H> *likelihood
2013-09-05 11:41:38: <Christian G. Warden> ok, so, let's make it 6-24
2013-09-05 11:45:29: <Christian G. Warden> and you can check yourself by
                     imagining we're going to a casino.  you can choose from
                     two wagers:
                     1) roulette - there are 10 numbers on the roulette wheel.
                     if 1 or 10 comes up, you lose. if 2 through 8 comes up,
                     you win $100.
                     2) the bookmaker - if you complete the task in less than 6
                     hours, you lose. if you complete the task in more than 24
                     hours, you lose.  if you complete the task between 6 and
                     24 hours, you win $100. which wager do you want to take?
2013-09-05 11:47:25: <Ben H> bookmaker, it also means I can spend some
                     speculative time trying different approaches to find one
                     that solves the problem better
2013-09-05 11:47:34: <Ben H> if things go well
2013-09-05 11:49:16: <Christian G. Warden> so it's not really an 80% confidence
                     interval.  it might be more like a 90% confidence
                     interval.  you should make the range narrower.
2013-09-05 11:49:52: <Ben H> how then do you show the risk if (I doubt in this
                     case) that 10% could be really bad
2013-09-05 11:52:19: <Christian G. Warden> it's ok if there's an outlier
                     occasionally.  we want to get an accurate estimate across
                     all of the tasks.
2013-09-05 11:56:09: <Christian G. Warden> you should narrow the range until
                     you're ambivalent between taking the two wagers.  and
                     widen the range when you'd rather play roulette.
2013-09-05 11:58:02: <Christian G. Warden> but we've already gone from "i have
                     no idea how long it will take" to "i'm 90% confident, it
                     will take between 6 and 24 hours".
2013-09-05 11:59:40: <Ben H> I'm just worried it's misplaced confidence
2013-09-05 12:00:03: <Ben H> either way, given the range, I am (90%) confident
                     that I can get it done within the range
2013-09-05 12:07:07: <Christian G. Warden> nobody dies if you're wrong.  you're
                     expected to be wrong 20% of the time (once you narrow it
                     to an 80% confidence interval).  if we decide we need to
                     know with more certainty when something will be done, we
                     might ask you to spend an hour to do a little research so
                     you can come up with a tighter estimate, after which you
                     would adjust the high and/or low estimate.  for now,
                     though, estimate the tasks based on what you currently
                     know.
2013-09-05 12:07:50: <Ben H> ok

The roulette idea comes from Douglas Hubbard's How to Measure Anything.

business | Permanent Link

The state is that great fiction by which everyone tries to live at the expense of everyone else. - Frederic Bastiat