We’re doing the planning for SlickEdit 2008 now, so I have estimates on my mind. Most programmers would prefer to avoid estimates altogether. They prefer the “we’ll let you know when it’s done” approach to scheduling. Providing estimates and making schedules are the biggest differences between software as a business and software as a hobby. Well, that and sales, and budgets, and …

Whether you like it or not, providing software estimates is probably part of your development process. If you’re lucky, your estimates actually feed into the schedule that determines when the project will be delivered. Often, that date was determined by the sales and marketing team long before the requirements were written and you were asked to provide your estimate.

Someone unfamiliar with software development, might think that estimates are produced using complex calculations based on system requirements and complexity. Indeed, such estimating techniques have been developed. In practice, estimation is usually done by rolling your eyes and saying, “Hmm, well, let’s see, I think it’s going to take about (insert wildly inaccurate estimate here).”

This process is often called taking a SWAG, where SWAG stands for “Silly Wild Ass Guess” or “Statistical Wild Ass Guess”. In my junior years, I was taught that SWAG stands for “Super Wild Ass Guess” to distinguish it from a WAG, which stands for “Wild Ass Guess”. When delivering estimates, it was customary to identifying whether it was a WAG or a SWAG so your manager knew how much to panic.

You’ve probably heard that when making estimates you should take your best guess and double it. It’s also common knowledge that standard practice for many managers is to cut all estimates in half. This leads to the question: are managers cutting estimates in half because developers are doubling them, or are developers doubling their estimates because their managers are cutting them in half. Regardless, this system can only work if both parties are mutually distrusting.

Today, I will share with you what I have learned through 20 years of giving and receiving estimates. The perfect estimate for most tasks is two weeks. It’s long enough to be plausible and short enough not to be objectionable. Of course, you can’t get most things done in two weeks. When the two weeks is nearly up and your manager asks you how you are doing, simply explain that you ran into some problems and that you’ll need more time. When he asks how much, tell him, “two weeks”. You can usually repeat this process a couple of times before it becomes an issue. I once worked with a guy who delivered an entire subsystem in 6 months on a series of 2 weeks estimates.

I’ll put some more posts together on estimating, hopefully something a little more helpful than this tongue-in-cheek post. I think I can have it ready in, oh, two weeks.

–Scott Westfall