Estimating Without Time

Estimating Without Time

It’s really hard to estimate how longs things will take. When faced with a list of items and trying to figure out how long it will take to get through them, most of us will drastically overestimate or underestimate the time. It’s because humans are really not good at estimating time. But what if you could estimate without time?

Faced with a long list, it becomes very easy just to guess a time for each item and figure that everything will average out.

(Believe me, guessing that time will “average out” never works.)

But it is possible to get a general grouping of estimation by using some different methods of ranking – without time.

This Is Part of My Job…And I’m Terrible At It

As an IT developer, I am often asked how long something will take. I know that it is the weakest skill of every single developer – and I have never met a developer that was good at it.

So I avoid giving estimates before I start the work. Once I am well into the work (at least halfway done), I have a better feel for how long it is going to take to finish. But I never estimate up front.

In fact, I once had a manager call me and ask for an estimate up front. The conversation went like this:

Manager: I need to add a new feature to the program. It’s going (inserted details here). How long is it going to take? I really need an estimate today.

Me: Manager, I’ve worked for you for three years. In that time have I ever given you an estimate?

Manager: (after pausing to think). No.

Me: What makes you think I’m going to give you one now?

He laughed, but I held firm that I couldn’t give an accurate estimate until I was into the programming. He pressed me more, so I simply said “four months.”

Did I think it would take four months? No. I had a feeling it would take between two to eight weeks. But I wasn’t going to be held to an estimate.

The Worst Method: Guessing Times

I have tried guessing estimation for years within my personal task system, and this is generally the method I would have to use when estimating a project without any of the details being given.

My task system allows for any amount of time to be assigned to the task, but the most used ones are 5 minutes, 15 minutes, 30 minutes, 60 minutes.

I am so bad at guessing that I often think everything will take 15 minutes.

And if everything takes 15 minutes, nothing takes 15 minutes.

I’ve discovered that the best way to estimate is to do ranking.

Ranking Methods

The trick to estimating without time is to get the items ranked, or sorted, in terms of how long they will take. Once everything is sorted, you can eyeball it and give a much better estimate because you are able to see that Task A is in the sizing list right before Task B, therefore Task B will take as long or longer than Task A.

This requires that you have a list of tasks. This would not have worked in my situation above with the four-month estimate, because I didn’t have a list of tasks. But had I been allowed to really dig into the work and plan it out, I would have had a list of tasks I could rank.

Once you have your list of tasks, you can apply one of the following methods.

T-Shirt Sizing

This method is a favorite of my current client. He likens everything to a pile of t-shirts without size markings. You have XS (extra small), S (small), M (medium), L (large), XL (extra large) and XXL (extra extra large). I apologize to my non-US readers for this, but yes, this is how t-shirts are sized here. But that’s a story for another day.

If you pick one shirt out of the pile, you can’t tell what size it is. But hold it up next to another shirt, and you know which one is bigger and which one is smaller. That allows you to start putting the shirts in the piles corresponding to their sizes.

Same with the tasks. You hold one task up to another, decide which is bigger, which is smaller, and then group them.

This works really well, but only if you have a discrete number of time buckets that things can go in. This would apply well to the time ranges in my task system.

Fibonacci Numbers

This method uses the Fibonacci number sequence to rank the tasks. It assumes that no two tasks will take the same amount of time.

The Fibonacci sequence is a mathematical construct where you start out with 0 and 1 and each next number in the sequence is the sum of the two numbers before.

0…1…1…2…3…5…8…13…21…34…55…89…144…

I should point out that the numbers are not the amount of time something will take, but rather a way of ordering the tasks. The space between the numbers allows you to understand that these tasks are not equally spaced in the amount of time it will take you to do them.

The advantage is that it can handle an infinite number of items. The disadvantage is that it can get really overwhelming to shift things around up and down the scale (not to mention figure out the next number in the sequence).

Bubble Sort

The last method, my favorite, is a sorting method that allows you to compare two items at a time, like t-shirt sizing, and end up with an ordered list, like the Fibonacci numbers. It’s called the Bubble Sort, and it’s a powerful way to rank tasks.

The Bubble Sort is something I learned in my first programming class way back in the last century. It’s fairly simple to learn, and powerful.

There’s a great animated illustration of it on the Wikipedia page, and I’ll leave it to you to look at.

Unlike Fibonacci, you can have tasks that will take the same amount of time, and they will end up sorted next to each other with no large gaps.

Which Method to Use To Estimate?

Once everything is ranked, if you still want to get a time estimate, you will have to use time. (I know, Captain Obvious here). But it is far easier to get a good time estimate once you have the items either grouped or ranked.

I like to use T-shirt sizing when I have a set number of time buckets. This works well with my billing codes and how I handle my timesheets.

I like to use Bubble Sort when I am feeling particularly frustrated with the pile of tasks and know that I really need more granularity than t-shirt sizing will provide.

I don’t use the Fibonacci at all in my personal life, but I have seen it used on project teams.

In the end, it’s just about approaching it with something better than a guess.