When my wife and I had our first child, we were scared. A baby is such a gigantic responsibility, bigger than anything else in my life. The people at the hospital, relatives and friends were WAY too layed-back and trusting of us. Jeez. It was like they didn’t truly grasp the magnitude of the responsibility.
Yes, I know. I was over-reacting. It is a typical first-time-parent reaction. What really helped set our minds at ease was a book called “What to expect when you are expecting” and “What to expect in the first year”. After reading these books, we felt like we had some solid information and when things went bad or things got weird, we could look it up. Most of the time, the weird stuff was typical, expected behavior for a child. There was no reason to panic. This was part of the normal development process and it would pass.
Years ago, for the first time in my career, my team was required to do time estimates. Derr, um what? No training, no expectations or examples. Just, “you guys are smart. Figure it out and give perfect answers immediately”. What’s the worst that could happen, right?
My immediate expectation went like this: “certainly, they can’t expect us to be very accurate, the first time we try this. However, if for some reason, they do have unrealistic expectations, they will be disappointed or even agitated. So, I should probably try to set realistic expectations before I hand them my first guess”.
In contrast, one of my colleagues reactions went more like this: “Oh holy heck, this is evidence of some heinous plot. They are making me braid my own rope so they can hang me with it. What else could it be? There is no possible good-outcome from something like this. So, we must unionize and refuse to deliver any such kind of condemning documentation. My plan will only work if we all stand together. Lets hold hands and sing Janice Joplin songs now”.
My conversation with my boss went like this:
Me: We’ve never done anything like this before. You can’t honestly expect us to be very good at it from the start.”
Boss: No, of course not but we need to get good at this. Our business depends on it.
Me: Could we have some training or guidance on how to do this?
Boss: I don’t know if any such training exists. I think you might be a pioneer in this field. Can you handle that?
Me: I’ll give it my best shot. Just promise me that you will work with me until we figure out how to do it well.
Boss: Its a deal.
My colleague predicted the following outcome:
- I will give an estimate
- It will be inaccurate
- Management will use it as evidence to fire me
- Evil laughter and insensitive suit-wearing touchdown dances and ridicule as I packed my desk and get walked to the door
- My colleague would email me an “I told you so” to my home email address. Unless the sys-admin blocked all outgoing email to me or management fired anyone associated with me, just for fun.
The way that things played out went much more like this:
- We did some research on common/popular time estimation techniques for programming
- We chose Function Point analysis over CoCoMo analysis
- Our first estimates were pretty good but had several mistakes that affected our accuracy by 10% + n (n being generic start-up/wrap-up tasks that were not described by FP or CoCoMo)
- We made adjustments and got our accuracy within 5%
- Management was happier but tested our stamina by asking/requiring us to seek ways of improving
- We analyzed our list of reasons for outliers (timeline killers). We constructed strategies for anticipating/detecting them and resolving them earlier in the process.
- We had to change our methods/methodology to help us resolve outliers as early as possible. Our estimates got within 3% accuracy, unless a new outlier/cause surfaced.
- We considered ways of mitigating uncommon outliers and determined if the cost of detecting them outweighed the cost/impact of each. It was a typical risk assessment / mitigation strategy/process. Some risks were determined to be too costly to mitigate.
In the end, we got very good at working our projects with accurate estimates. Whenever we blew a timeline, management still acted rather surprised and expressed concern and (reasonable) displeasure. We continued to work on it and constantly considered ways to improve. There were no miracles and nobody was expecting any.
In contrast, my colleague who refused to do estimates, things went quite differently
Things went like this:
- He refused to do estimates
- Management became convinced that he had something to hide
- He insisted that he had nothing to hide and became more paranoid and abrasive
- Management became more paranoid, which in turn made my colleague more paranoid
- My colleague was nearly fired several times, in spite of the fact that he was otherwise doing an excellent job
- Someone was assigned to do estimates for him (me), which made things very awkward for him and I (thanks buddy)
- After a while management was satisfied with the estimates and everyone put their guns away. We moved back to DEFCON 3 and everyone chilled-out.
- My colleague learned to do estimates but refused to take over the process. just on principal alone
- He left to start his own company
- He found that he had to do accurate estimates as part of owning his own company (because everyone, everywhere expects this).
My point of all of this is that [making accurate estimates] is a skill that anyone can become good at doing. You just need to do a little research and be realistic about your expectations (eg. you won’t become a ninja overnight). It is unlikely that you will be able to avoid it for long, unless you are a scam-artist and become good at that instead. For that reason, people who refuse to put-together timelines are often suspected of evil-doings. If you are not a scam-artist or engaged in evil-doings, then don’t act like it. Yes, it is that simple.
When your estimates are wrong, you should expect management to pay you a visit, be deeply concerned, ask you what happened. At that point, you should have an idea or two about how to avoid it in the future. Be open and honest. If you get fired, it won’t be because of a bad estimate. Seriously!
One thing that you might not realize is that mistakes are natural. You should expect them periodically. Management is also going to expect some errors. In fact, if there are never any mistakes, people should be suspicious of the lack of mistakes. So don’t worry about perfection. That is not possible and it is unrealistic. Spend your time detecting and fixing your problems. Be open and honest about it. Also, get credit for finding and fixing those problems. It is in the best interest of everyone.
In the end, if you simply accept that time estimation is a part of your job, you will do it well and people will admire your professionalism.