In a previous post I outlined one strategy for visualising integration dependencies in Kanban. One thing I failed to mention in that post is there are many other strategies for handling dependencies and a comment from Ron Jeffries prompted me to think more about this. Here’s a few strategies that come to mind for handling dependencies:
- Develop capability – within the team to remove the dependency (self-serve).
- Systemic Swarming – In a multi-kanban environment (multiple delivery streams / teams) move people with the right skills between delivery streams to deliver the dependent requirements before returning to their own delivery stream.
- Consumer Driven Contracts – In this article on Martin Fowlers blog, Ian Robinson discusses a Service Evolution Pattern called Consumer Driven Contracts.
- Fake Objects, Mocks, or Stubs – This article from Martin Fowler discusses the differences of these approaches. Think carefully about the consequences of using these approaches from a testing perspective.
- Queue and wait – move the Story out of flow whilst you wait for the dependent requirement to be fulfilled. Once fulfilled return the Story to flow. This was detailed in my previous post.
- Planning & Scheduling – Schedule the various requirements to be complete in line with a plan (in my experience the odds of success of this technique are similar to a seven horse accumulator!).
- Re-Architect – to remove / reduce dependencies (stovepipe solution?).
What other techniques and strategies have you found useful when dealing with dependencies?