Saturday, July 09, 2005

Managing Complexity and Uncertainty

Categorizing software development projects according to their complexity and uncertainty, you can adapt your process by adding practices according to each project's profile.

Projects can be put in a four-quadrant graph similar to the Boston Consulting Group's Boston Matrix, using complexity and uncertainty as the two primary attributes that influence the type of process:
  • Dogs: simple projects with low uncertainty
  • Colts: simple projects with high uncertainty
  • Cows: complex projects with low uncertainty
  • Bulls: complex projects with high uncertainty
with as complexity drivers: team size, mission criticality, team location, team maturity,
domain knowledge gaps, and dependencies
and as uncertainty drivers: market uncertainty, technical uncertainty, project duration,
other projects'dependencies on that project, and scope flexibility.

Start with a core set of common practices:
  • aggregate product plan: vision, plan, strategy, markets, platforms
  • A/B/C list: prioritised features (A-must, B-should, C-might be completed)
  • quality agreement: quality targets for the release
  • continuous integration: configuration management and build at least nightly
  • expert-user involvement: (former) customer, expert tester
  • project dashboard: product status info with plan, quality metrics, risks, updated at least weekly
Add practices according the quadrant:

Low Complexity, High Uncertainty
Cope with uncertainty:
short iterations
daily stand-up meetings
automated unit tests
High Complexity, High Uncertainty
process ceremony as with cows
agile steering as with colts
iterations shorter than cows, longer than colts
efficient communication channels
Low Complexity, Low Uncertainty
Sufficient with just the
core practices

High Complexity, Low Uncertainty
Deal with complexity:
rigorous requirements management
functional spec for interface definitions
detailed project plans with critical path identification
subprojects coordinated by a team of leaders

From: Context-Adaptive Agility: Managing Complexity and Uncertainty, by Todd Little, IEEE Software May/June 2005

Are you applying the right level of ceremony and agility according to the complexity and uncertainty of your project ?


Anonymous Anonymous said...

This comment has been removed by a blog administrator.

Friday, October 28, 2005 3:55:00 PM  

Post a Comment

Read more about Software Quality at the <<Software Quality Weblog Home