But I thought you beat the inevitability of death to death just a little bit â€“ The Tragically Hip
I started a fairly recent talk on estimation poker with the following line:
A slide emblazoned with a provocative statement, but not one without merit. As the shock wore off and the crowd grew restless I reached into the gaping maw of palpable disagreement for some input. Turns out Iâ€™m crazy â€“ these Project Managers and Business Analysts had successfully shepherded several projects where the estimates turned out to be bang on. Even with big up front design. Seemingly debunked, I cast a line for what these projects had in common. A few of the answers:
â€œWe had an excellent team with a lot of domain knowledge.â€
â€œWe had an excellent team with experience writing this type of application.â€
â€œWe had an excellent team and it was an expansion to an existing system.â€
TouchÃ©. Orâ€¦not so fast. Iâ€™ll give you a moment to ponder the common thread woven through these finely honed ripostes. (No points for saying that good software depends on an excellent team â€“ thatâ€™s obvious.)
Did you get it? Each one of these statements is inherently and intensely subjective. I would be surprised if a team with a lot of domain knowledge building an extension to a system they originally implemented couldnâ€™t estimate to within a single unit of work. But what happens when your crack Java Web Ecommerce SWAT team has to implement a .NET Accounting Application for Windows?
To predict the behavior of ordinary people in advance, you only have to assume that they will always try to escape a disagreeable situation with the smallest possible expenditure of intelligence. – Friedrich Nietzsche
The sad reality for too many of my developer brethren is that someone in a far flung Ivory Towerâ„¢ will create a giant specification, then giddily double click a Microsoft Project desktop shortcut to assign tasks and times. When the schedule slides (likely the next day, if not that day), some poor peon will get the near full-time task of updating the precious Gantt chart on a daily basis. By the power of Xenu, I wish this was a joke. In time the updates canâ€™t outrun the inevitable domino cascade and Bad Things Happen. The autopsy will likely find the cause of death to be â€œinsufficient analysis.â€
I hear you, I hear youâ€¦â€So Mr. Big Man, whatâ€™s your solution?â€ Since Iâ€™m not in the energizing, moisturizing, tantalizing, romanticizing, surprising, her-prizing, revitalizing tonic biz, the truth is I donâ€™t have one. I donâ€™t think thatâ€™s a failure, but a realization â€“ Iâ€™m not the lone ranger, and the estimation problem may be a bugbear, but itâ€™s not a werewolf. We need to base zero (or low) information initial estimates on the following, written in stone facts:
- We cannot think of everything before we start.
- You donâ€™t know what you want until you see it.
- User satisfaction comes from handling change, not mitigating risk.
Hell, there are no rules here– we’re trying to accomplish something. – Thomas A. Edison
This doesnâ€™t suggest that our Big-Up-Front-Design needs to become Gargantuan-Up-Front-Design, but that we should take an iterative approach.
I refuse to believe that the resemblance between Gantt charts and waterfalls is purely coincidental.
 Why do we call these places â€œivoryâ€ towers when they are employed in the practice of such dark arts?