Skip to main content

You’ve heard all the other agile conversations. We’re starting a new one.

Count Me In

Dependencies Are Evil

Mike Cottmeyer
Reading: Dependencies Are Evil

It seems inarguable to me that dependencies limit agility.

Personal dependencies

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.

Autonomy

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.

Next Creating a Shared Understanding

LeadingAgile CEO and Founder, Mike Cottmeyer is passionate about solving the challenges associated with agile in larger, more complex enterprises. To that end, he and his team are dedicated to providing large-scale agile transformation services to help pragmatically, incrementally, and safely introduce Agile methods.

Comments (3)

  1. Michael Feldstein
    Reply

    I’m not sure that dependencies are inherently evil, but *thoughtless* dependencies definitely are, and we see them a lot in corporate software development. More often than not they are second-order effects of Conway’s Law:

    “Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.”

    In other words, bad dependencies exist because of poor structuring of and communication between development teams, rather than the other way around.

    Reply
  2. Morten
    Reply

    Great examples with the family bindings. I’m on Michaels side though and would even claim that dependencies are your best friends. De-friend your bad dependencies and leverage from the good ones. Agile in reality is all about structure which will surface as constraints and dependencies. With the right friends you achieve freedom through structure.

    Reply
  3. Agile gamification platform
    Reply

    Good article. In my opinion we should find some point when the benefits from agile will be greater than requirements. In my experiment, we are creating a platform for IT managers, where you can set up your dependencies and look up behaviours your teams. Until now we have interesting results from this project.

    Reply

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.