Saturday, June 2, 2012

Why Do Software Deadlines Never Make Sense?

Software development is like jogging.
It takes a lot of preparation, and you don't always know what to expect.

Suppose you decide to go for a morning jog around the Central Park Reservoir in New York City.
You've never jogged there before but you know that 1.5 miles usually take you 15 minutes to complete.
As you start jogging, you realize it's a dirt surface and your feet hurt. Today feels especially humid and hot, so you slow down the pace. Suddenly, you bump into an old friend who you haven't seen for years.
You stop to chat for five minutes, and then resume the run. The scenery is beautiful. You admire the Cherry Blossom next to the path, the tips of Chrysler and Empire State buildings, feel reenergized and pick up the pace. Suddenly, you notice that the trail ahead is closed.
It rained last night so it flooded. You run around it, and finish the trail in 35 minutes instead of the fifteen you initially anticipated.

One big problem with asking developers to estimate how long a particular feature will take is that
developers will always estimate in ideal days.  In reality, days are never ideal - people
come over and ask you for advice, the software doesn't
work as expected, servers break (albeit rarely because of the rain).
Even when the deadlines get padded to account for this, people tend to procrastinate and project dates shift.

There are a few things that I do to make sure this doesn't become a problem:
1. Try to estimate in "t-shirt sizes" (XS, S, M, L) and then base your project estimations on your experience of how long
similar tasks took.

2. Keep sprints in fixed duration. If you are running late, don't extend the sprint end date.   Just cut out the features
which go into this sprint iteration.

3. Try Kanban instead of sprints.   One disadvantage of scrum is that if developers get frequently distracted with Production Support,
then it's hard to keep estimates correct. Kanban aims just to get things done.
A good product feature is still a success regardless of whether it's delivered five days earlier or later.
There's a good plugin for JIRA called GreenHopper that can be used to implement a Kanban board.



Post a Comment