Note: This article originally appeared in the October, 2009 edition of TEQ Magazine.
This summer, a friend and I walked the length of Manhattan for my birthday. Our goal was to trek the fourteen miles from Battery Park to 220th Street, and depending on how things went, return by subway or ambulance.
We estimated a six-hour walk, and periodically checked our progress along the way. But tracking a Manhattan hike isn’t easy, because the numbered streets don’t begin until after you leave SOHO. If you’re as Vitamin-D starved as I am, that could mean you already have serious blisters before 1st Street.
A few blocks past Times Square, my cell phone rang. It was another friend, and she wanted to know what time to expect me for dinner. Having already passed the naked cowboy, I told her I didn’t think I’d be much longer. After all, isn’t Times Square just a couple blocks south of Harlem? (Fact check: They’re as distant as Squirrel Hill and Monroeville.)
That day I realized that long walks are like big software projects. It’s hard to measure their progress, difficult to predict their completion, and both can induce big sweats.
In my last column, I discussed techniques to measure the quality of your code, and in this issue we’ll look at ways to measure your progress during development. But first, a note of caution: This stuff is hard to do well. Even companies like Microsoft and Apple aren’t perfect, so start by lowering your expectations. In fact, I would go as far as saying that on the spectrum of awful to awesome, the best companies only score slightly higher than “doesn’t suck.”
Have specific goals.
Many projects fail from a lack of planning. If the project is large enough, it should have a written specification, which may include use cases, technical specs, and functional specs. Without a clear goal, how can you know when you’re done?
Break up your goals.
Predicting the duration of a project is like guessing how much sand is in a desert. That’s why projects should be divided into sub-tasks, each representing major sections of the software. Keep breaking sub-tasks into smaller sub-tasks, until you’re left with fine-grained tasks, all with time estimates under forty hours. It’s easy to imagine what can be accomplished in a week, but difficult to do the same for a month or a year. Now you’ll be counting the sand in a jar, instead of a desert.
Measure with metrics.
Many project management applications exist, but I’ve had the most success with these two tools:
Google Spreadsheets – This is the easiest and most affordable solution I’ve used. Create a row for every fine-grained task, and set up columns for task name, original time estimate, current time estimate, hours worked, and hours remaining. Add some logic to turn the completed tasks green, and share the document with all parties involved. This takes thirty minutes to set up, it’s very easy, and it’s very free. Try it out at http://docs.google.com
FogBugz – FogBugz is a bug tracking and project management application from FogCreek software. It features evidence-based scheduling, which allows you to predict how realistic your milestones are based on the track record of every member on the team. The Burn Down Chart shows how much time remains before goals are reached, and FogBugz even demonstrates which tasks stand in the way on the critical path. FogBugz costs $25 per user per month.
Update your metrics often.
Donald Rumsfeld once said, “There are known unknowns, but there are also unknown unknowns. [These] are things we don’t know we don’t know.” This quote is often taken out of context and applied to war. Of course, Rumsfeld was actually talking about software development. Scope creep happens, and surprises are common. Metrics are only as useful as the data you provide them, so don’t be afraid to update numbers based on knowledge gained along the way. Updating your metrics at least once per week will keep you and your projections honest.
Whether you’re building software or hiking through New York, it’s difficult to predict the future. But, with proper planning, fine-grained sub-goals, and a little technology, you’ll stand a fighting chance.
As for my Manhattan hike, we finished in just over seven hours, and I made it to dinner on time. I gained a new respect for the size of Manhattan, and the importance of better planning. Next year, I’ll attempt to walk the length of Pittsburgh’s Golden Triangle in a day. My prediction: Twenty minutes, including a stop at Primanti’s.