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. |