Painless Schedules Revisited
"If it takes one woman nine months to make a baby, all we need is nine women and we will have a baby in one month." -- anonymous project manager.
After being sick and unproductive for the last few weeks, I decided to refocus on getting a shrink wrapped product out the door. What I needed was a list of tasks, or better yet a schedule to keep me motivated (and maybe I could see tasks I could farm out to other coders).
Of course, I reached for the biggest time management hammer I could find -- Microsoft Project. I quickly downloaded the Microsoft Solutions Framework (MSF) application development project plan template-- a project template that contains outlines Microsoft's heavyweight process in detail. When I adjusted the start date to today, the entire project stretched out into the second week of May 2009.
The pointy haired manager in my head shrieked, "No. No. No. That won't do. We must ship sooner." I sighed and started editing to make the schedule more sane. At that moment, I became acutely aware of how much more productive a solitary developer can be when isolated from corporate bureaucracies and six sigma philosophies.
- Project Kick-Off? Deleted. I don't need to define project rolls or form a team. No donuts or bagels for the team. (-6 days).
- The Envisioning Phase? I know exactly what I am going to build and I don't need 44 days to define, review, and collaborate on a vision/scope document (-44 Days).
Now, that pulled the end date into to January.
I'm feeling the kind of elation that comes from warping the laws of the universe and bending time to my will. I pause and imagine the possibilities. I briefly envision myself as a tyrannical project manager, except I hate meetings more than I love telling people what to do. I press onwards.
- Planing. 36 days for "User Education?" Nah, my users are the smartest in the world. After a few deletes, planning is down to 2 days -- I need a functional spec after all (it is basically written so this is just padding).
After cutting out the endless meetings and collaboration milestones, I ended up with a schedule that still didn't make sense. Clearly there had to be a better way...
Now for the Hard Part...
Developers have advocated many different approaches to software guestimation. Joel Spolsky originally recommended "Painless Software Schedules," (a simple schedule with lots of small tasks in Excel) but has since changed his recommendation to follow, "Evidence Based Scheduling." Mix in development methodologies such as Agile and the picture gets murkier.
I chose to merge various scheduling/development methodologies into a set of rules I could afford to live with, based around a sliding two week window:
- Since I'm not good at estimating software tasks down to the minute, I've decided to schedule firm commitments four weeks out (this iteration, plus the next), where I will enter estimates down to the hour. Past the four week window, I will simply schedule features and milestones.
- Firm 2-week iteration schedule. Every two weeks I have an internal release milestone. Version 0.0.1 is scheduled for release this Sunday, March 30th. Version 0.0.2 is scheduled fro April 13, 2008. Each milestone has specific features associated with it. According to my schedule, Release version 1.0 will ship the week of May 25, 2008.
- I've decided to use FogBugz to track my four week estimate window. I'm basically pulling things off my Project generated Gantt chart and adding them to FogBugz. I am curious to see how well I do against my timed estimates.
The only unknowns at this point are distribution and marketing, but those will be resolved in time.
Labels: mISV, Time Management