The Kanban Café - A Story of Flow

Oct 24, 2024

Imagine a small, bustling café in the heart of a city. The owner, Maria, runs her café with a smooth and steady rhythm. Every day, customers walk in, place orders, and wait as her team of baristas works carefully to prepare drinks and serve delicious pastries. But here’s the magic: despite how busy it gets, the café never seems overwhelmed. There’s no chaotic rush to push out orders, and customers don’t have to wait long. How does Maria do it? She runs her café like Toyota ran its factories in the early days of Lean Manufacturing.

Just like in Maria’s café, in Kanban, work is managed based on the team’s capacity, ensuring that things are done efficiently and without bottlenecks. Let’s explore how.

Capacity vs. Push: A Tale of Two Systems

To understand the magic behind Maria’s café, we must first compare two different approaches: one that’s based on capacity, like Maria’s, and another where work is pushed through the system no matter how ready the team is to handle it.

Imagine another café down the street, owned by Alex. Alex’s café uses a different approach. He pushes new orders to the baristas constantly, without thinking about how many drinks they’re already preparing. The result? Chaos. Baristas are rushing to keep up, drinks are spilling, and customers are growing impatient. Even though Alex’s café serves the same number of customers as Maria’s, things seem far more chaotic because orders keep coming in faster than the team can handle.

In Alex’s café, work is “pushed” onto the baristas, no matter what they already have on their plates. In Kanban, Maria’s café, on the other hand, represents a capacity-based system. Just like Maria checks how many drinks her baristas are currently working on before accepting a new order, Kanban ensures that new tasks are only taken when the team has the capacity to handle them.

The Principles Behind Kanban: Lessons from Toyota

This idea of only working on what you can handle is rooted in the Toyota Production System, pioneered by Taiichi Ohno, where work is “pulled” based on capacity rather than “pushed” without regard to the team’s workload. Toyota revolutionized manufacturing by implementing the concept of flow, making sure that production was smooth and that bottlenecks were avoided. Ohno’s Toyota Production System: Beyond Large-Scale Production emphasizes the importance of visualizing work, limiting work-in-progress (WIP), and continuously improving processes to reduce waste.

Maria’s café follows a similar principle. Orders are only taken when baristas have the capacity to prepare them, ensuring quality and preventing overwhelm. In software development, Kanban adopts this principle by focusing on limiting WIP to what the team can handle, maintaining a flow that avoids bottlenecks, much like Toyota’s factories.

Kanban in Software Development: The Coffee Cup Analogy

Now, let’s bring this back to software development. In Kanban, each task is like a cup of coffee. The team has a limited number of “cups” they can fill at any given time. If they try to fill too many, just like with too many orders at once in the café, the quality suffers, and nothing gets delivered on time.

David J. Anderson, in his book Kanban: Successful Evolutionary Change for Your Technology Business, explains how Kanban is designed to help teams handle tasks at a sustainable pace. Just as Maria keeps an eye on the number of orders before taking a new one, a Kanban board in software development visually limits how much work is in progress. This keeps the team from being overwhelmed and ensures that work flows steadily from start to finish.

Applying the Toyota Way

In addition to Taiichi Ohno’s work, The Toyota Way by Jeffrey Liker offers further insights into how Toyota’s principles of Lean Manufacturing can be applied to software development. Liker outlines 14 management principles that emphasize respect for people, continuous improvement, and the elimination of waste. These principles directly align with Kanban’s focus on improving flow, limiting work-in-progress, and empowering teams to manage their own capacity. Kanban allows software teams to achieve similar levels of productivity and reliability by respecting the natural capacity of their workflow.

A Push-Based Model: The Overflowing Café

In contrast, the push-based model Alex uses is like constantly pouring more and more drinks without checking if the baristas can keep up. In software development, this is often seen when teams are constantly assigned new tasks without regard for their current workload. This leads to delays, mistakes, and an overwhelmed team, much like Alex’s chaotic café.

Key Characteristics of Kanban as a Capacity-Based Model

Visualizing Work

Just like Maria’s café uses a visible board for orders, Kanban teams use boards to track tasks. This transparency helps everyone see where work is in the pipeline. Erich Brechner’s book Agile Project Management with Kanban highlights how visualizing work on Kanban boards leads to better workflow and clarity for the team.

Limiting Work-In-Progress

Maria doesn’t take more orders than her team can handle, and in Kanban, teams limit how many tasks they work on at once to maintain quality and flow. Brechner emphasizes how limiting WIP is critical to maintaining steady progress and avoiding bottlenecks.

Pull-Based System

Instead of pushing tasks onto the team, Kanban allows them to “pull” new tasks only when they have capacity—just like Maria’s baristas only take the next order when they’re ready. This pull-based system, which Anderson discusses extensively, ensures that the team is never overloaded.

Continuous Improvement

Just as Maria adjusts her café’s workflow to improve service, Kanban emphasizes reflecting on the process and making adjustments to improve efficiency. Continuous improvement is a core principle in both Lean Manufacturing and Kanban, which helps teams refine their approach over time.

Conclusion: The Kanban Way

Maria’s café thrives because she respects her team’s capacity, just like Kanban respects a team’s workload. Whether in cafés or software development, pushing too much work too fast creates chaos, delays, and poor quality. Kanban, inspired by the Toyota principles of Lean Manufacturing as outlined by Taiichi Ohno, ensures that work flows at a sustainable pace, allowing teams to focus on delivering the best result without burning out.

In software development, adopting Kanban is like running Maria’s café: it’s all about ensuring that the work gets done in an organized, efficient way without overwhelming the team—one cup of coffee, one task, at a time.


References

Tags: postkanbanleanteamflow

Archives

  1. December 2024
  2. Keeping Software Simple to speed up Software Development
  3. October 2024
  4. The Kanban Café - A Story of Flow
  5. A Story on Accidental Complexity in Software Development
  6. February 2024
  7. Maximizing Software Development Productivity: The Power of Flow and Minimizing Interruptions
  8. December 2023
  9. Clean Code in Java: Writing Code that Speaks
  10. Clean Code in Java: A concise guide
  11. Understanding Value Objects in Java: A Brief Guide
  12. August 2023
  13. Must Have on Message Payload
  14. Centralised Management System For Message Schemas
  15. Consuming RabbitMQ Messages with Clojure: A Step-by-Step Tutorial with Tests
  16. January 2023
  17. Running a Spring Boot service with kubernetes
  18. December 2022
  19. Hosting a PWA with Jekyll and Github pages
  20. November 2022
  21. Global Day of Code Retreat
  22. Facilitating a mini Code Retreat
  23. October 2022
  24. The Curse of Optional
  25. September 2022
  26. Testing Spring Boot Microservices - Presentation
  27. March 2022
  28. TDD Workshop
  29. February 2022
  30. Value Objects in Java
  31. Efficient Java
  32. January 2022
  33. Spring Boot testing - Focus on your changes
  34. Product users - Personas
  35. December 2021
  36. Write code fit for testing
  37. November 2020
  38. Running a Spring Boot app with kubernetes
  39. September 2019
  40. Setup GPG on Mac and sign git repositories
  41. July 2019
  42. Running a Clojure Pedestal application on Raspberry Pi model B revision 2
  43. Clojure from zero to hero (part 3) - First endpoint
  44. Clojure from zero to hero (part 2) - A bit of syntax
  45. June 2019
  46. Clojure from zero to hero (1) - explaining project.clj
  47. Clojure from zero to hero (0) - creating a Pedestal app
  48. November 2017
  49. Introduction to Docker
  50. April 2015
  51. Git micro commits
  52. July 2014
  53. Google Glass Development - setup tools, environment and turn on debugging on Glass
  54. June 2013
  55. How To: Get the rendered HTML of a webpage with Python
  56. Set union of two lists in Python