February 24, 2014
04) Keep Moving Forward
Last week, I sent an email to the alpha list saying that I’d be done with the website and trailer today at noon. With six hours to go, it’s fair to say that I won’t make that deadline. The website yes, the trailer no.
I’ve been making software for 33+ years. You’d think in all that time I’d have developed a finely tuned sense for estimating how long things take, but instead I’ve learned that software is a stubborn beast that balks at every step.
The only accurate way I’ve found to estimate software is called “timeboxing,” where you make a list of things you want to do, order them by priority, then commit to a set amount of time to do them. If things go better than hoped, you get more things done, otherwise you get less things done. Another way of describing this is “slip features, not deadlines.”
Unfortunately, this requires a large enough chunk of time to allow mid-course corrections. A single week isn’t nearly enough, which is why deadlines like the one I set for myself last week are a bad idea. “These things are never certain,” say the doctors, and so should we. My deadline was more of a “that’s how much time I have” estimate than a realistic prediction.
And yet there’s still value to Impossible Deadlines, providing they’re short-term and infrequent. While I may not have finished by today, I did manage to do more work than I might otherwise have done. Such short pushes are called “sprints” in my world. For some reason, they work better when you imagine the finish line is very real and very necessary.
They’re stressful though. Unsustainable. Each day I’m swimming in delay frustrations, reminding myself over and over, “It’s okay. This is good work. Just keep moving forward.” And yes, I end up doing three weeks in one, which at this point is needed.
But the sprint ends this week. I need to get back to my sustainable schedule. Slow and steady most certainly wins the longer race. I can’t wait.