Extending Scrum to Leanban: Leanban Practices

Leanban looks across multiple software methods to discern fit-to-purpose and to apply practices thoughtfully. It does not insist on purely following one approach when that means being limited in using good practices from others. Borrowing from Scrum, kanban, and XP, Leanban prescribes certain core practices including:

In addition to these core practices, your situation may call for other or additional practices including:

  • Use cross-functional teams as much as possible. Start by creating cross-functional teams if possible.
  • Use a common cadence with or without iterations

Then, depending on your particular approach, use lean to drive

  • Lean-XP: Test-first; strive for TDD when you can (starting with ATDD); paired-programming; strive for continuous integration and automated testing.
  • Lean-Scrum: Cross-functional teams if you can; use iterations to provide disciplines and a common cadence.
  • Lean-kanban: Create teams to the greatest extent possible; adopt a common cadence.

Leanban uses lean principles to guide teams in abandoning practices. For each practice, focus on the value that it is providing and why and then investigate the alternatives in order to get that value. The Inflection Point System offers guidance in making these choices.

These tables describe the practices and the value they provide.

Alternative methods of getting value

Practice Value Provided Alternative Method of Getting Value
Time-boxing Cadence for input, output, demonstration, and retrospection

Discipline

Small batches

Visibility in and out

Velocity

Planning method

Focus

Can have independent cadences.

Must bring discipline to each story since they may take longer than should without it.

Use small batches / stories.

Use visual controls throughout workflow.

Measure velocity via cadence.

Plan ahead if valuable.

Take a value-centric approach.

Cross-functional team Limits WIP

Reduces hand-offs

Improves feedback

Minimizes delays Improves collaborative problem -solving

Improves learning

Attending to flow while using as close to a true team structure as possible can achieve these values
Use of a Product Owner Reduces unneeded features An equivalent “one-voice” is needed regardless of method.
Finish stories quickly Minimizes delays

Reduces WIP

Provides quicker feedback

Time-boxes or discipline to complete stories quickly.

Decompose to small stories.

INVEST

Remove structural impediments Minimizes delays

Provides quicker feedback

Manage WIP

Kaizen / intentional process improvements

Shorten feedback cycles

Balance workload Reliable flow of value Pull work based on velocity

Manage WIP

What each practice achieves

Practice What It Achieves
Explicit workflow Enables everyone to know how we do software in our context

Facilitates learning.

Daily Stand-ups Keeps people informed (might not be strictly needed if the team is colocated).
Make everything visible Facilitates learning and management.

Detect challenges.

Reduces the tendency to add unneeded reviews

Common cadence / sprints Enables early synchronization of different teams through code integration and testing..
Build incrementally and iterate on the increments Short feedback cycles and learning.
Focus on finishing Avoid too much WIP and look for opportunities to collaborate.
Do continuous integration Detect out-of-synchronization errors.
Estimate work items and compute velocity (unless a maintenance group) Validates understanding of items being worked on by the teams.

Facilitates planning.

Work in small batches Faster feedback.

Easier to avoid workflow delays.

Enables people moving around as needed.

Use small stories Improves clarity and specificity.

Faster feedback.

Easier to avoid delays.

Enables people moving around as needed.

Manage Work-in-Process (WIP) Eliminate delay and speed up feedback.

Reduce multi-tasking.

Create cross-functional teams to the extent possible Eliminate delay, speed up feedback and learn faster, thereby enhancing horizontal flow of value.
Use test-first methods Better understand what is needed and convey this better.

Improve collaboration and resource balancing between development and test.

Facilitate automation of test.

Paired programming Collaboration, shared knowledge of code base, and increased discipline.