strategies for managing dependencies

16
Dependency Management 12 Strategies for improving systemic flow Introduction to Kanban Lean Estimation, Tracking & Planning Making Software Delivery more Predictable 12 Strategies for Managing Dependencies Advanced Kanban – classes of service and backlog mgmt

Upload: ian-carroll

Post on 02-Jul-2015

300 views

Category:

Leadership & Management


0 download

DESCRIPTION

With scaling Lean and Agile practices comes new challenges for dealing with handoffs and dependencies. Dependencies are inevitable. Trying to avoid them is one strategy with lots of effort commonly put into this strategy in the form of upfront planning. But, managing dependencies is not just about avoiding them. It’s also about working to minimise the impact (to flow) of dependencies. In this workshop we will work through several strategies (and hopefully uncover more along the way) with participants leaving the session armed with an array of strategies to improve systemic flow.

TRANSCRIPT

Page 1: Strategies for Managing Dependencies

Dependency Management12 Strategies for improving systemic flow

Introduction to KanbanLean Estimation, Tracking & PlanningMaking Software Delivery more Predictable12 Strategies for Managing DependenciesAdvanced Kanban – classes of service and backlog mgmt

Page 2: Strategies for Managing Dependencies

Cycle Time Variation

Page 3: Strategies for Managing Dependencies

80% OF YOUR CAPACITY IS ABSORBED

IN WASTEFUL ACTIVITY

Page 4: Strategies for Managing Dependencies

Develop self-serve capability

1. Develop self-serve capability

2. Systemic Swarming

3. Consumer Driven Contracts

4. Fake Objects, Mocks, or Stubs

5. Queue and wait

6. Planning & Scheduling

7. Visualise Blockers

8. Use Explicit Policies to Expedite

9. Avoid self-competing

10. Re-Architect

11. Invest in Env’s

Develop self-serve capability within the team to remove the dependency (self-serve).

Page 5: Strategies for Managing Dependencies

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 (so as to respect the release cadence) before returning to their own delivery stream.

1. Develop self-serve capability

2. Systemic Swarming

3. Consumer Driven Contracts

4. Fake Objects, Mocks, or Stubs

5. Queue and wait

6. Planning & Scheduling

7. Visualise Blockers

8. Use Explicit Policies to Expedite

9. Avoid self-competing

10. Re-Architect

11. Invest in Env’s

Page 6: Strategies for Managing Dependencies

Consumer Driven Contracts

Check out the article on Martin Fowlers blog where Ian Robinson discusses a Service Evolution Pattern called Consumer Driven Contracts.

1. Develop self-serve capability

2. Systemic Swarming

3. Consumer Driven Contracts

4. Fake Objects, Mocks, or Stubs

5. Queue and wait

6. Planning & Scheduling

7. Visualise Blockers

8. Use Explicit Policies to Expedite

9. Avoid self-competing

10. Re-Architect

11. Invest in Env’s

Page 7: Strategies for Managing Dependencies

Fake Objects, Mocks, or Stubs

Think carefully about the consequences of using these approaches from a testing perspective.

1. Develop self-serve capability

2. Systemic Swarming

3. Consumer Driven Contracts

4. Fake Objects, Mocks, or Stubs

5. Queue and wait

6. Planning & Scheduling

7. Visualise Blockers

8. Use Explicit Policies to Expedite

9. Avoid self-competing

10. Re-Architect

11. Invest in Env’s

Page 8: Strategies for Managing Dependencies

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 is shown in the “3rd party blocked” section in the Dev column above.

1. Develop self-serve capability

2. Systemic Swarming

3. Consumer Driven Contracts

4. Fake Objects, Mocks, or Stubs

5. Queue and wait

6. Planning & Scheduling

7. Visualise Blockers

8. Use Explicit Policies to Expedite

9. Avoid self-competing

10. Re-Architect

11. Invest in Env’s

Page 9: Strategies for Managing Dependencies

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!). BUT, you do get value from flagging up known dependencies earlier in the backlog to help with your selection policy.

1. Develop self-serve capability

2. Systemic Swarming

3. Consumer Driven Contracts

4. Fake Objects, Mocks, or Stubs

5. Queue and wait

6. Planning & Scheduling

7. Visualise Blockers

8. Use Explicit Policies to Expedite

9. Avoid self-competing

10. Re-Architect

11. Invest in Env’s

Page 10: Strategies for Managing Dependencies

Visualise Blockers

If you uncover or stumble across a dependency during dev use blocker stickers to raise the awareness then focus on unblocking.

1. Develop self-serve capability

2. Systemic Swarming

3. Consumer Driven Contracts

4. Fake Objects, Mocks, or Stubs

5. Queue and wait

6. Planning & Scheduling

7. Visualise Blockers

8. Use Explicit Policies to Expedite

9. Avoid self-competing

10. Re-Architect

11. Invest in Env’s

Page 11: Strategies for Managing Dependencies

Use Explicit Policies to Expedite

Below you’ll see an External row in the backlog. Agree an org-wide policy that anything arriving into this row is expedited or prioritised as part of the selection policy. Don’t use this for shared service teams.

Incidents

Unplanned

Planned

Tech Debt

External

Breakdown

Establish a class of service policy across all work streams

1. Develop self-serve capability

2. Systemic Swarming

3. Consumer Driven Contracts

4. Fake Objects, Mocks, or Stubs

5. Queue and wait

6. Planning & Scheduling

7. Visualise Blockers

8. Use Explicit Policies to Expedite

9. Avoid self-competing

10. Re-Architect

11. Invest in Env’s

Page 12: Strategies for Managing Dependencies

Avoid Self-Competing

If you are dependent on a shared service team, make sure your tribal leader attends their prioritisation / selection meeting because you may end up competing against yourself or other squads within your tribe for what should be a tribe level prioritisation call.

SelectBacklog WIP DONE

Squad A

Squad B

Squad C

Squad D

Trib

e 1

Trib

e 2

1. Develop self-serve capability

2. Systemic Swarming

3. Consumer Driven Contracts

4. Fake Objects, Mocks, or Stubs

5. Queue and wait

6. Planning & Scheduling

7. Visualise Blockers

8. Use Explicit Policies to Expedite

9. Avoid self-competing

10. Re-Architect

11. Invest in Env’s

Page 13: Strategies for Managing Dependencies

Re-Architect

…to remove / reduce dependencies (stovepipe solution?).

1. Develop self-serve capability

2. Systemic Swarming

3. Consumer Driven Contracts

4. Fake Objects, Mocks, or Stubs

5. Queue and wait

6. Planning & Scheduling

7. Visualise Blockers

8. Use Explicit Policies to Expedite

9. Avoid self-competing

10. Re-Architect

11. Invest in Env’s

Page 14: Strategies for Managing Dependencies

Remove Environment

Contention…invest in more / better environments.

1. Develop self-serve capability

2. Systemic Swarming

3. Consumer Driven Contracts

4. Fake Objects, Mocks, or Stubs

5. Queue and wait

6. Planning & Scheduling

7. Visualise Blockers

8. Use Explicit Policies to Expedite

9. Avoid self-competing

10. Re-Architect

11. Invest in Env’s

Page 15: Strategies for Managing Dependencies

Merge hell – Feature Toggles

…to remove / reduce dependencies (stovepipe solution?).

1. Develop self-serve capability

2. Systemic Swarming

3. Consumer Driven Contracts

4. Fake Objects, Mocks, or Stubs

5. Queue and wait

6. Planning & Scheduling

7. Visualise Blockers

8. Use Explicit Policies to Expedite

9. Avoid self-competing

10. Re-Architect

11. Invest in Env’s

12. Feature Toggles

Page 16: Strategies for Managing Dependencies

Further Information