So my wife and I talk - a lot - about life, the universe, and everything - and we decided we should try to capture some of our thoughts on the matter as a series of video blogs. I grabbed dinner at Aqui, she was grabbing dinner at home, and then we were going to get the studio set up so we could do a test run.
None of that happened as planned.
I was late leaving Aqui; I never got to run all my errands. Sandi started to cook eight-minute paste thirty minutes before I was scheduled to get home; I got home late and she was still cooking. I tried to get the software set up on the kitchen table while she finished up, hoping the two of us would both finish in time for a trial run in the great room which we planned to use.
When our time was up and it was time to go to the gym, I’d never left the kitchen table, and she’d never left the kitchen counter, working on her pasta, watching over my shoulder while I wrestled with the software. I did get it installed, and, in the end, we managed to capture a handful of screenshots and a few short videos, the longest of which lasted only five minutes.
I heard a study once which claimed that when it comes to estimation, there are two groups of people: optimists, who underestimate schedules by a lot, and pessimists, who only underestimate schedules by a little. Both groups in the study failed to estimate the actual time it would take them to complete the task.
This is a natural human instinct. My wife and I have speculated that people wouldn’t really ever take on large tasks if they knew how long they took — certainly in my experience in computing, if you give people a realistic schedule, they’ll either push back or even cancel the project. Now I freely admit I make mistakes - but when I've called bullshit on schedules, I have never been wrong.
Here’s a few rules of thumb for you:
- If you’re estimating by the seat of your pants, you’re wrong. It will take longer.
- If you need it done in a short amount of time, you’re out of luck. It will take longer.
- If you’re an administrator and can crack the whip to get it done, quit fooling yourself. It will take longer.
- If you’re estimating based on past experience, and you think it will take less time, you’re kidding yourself. It will take longer.
- If you think there’s really good reasons it’s easier this time, you’re even wronger. It will take longer.
- If, on the other hand, you’re an expert on this kind of thing, congratulations: you’re the wrongest. Thanks to the process of automatization, through which humans learn to become experts, your mind has abstracted away all the details of the problem so they’re out of sight, out of mind - so what seems easy and quick to you will take longest of all.
There is no substitute for a formal process of estimation. I personally use function point analysis (breaking tasks into small parts, estimating their cost, and applying a function that produces time) and Gantt charts (calendar-like diagrams showing people and length of tasks and their dependencies) to get an idea of how long things will take, and this gets a good estimate, even though as soon as you start work you have to rework the design and throw the Gantt chart away.
This process offends some I know who are really into “agile” development, in which you forgo that kind of formal planning in favor a more flexible approach involving user “stories" - but these people are fooling themselves. The point isn’t the Gantt chart, it’s going through the formal estimation exercise, getting a realistic estimate of both task complexity and dependency chains. I knew agile back when it was called “extreme programming,” and its techniques have only gotten more sophisticated - but REAL, experienced agile development uses a training process to get people up to speed and engages in estimation of the velocity of development. If you ape agile with daily standup and a few post-it notes, congratulations: you’re fooling yourself, your schedule will slip.
THERE IS NO SUBSTITUTE FOR DECOUPLING THE PROCESS OF GENERATING TASKS AND ESTIMATING THEM. If you come up with tasks and score them on the spot, you’re flying by the seat of your pants, and will subconsciously generate estimates that show you will succeed.
You will not.
Once I dealt with a sharp CEO who recognized that I was right when I told him his three month project would take nine months. (I had to literally resign my position to get his attention, but that’s another story.) His response: ok, you’re right, it will take nine months - but we can’t track anything that long. We need three month milestones. Something we can see and manage. That way we’ll know we’re slipping. That’s what we did, that worked - and in nine months, we delivered, in three steps along the way. And, strangely enough, I find this is more generally true: in any given time period, I get about a third as much as I want to - but if I keep at it, and break things apart into smaller chunks, eventually I do get done.
So don’t imagine you can travel in time; instead, realize you need to take baby steps. Break your problem into the smallest chunks you can, relentlessly work on them to get them done, and doggedly track your next steps. You may not produce an hour-long video describing your views on life, the universe, and everything the first time you set out to do it, but maybe you can spend a pleasant evening getting your film studio set up, so that you’re ready to take the next step, when the time comes.
Pictured: a shot of me and my wife. We tried to take a picture. We expected to take a couple. It took six shots, and I had to composite two of them together with four Photoshop layers to get a good one of both of us at the same time. :-P