Project Estimation is HARD
We bought a new house a few months back, and moved in 5 weeks ago today. About 4 weeks before moving in, we started on some renovations we wanted to knock out; the intention being they'd be done before we moved in. Some of these were finished before, while others were not. They all, however, gave me some additional perspective into estimating work of any type, not just building software.
Decisions - they just lead to more decisions!
The decision-making process has been around for a long, long time. It's nothing new to any of us - you have a choice to make and multiple options. Weigh out pros and cons, do research, seek advice from others, and then make your decision. But, it often doesn't stop there. That decision may only be the first of many subsequent decisions to see the task or situation through to the end.[1]
One of our desires was to have the interior of the house repainted. We have a toddler, so we decided it would be easier and faster to hire a painter to do this, whereas on our last home we did it ourselves. So, we had the colors picked out and our painter got to work. Nothing like a plan coming together.
Ever buy something online and then when it gets delivered you don't even recognize that it's the thing you bought, because it looks quite different than what you expected? Yeah, that apparently can happen with paint... The colors we had picked out for the majority of the house and the kitchen turned out to be way different painted on walls than painted on the color samples from the paint store. Yay. Now, we have a minimum of one more decision to make, with the potential for two:
- Do we keep the colors as they are?
- If no, what do we replace them with?
So, we decided on new colors, and our painter got to painting - again. Fortunately, these colors were wonderful on our walls. However, the new kitchen color simply didn't go with the backsplash that the previous homeowners had installed. It was a 1-tile-high clearly DIY job, which we didn't like anyways. We now had yet another decision - do we try to paint or glaze the existing tile back-splash to better complement the kitchen color and save money, or do we redo it? Given that we really didn't like what was existing, we redid it.
Had we not repainted the kitchen, this secondary round of decisions regarding the back-splash wouldn't have needed to be made at this time. Decisions leading to further decisions (especially true for decisions whose outcomes are not what is expected) made our project timeline longer and our cost higher.
Overages and Underages - Yin and Yang of Project Management
In the software industry, we deal with overages and underages quite a bit. Specifically, there are a lot of times when we have one of the following two scenarios:
- Underage of Specifications, Overage of Time
- Overage of Specifications, Underage of Time
This is a never-ending juggling act for PMs, developers, and most folks involved in a software project. Have extra time? Pick what you can proactively work from the backlog (or write moar unit tests... :p) Running out of time? Do the report of shame in the scrum meeting to let the team know a story will have to roll over to the next sprint. This, my friends, is not unique to software. Managing overages and underages are just a part of any project, even home renovations.
One of our projects was to put down hardwood floors in the main areas of the house. So, I measured everything, went to the flooring warehouse, and bought what seemed to be the right amount, adding in a little bit to account for waste and such. Somehow, I ended up with 200 sq ft of overage. Fortunately, I was able to sell it. But, I somehow ended up way over what was needed.
Conversely, I took the same care when purchasing tile for my kitchen back-splash, measuring everything, adding a little bit extra to account for waste and such, and ended up 3 tiles short. So, it's another trip to the flooring warehouse for 3 little tiles...
I'm fairly decent at math, and figuring up square footage of rectangular areas isn't rocket science. So, how was I so far over on one estimate, and so far under on another? I've asked myself the same question in some software tasks - why did one thing that should have been simple take so much longer than estimated? Why did this other, more complex, thing fall right into place and take so much less time than estimated? It's just another caveat to all the things that make estimating hard!
Unknowns - ones you didn't even know that you didn't even know
With every project there are unknown items. Some things are such that you just can't tell anything about them until you strip away some minutia to see them for what they are. Most of these are unknowns that you know about. You know something is there that needs investigating, but the outcome is unknown until you actually do the investigation. Other unknowns are much more fun - they come totally unexpected from far out in left-field and whack you in the head.
We always do a home inspection when buying a home. This is just a good investment for a purchase so important. The home inspection found all appliances to be in good working condition, so we went into this thinking that it would hopefully be a little time before we had to replace appliances - as those can be expensive. However, after doing the work on the kitchen, we found that the appliances had some issues that were not functionality-relevant, but still important to us. I'll skip the details here, but we ended up getting rid of them and buying a new ones. This was just one of those things that came out of nowhere and we hadn't the slightest expectation of this even being a potential outcome.
My key take-away from this is that it doesn't really matter how well you plan something out and make your estimates. Plans can go sideways in an instant, so you shouldn't take your estimates overly seriously. Estimates shouldn't be the bottom-line, more of a goal-line. Is estimating worth the effort? Absolutely! The estimating process can bring to light how difficult/important/needed a project or task truly is (or isn't). Is it the norm for projects to fit the estimate exactly in terms of time and cost? No, not from what I have experienced. So press on, do your best, and expect that some estimates will be way off, either over or under, what happens in reality.
-Bradley
Decision Tree is an excellent approach for working with decisions that lead to more decisions. ↩︎