It seems inarguable to me that dependencies limit agility.
If I am able to make a decision on my own that only involves me, I have full freedom of movement. If I want to go to the local pub for dinner, and on my way, decide that I want to go to a steakhouse, I go to the steakhouse. I don’t have to call anyone, rearrange a schedule, broker agreement or anything. I just go to the steakhouse.
Now let’s say that I am meeting my wife for dinner. She is on her way to the pub, I am on my way to the pub. I decide that I want to go to the steakhouse. I can call her. I may get a hold of her, I might not. She may be up for steak, she might not. Either way, I have now lost some of my ability to decide.
I’ve created a dependency on my wife around dinner.
Now let’s say my wife and I are going to dinner with our in-laws. I love my in-laws but they are getting older and don’t like plans to change. I know they aren’t up for the pub, but they love steak and really, really like to make plans in advance. If I am going to have steak with my in-laws there is no room for plans to change… ever.
My wife and I have created a rather hard dependency with my in-laws.
In short, when it’s just me, I am autonomous. The more people I have to coordinate with, the less I am able to change direction. Depending on who is going with me, I may not be able to change at all.
Dependencies will inevitably limit my ability to act autonomously. Dependencies have limited my personal agility.
Again, this just seems inarguable to me.
When it comes to dealing with dependencies, I have two choices. I can either choose to break dependencies or I can choose to manage them. I cannot pretend they don’t exist.
If I go to the steakhouse, and ditch my wife waiting for me at the pub, there are consequences.
If I back out on my in-laws and go to the pub, there are consequences.
The same thing works with agile teams.
Dependencies and Scrum teams
If I am a small Scrum team, I have 6-8 people, operate off a single backlog, have a single Product Owner, have a single ScrumMaster, and don’t share any of my people with any other Scrum teams, I can be totally agile. I can burn my backlog at my own rate, change direction, and basically do what we need to do.
Let’s say I start sharing team members between Scrum teams. Now I have to accommodate during Sprint planning their partial participation on my team. If their other team gets behind, that impacts my team. The shared team member might not be available as planned to do my work.
Let’s say that one of the Scrum teams is a back-end team and the other is a front-end team. If I have to change the front-end and the back-end in order to get ready for the release, not only do I create a requirements dependency, but I also have a scheduling dependency. Both have to be ready on-time for the release to happen.
I know I said at the beginning of this post that dependencies were evil, but I’m not being judgmental here.
If you have dependencies like this, you have to manage them.
That said, they will limit your agility.
If you pretend otherwise, you are fooling yourself.
The thing about dependencies…
Many dependencies are self-inflicted. They get introduced by how we architect the product. They get introduced by how we staff teams. They get introduced by how we bring work into the organization, by how we create roadmaps, and by how we sell changes to our customers.
Very few dependencies can’t be broken with sufficient time and money and attention.
Here is the deal though… from YOUR point of view, dependencies might not be able to be broken. In your role, YOU might not be able to break them. That said, SOMEONE can choose to invest the time, money, or attention necessary to break them.
We just have to find those people, and they have to decide if it’s less expensive to break dependencies, or to keep managing them.
So again… dependencies are evil.
Dependencies reduce freedom of movement, thus agility.
They won’t stop you from doing Scrum, but they will stop you from getting benefit from Scrum.
You can choose to manage dependencies.
You can choose to break dependencies.
If you can’t break them, I guarantee someone in your organization can.
It just depends on if it’s worth it to break them.
What you can’t do is pretend Scrum will work well in their presence.
Dependencies break Scrum.
Dependencies are evil.