I received this from David Rico, it provides an excellent overview of Kanban, thanks David!
“Kanban: Successful Evolutionary Change for Your Technology Business” describes about how to apply age-old Kanban concepts to systems and software development. Kanban is a just-in-time manufacturing process for regulating the flow of production based on market demand. It uses a “pull-system” philosophy of production vs. a “push system” of mass-manufacturing. It was pioneered by the Japanese in the form of the Toyota Production System (TPS), which is also known as lean manufacturing.
Kanban is a set of principles for creating a lean, efficient, and waste-free production flow by limiting work-in-process. Each step of a process is analyzed to determine its optimal rate of production. Constraints or limits are then placed on that process, so that it is not overwhelmed. This makes each process step flow efficiently without slowing down. The net effects of these atomic-level constraints are that the overall end-to-end process is as efficient as possible.
The reported benefits of a Kanban system are high customer satisfaction, stakeholder trust, product quality, productivity, cost efficiency, and employee morale. The two primary benefactors of Kanban are customers and workers. Ultimately, customers get the high-quality products they want, when they need them, and at reasonable prices.
Employees or workers are also enabled to work at a ‘sustainable pace.’ Kanban is viewed as happy medium between buyers and suppliers. Firms can meet the market’s cycle-time demands in order to remain competitive and workers can work at a reasonable pace and enjoy a good quality of life.
Kanban is independent of the type of systems or software development approach used. It works with traditional plan and document-driven approaches as well as newer agile systems and software development methodologies. It can even work with ad hoc processes. Kanban is a set of principles that acts as a framework, which can be wrapped around any type of organizational process. It is frequently used in conjunction with agile methods, although it has also proven useful in unison with large-scale traditional process frameworks as well.
Kanban is viewed as amethodological, rather than a systems and software development methodology. Its proponents reject its characterization as a new development methodology or even a new type of agile method. It’s viewed as a set of operating principles and policies, not as a prescriptive step-by-step development methodology. Kanban is used for utilizing a holistic systems-level view of the world vs. a narrowly-focused suboptimal software-level view.
Kanban is an approach for organizational transformation, change management, performance improvement, and quality improvement. It’s simple to use and implement and its net effects can result in order-of-magnitude performance improvements. It starts by analyzing an “as-is” process rather than creating a new one. Then, by instituting minor policy changes, existing processes are incrementally refined to yield large-scale performance improvements.
Typical policy changes include limiting the amount of work flowing through the system, limiting the workload on individual processes and people, and creating small buffers when necessary to regulate the flow of production. Shortening iteration cycles from months to weeks and days is also a typical policy change. Preventing processes and people from becoming overwhelmed enables them to do the job right the first time.
Well-run Kanban systems yield order-of-magnitude performance improvements in productivity and quality. These in-turn, have the net effect of improving customer satisfaction and stakeholder trust. The overall enterprise benefits by yielding the optimal rate of production with the least amount of resources.
Kanban’s success often depends on key principles of agile methods, although it seeks to distance itself from individual systems and software development methodologies. Like Kanban, agile methods are based on a system of values and operating principles, rather than prescriptive step-by-step procedures. These four values of agile methods are customer interaction, teamwork, working software, and adaptability to change.
The best Kanban examples are ones where there is a high-level of collaboration, interaction, communication, cohesion, and trust between customers and developers. Good teamwork is also a key to successful Kanban implementations. Dependency upon the creation of tacit knowledge is essential to Kanban’s success, which is a hallmark of agile methods.
Kanban, as applied to systems and software development, was inspired the field of operations theory (see “Principles of Product Development Flow” by Don Reinertsen). It is based on six broad principles: 1) focus on quality, 2) reduce work-in-process, 3) deliver often, 4) balance demand against throughput, 5) prioritize, and 6) attack sources of variability to improve predictability. Queuing theory serves as the scientific basis for Kanban and its proponents accuse agile methods of not having a mathematical basis.
Kanban seeks to stabilize an organizational process before improving it. It assumes that lasting organizational process improvement is only possible by reaching the highest levels of any myriad of maturity frameworks. It often takes decades and inordinate amounts of resources to achieve these levels. The proponents of Kanban certainly don’t want people spending decades and unnecessary resources before organizations begin to improve.
Kanban also draws upon principles and practices of agile methods for scaling up to large programs and projects, such as release planning. It recommends the use of multi-level product teams, planning instruments, requirement backlogs, functional hierarchies, and non-functional organizational structures. It is safe to say that Kanban as applied to systems and software development heavily draws upon the principles and practices of agile methods.
“Kanban” by David J. Anderson is a sorely-need addition to the field of systems and software development. It basically translates advanced principles of product development flow into a set of pragmatic operating principles for today’s high-technology organizational leaders. Kanban definitely deserves further analysis and attention.
Kanban is worth considering whether it’s a unique approach to organizational transformation and change, a lens for viewing organizations from a systems point of view, or an incremental improvement to the theory of agile systems and software development. The energy and enthusiasm of its proponents is contagious, Kanban case studies are impressive, and its translation into pragmatic operating principles is finally here. “Everything in moderation is good” and Kanban will certainly be absorbed into the systems and software engineering body of knowledge.