Dependencies are relationships between functional units and tasks which drive the sequence of functional flow of execution. There are several programs with external dependencies as well. Dependencies, if not handled the right way, leads to chaos and blockers during execution of the end product.
In Scrum, the Product Backlog the main planning tool consists of user stories with acceptance criteria. The good user stories are written the INVEST way (Independent, Negotiable, Valuable, Estimable, Small, Testable).
How “independent” are the user stories?
Practically most of the user stories would have data dependencies between each other. Each user story in a Sprint has to be code-test-built to produce working software each time. Further to add, today Scrum teams scale up to larger teams to adapt various scaling frameworks leading to increased dependency management.
Types of Dependencies
Dependencies in Scrum may be broadly classified as:
- Inter Story: Dependencies between user stories within the same team
- Inter Team: Dependencies between teams
- Inter Product/Release: Dependencies across products or releases of the same product
- External: Vendors, Third parties, Customer dependencies, People
How can these dependencies be handled?
Scrum has a built-in mechanism for dependency management:
1. User story Mapping and Minimal Marketable Feature: Grouping of user stories based on Features.Dependent stories may be mapped based on the data flow and functional sequence.
2. Product Backlog prioritization: Apply MoSCOW/Kano prioritization technique for each Feature followed by Sequencing the dependent PB items based on MMFs (Minimal Marketable features)
In case of Stories which are dependent on 3rd party vendors or any other external dependencies, sequencing may be done after a commitment from respective parties.
3. Team Structuring: Feature teams are recommended instead of component teams or shared component team members into feature teams.
Each feature team may have cross functional team members with component experts as full time or shared resources to reduce the dependency nightmare.
4. Scrum of Scrum Meetings
Scrum of Scrum meetings are conducted to track dependencies among scrum teams.
5. Kanban/Scrum Boards to visualize dependencies
Dependency threads or tags may be used for visualization of dependencies among features and/or teams.
6. Central dependency team for large enterprise programs
As part of Agile program management, “independent” dependency teams may be utilized to track inter team dependencies, blockers, external dependencies and ensure they are taken to closure.
Dependencies are part of the functional flow of any system. Failure to identify critical dependencies and a strategy to handle them in a timely manner may result into delayed feedback loops, leading to waterfall kind of phased project execution.