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:
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:
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 ?
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
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
Cope with uncertainty: short iterations daily stand-up meetings automated unit tests | process ceremony as with cows agile steering as with colts iterations shorter than cows, longer than colts efficient communication channels |
Sufficient with just the core practices | 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 ?