Dependencies Break Agile
What are Dependencies?
I’ve been running around lately telling people that the presence of dependencies break Agile. Just for the record, I want to explain what I mean when I talk about dependencies. Agile in general, Scrum specifically, is predicated on the idea that the team has everything it needs to deliver an increment of value. When the team does not have everything it needs to deliver an increment of value we have a dependency.
Dependencies come in many forms. One of the most common is when the team needs some skill set that doesn’t live on the team. The classic example is the DBA that is shared across several teams or when QA is not part of the core Scrum team. Less obvious dependencies come about when the PO doesn’t have full discretion to make trade off decisions or when we have a UAT phase at the end delivery.
Why Dependencies Matter?
Dependencies matter because the secret to great team based Agile is the accountability the team has to get done at the end of the sprint. If the team can’t get to done at the end of the sprint, or someone can undo done after the sprint is completed, it dilutes accountability and gives us an excuse not to deliver what we say we are going to deliver. It makes done beyond our control. It makes getting stable velocity beyond our control… it makes getting better beyond our control.
Sometimes teams will try to forcefully break dependencies by ’empowering’ a PO that the organization doesn’t really view as empowered. Sometimes we’ll try to forcefully break dependencies by defining done in a way that the team is in control of what get’s delivered. That is fine from a team perspective, but doesn’t really solve the real problem of negative feedback loops and deliverables that aren’t ready to go into production.
Dependencies are Reality
But here’s the deal. Dependencies are real. Dependencies are especially real when we start dealing with Agile at scale. At scale we are not only talking about dependencies between the team and external entities, but between teams that need each other to deliver an end-to-end increment of working software. Our default thinking should be to reduce dependencies. A well thought out Transformation strategy can help break many dependencies but we have to aggressively manage those that remain.
How we choose to manage dependencies makes all the difference to how we achieve real end-to-end business Agility. If we implement Agile teams but deal with dependencies through big up front release planning, we might not be any better off than with traditional project management approaches. Is there any difference between a Gantt chart and a multi-team backlog that is pre-sequenced sprint-to-sprint for the next several months? Here’s a hint, I can use Microsoft Project to model both.
Manage Constraints Rather than Dependencies
Agile at scale is typically described structurally as a hierarchy of teams that are loosely coupled from each other. Every team, at every level of the hierarchy, is an independent entity were velocity flows from the lower level teams to the higher level teams-of-teams. When we have dependencies between teams, this model breaks. The solution lies in the application of Lean Thinking and the Theory of Constraints, not at the team level, but across teams… both inside and outside of core product development.
The solution lies in the application of Kanban to model the flow of value across teams, to make smaller investment decisions at the portfolio level, to limit the amount of work in process, and to redeploy people and teams in ways where everyone all the time, is focusing on the highest value initiatives within the organization. We use Agile at the team level to inspect and adapt and to make sure we are always focusing on delivering the most value possible in any given sprint. Using Lean and Kanban and TOC gives us that same ability when we are dealing with dependencies at any level of the organization.
Speaking at the PMI Global Congress
This is basically the subject of my talk at the PMI Global Congress tomorrow. If you happen to be at the Congress, I’d love to have you stop by. If you want an explanation of how to tactically manage through this kind of portfolio structure, check out this video I did a few months ago. I think it will help. Past that, if you are struggling adopting agile, chances are you have a dependency problem. Consider your current strategy for dealing with dependencies and if this kind of a model might help.
I bet it will.
Comments (9)
Tim Hawkins
We faced exactly this problem, we have introduced a concept of a ticket or item being “dev ready”. This is where the estimates are known, and the list of requirements appended by the developer to the ticket have been provided, the requirements may be, provide artwork, ensure domain has been purchased. Ensure additional use cases for x are provided.. We do not allow a ticket to move from backlog to a sprint until it is “dev ready”.
Paul Reed
In our organization almost all tasks in our sprint are dependent upon the PO to make a decision or provide more information, thus very few tasks get completed during the sprint and get carried forward perpetually. This makes it appear that the team velocity is low, when in actuality the PO is not able to clearly define the desired outcome.
George Kalfopoulos
It is funny how dependencies keep messing things up on all levels. We need an ivy/maven for people :-)
I work in an environment where the situation is more or less what you describe. The software development team is not fully accountable for the product because of a number of external (to the team) dependencies. Your suggested solution although interesting and will probably work does have (or at least so it seems to me) a kind of nasty requirement. The whole organization needs to go “agile”. How can you cope with that when introducing agile methodologies incrementally? What happens when working in some kind of transitional environment?
I have always thought that in order to realize the full benefits of any agile methodology you really need tha “all or nothing” attitude which somehow doesn’t bide very well with already pre-established processes in an organization (especially one that has been around for a while, as in from the pre-agile era).
SWithrow
We face similar issue with the empowerment of our POs. But I relate this to other cultural changes that have occurred over the years with software development. When we first introduced Agile to our organization it was met with some level or resistance from our business areas. First, they were not excited about the idea of having to ‘engage’ in the development of their own products. It was believed that IT was offloading or abdicating responsibility onto ‘POs’. It was further perceived that the time requried was significant enough that managers could not afford to engage. Hence our first round of POs were not in the position to make key decisions that were needed. This led to, as others mentioned above, low producing velocity by the teams. Fortunately, we had a few business managers that did commit reasources at the appropriate level. Their results were much better. This led to increased adoption and higher advocacy. Ultimately, we reached a point where the business truly became a partner in the process. Today, we are at least 60% Agile/Lean environment with Waterfall choosen only for projects that must have very detailed WBS and estimates.
Sean Conolly
I don’t see how changing the name from ‘dependency’ to ‘constraint’ changes nature of the situation. You still have to have some advance planning to fill the dependencies needed for the next sprint. And you still need critical path analysis for chained dependencies to reach the project end with the least delays.
Arran Hartgroves
Great post, I have found that dependencies are often the result if organisational structures that are not set up to accommodate Agile and until we map value chains more effectively we will still have a major blockers that limit the desire for and success for Agile/Lean.
My personal experience is on a BI project where external systems need to provide us with data, so we can then report on it. With existing structures in place, we have to use road maps to engage early with external teams so that once the necessary data is ready, the team can be responsible for follow on work.
martin
I would love to learn more about this. Could you provide an example? We’re currently evaluating Kanban specifically for project management in a voluntary organisation pulling off an event. Let’s say there is no point in doing task C (ordering t-shirts) before tasks A (obtain quote) and B (gather registration data).
To me — I admit I am new to this — this sounds like a dependency. How would you do it instead?