RSS

Managing Software Projects Part 2: Techniques

08 Sep

This is part 2 of a series of posts on software project management. The series starts with Managing Software Projects Part 1: Tools. Start there to get the whole story.


Jeff Atwood has noted, “On our project we’re always 90% done.” That phenomenon arises from not having a checklist of remaining work (or from having items on your list that are too big to really track).

Create Small Tasks

Smaller tasks allow for better estimates and being 100% done on 9 of 10 tasks is more accurate than being 90% done on one task. Consider developing a new app. Early in the project, you might have an item like:

Task Estimate
Develop UI 80 hours

And that’s fine for an initial plan, but it’s too big and too vague to implement. So, thinking about it more, you might get to:

Task Estimate
1.0 Develop UI 90 hours
  1.1 Develop API 30 hours
  1.2 Develop Icons 10 hours
  1.3 Develop CLI 15 hours
  1.4 Develop Web UI 15 hours
  1.5 Develop App 20 hours

I’d argue that the 30-hour and 20-hour items need to be broken down more but look what else has happened: by itemizing parts you added 10 hours to the estimate for the UI. You understand it better and you have a more accurate picture of the scope. If you did this immediately after project approval, you’d know early that you had estimated low.

Do High-Risk Tasks ASAP

The risk of delivering all the intended features or meeting your planned schedule is highest at project inception. If you are doing something novel — developing a new algorithm, working with a new widget set — you don’t yet know if it’ll take a day, a week, or a month. That risk can be reflected in assigning a low confidence to the estimate for the novel task.

You might also consider that a task that has not yet been broken down into bite-sized subtasks is risky because you don’t know what you’ll discover as you refine the task. Or you may know that one member of your team is always optimistic. Whatever the source of risk, you want to drive it out of your project as quickly as possible by scheduling high-risk tasks as early as possible. Once they are done, you have a much higher confidence in the remaining, lower-risk plan.

Task Estimate Confidence
1.0 Develop UI 90 hours
  1.1 Develop API 30 hours Medium
  1.2 Develop Icons 10 hours High
  1.3 Develop CLI 15 hours Very High
  1.4 Develop Web UI 15 hours High
  1.5 Develop App 20 hours Low

Confidence Levels

While “high” may be attractive for being intuitive, it’s hard to manipulate. How can we sort the low-confidence tasks before high-confidence ones? What is the overall confidence in the estimate for the UI task? Since we’re storing our project tasks in a database and manipulating them with code, we can assign numeric values behind the scenes.

Confidence Value
Low 1
Medium 2
High 3
Very High 4

It is no accident that there are an even number of choices. When given an odd number of choices, people tend to pick the middle value. By not having a middle choice, users are nudged to think a little harder about how confident they are in their estimate.

For completeness, my system has two more values, one on each end.

  • A task may have no confidence selected and we use 0 to indicate “very low.”
  • A task may be complete, in which case we use 5 to indicate we have perfect confidence that the actual hours worked is how long it took.

Using Confidence Levels

Task Estimate Confidence Value
1.0 Develop UI 90 hours
  1.1 Develop API 30 hours Medium 2
  1.2 Develop Icons 10 hours High 3
  1.3 Develop CLI 15 hours Very High 4
  1.4 Develop Web UI 15 hours High 3
  1.5 Develop App 20 hours Low 1

By taking the average of the confidence values weighted by the number of hours in each task, we can answer the question from above: how much confidence do we have in that 90-hour estimate?

((30*2) + (10*3) + (15*4) + (15*3) + (20*1)) / 90 = 2.39

Looking up 2.39 in the table of values, we can say we have Medium-High confidence in that estimate.

Next Time

In my next post, I’ll talk about scheduling tasks based on your business rules.

 
3 Comments

Posted by on September 8, 2015 in Project Management

 

Tags: , , ,

3 responses to “Managing Software Projects Part 2: Techniques

Leave a Reply

 

Discover more from No Perfect Program

Subscribe now to keep reading and get access to the full archive.

Continue reading