I'm going to publish the list of notes about software estimation. This is the first one.
Manager: When this task will be done?
Developer: I'll finish it in two days.
Narrator: He will not.
Estimation is a dangerous area. It's not only because there is more than one way to make it right and several ways to screw it up, but this is also true for everything around. Even baking a pie carries various risks: from not making it in time to burning the house down.
So, what's wrong?
91%* of people have a strong opinion about estimation. It's a religious question, like pineapples in pizza: for some, it works, for others, it doesn't. Sometimes people haven't even tried, but they are determined against.
Pineapples – for cocktails. Not for pizza.
Estimation – for managers. Developers are ok without it.
There are two reasons for developers to be concerned about estimation:
- Their work doesn't need estimation at all
- They do it wrong
The second one is much more interesting, but we have to start with the first. After all, why would you waste your time mastering estimation if you're fine without it?
If you're sure that you need estimation, check my next note "Four Types of Tricky Tasks and How to Estimate Them" and follow me on Twitter, I'll be posting more notes soon.
What I mean by "estimation"
It's important to clarify it before we dig deeper.
"Estimation" is a collaborative process resulting in any knowledge of the work ahead can help us make plans.
The words "collaborative", "process" and "knowledge" are equally important, but the last one is crucial for us right now. If we don't need this knowledge, we don't need estimation.
There are several examples of the previously mentioned knowledge:
- "Task A" is 8 story points (see Planning Poker)
- "Task C" looks similar to "Task B" which we had done last week
- Francesca would do "Task D" for 2 hours, for Jakob it'd take at least 5
- "Task E" is XL. "Task F" looks more like "M" (see T-shirt size estimation)
Even though all these examples are different, they can help in planning and prioritisation.
But do we really need it? Maybe it's just a waste of time? Well, it depends. All situations are different, and it's better to bring an example.
The knapsack problem #1
Some people believe the knapsack problem is a perfect analogy when it comes to explaining everything related to planning or estimation. As I like all bad analogies, let's live with it for a while.
This is how Wikipedia defines it:
The knapsack problem or rucksack problem is a problem in combinatorial optimization: Given a set of items, each with a weight and a value, determine the number of each item to include in a collection so that the total weight is less than or equal to a given limit and the total value is as large as possible.
It derives its name from the problem faced by someone who is constrained by a fixed-size knapsack and must fill it with the most valuable items.
What was the last time when you had to deal with this problem? I bet that never because it's too simple for the real world (despite being NP-complete).
Oversimplification is not our goal, so let's face the harsh reality.
Imagine yourself as a young professional living in Norwich.
What is Norwich? It's a charming city in the UK, in around 2 hours from London by train. You like the climate, you like living with your parents in their 3-bedroom private house, but salaries in Norwich bother you a lot. It's only £32.9k on average, and you know that you deserve more.
You also know that the average salary in the City of London is £88.3k, and your skills should be enough to find a job there.
You decide not to wait for too long, and you're renting a little studio in London – 18 square meters, with a queen bed and a chair in there. Nothing else.
No problem – you have plenty of stuff in your parents' house. As you're going to visit them on weekends, you can just put whatever you need in your backpack and take it to London. Eventually, you move everything you need, correct?
First of all, you have just 18 square meters in your new place, which is not enough to fit all your belongings. You can go back and forth a hundred times, but you won't move all. In other words, your backlog has more items than you can take. You will need to decide what is essential and how hard it would be to move it. You may not need the whole family library, especially if it would take 20 trips.
What if you prioritised your work improperly? Well, you will suffer for some time. In your situation, the cost of misprioritization is considerably high – imagine that you didn't take neither kitchenware nor bedding but took all your photo albums. Well, at least you can use them as a pillow for a week.
As you start prioritising all your stuff, you find out that your parents want to know your plans as well.
Your mother asks when you're going to move the aquarium because she is tired of cleaning it. Your father wants to know when you would need his help. Your little brother is curious when you plan to finish everything, and the room will be vacant for him to move in.
You need to plan execution and commit to it.
Another problem is the fact that you have various external deadlines.
You have a birthday in two weeks, and you want to invite your friends. It's better to make sure you have everything for a party: plates, glasses, a TV and a PlayStation.
And finally, this is your first move, so you aren't fully aware of its complexity and all dependencies you may have.
Instead of planning it on your own, you would probably benefit from discussing it with your family and with friends. They may ask questions you didn't even think about.
"Can you take your cat to the train? Actually, does your rent agreement say something about cats?"
"You said that you don't have Internet yet, do you really need to put Amazon Echo to your bag now? What can you take instead?"
To summarise, the estimation will be useful for you if any of these are true:
The knapsack problem #2
Imagine the same situation: Norwich, moving out from your parents' house to another, much smaller one, same unknowns and same difficulties.
But now you have only one difference – the flat you rented isn't in London, it's two blocks away from your parents.
Do you see how everything changed? Although you have the same 20m², you're much more flexible. You don't have to keep weekly planning – whatever you need, you can walk 45 meters and take it, it costs no extra money.
In this situation, estimation is useless – you take whatever you need the most and carry it.
Sometimes it's too big, and you ask a friend for help.
Sometimes it's too cumbersome, and you give it up.
Sometimes you a TV is the most important thing, but you need a TV stand for it, so you take the stand first to satisfy the dependency.
If you are in a similar situation, probably estimation is a waste of time.
To summarise, I invert the previous picture.
The last part
Estimation can be very helpful if you deal with negotiable scopes and/or deadlines. When done properly, it helps to plan ahead, focus on the most important task at any moment, and achieve long-term goals.
At the same time, there are plenty of situations when you don't need estimation, for example:
- When a government introduces new regulation, and your product isn't compliant
- When the customer gives you a complete specification and does accept work only in full
- When you're working on your own pet project with no deadline
In all these cases, you would rather spend your productive time on actual work, rather than on guessing numbers.
* I made up this number (as I do with many other numbers) based on my rough biased understanding of the situation. After all, that's exactly how estimation works.