Kanban is a set of practices and tools born out the Toyota "Just in time" production system. Using Kanban, chaos is mitigated by limiting the work in progress (WIP), which is accomplished by quite simply limiting the number of items in progress at any one time. By limiting the number of items in play, the planned pace of work (throughput) naturally matches the slowest step. Because new work cannot be initiated by earlier steps unless the slowest step can handle the load, work doesn't hit bottlenecks once it has started. Slowest steps can be sped up by applying more contributors to that step (e.g., more developers to implementation).
Kanban's main rules are as follows:
Visual the workflow.
Limit WIP.
Limiting WIP changes team behavior. (For example, if the testers on an agile team are at full capacity, but a developer is ready for more work, the developer should assist with testing rather than create more things that testers will need to test.) Also, by enforcing WIP limits, there is a clearly identifiable event at which any shifts in priority can be accommodated.
Kanban is best suited for managing work with well-understood, sequenced (dependent), repeated steps done by independent contributors/roles (e.g., specification by an analyst, implementation by a developer, verification by a tester).
Kanban is typically applied to repeatable tasks that have limited variability and occur in a interrupt-driven environment such as support, maintenance, and operations.
Specifying (WIP)
Ready for Dev
In Dev (WIP)
Ready for UAT (Done)
In UAT (WIP)
Accepted (Done)
A clear definition of "done" for each step. This enforces quality and consistency.
Work items are broken down into similarly sized chunks (e.g., would take no more than a week for the slowest step).
Continuous delivery.
Note: There are no planning meetings or coordinated releases. So you better have a lot of consistency in the work load as well as have the tools and processes in place to be able to roll out the produced value (product or product increment) as it becomes ready.
Lean is a systematic method for eliminating waste in a system with the aim of increasing the overall value produced through it. Modern-day Lean gained notoriety from the success of Toyota's Just-In-Time manufacturing approach, which strives to optimize the manufacturing process to deliver what customers want to see and just-in-time for when they want it.
Although the production of software has much greater variability than manufacturing, the following Lean concepts apply to software development as well:
Value Stream - A value stream is the flow of materials, service, and information (i.e., the workflow) that contribute to the creation of value for a customer, paired with an assessment of the value added by individual workflow elements. The Software Development Lifecycle (SDLC) is the workflow for the production of valuable software. Having waste (muda) in the value stream disrupts the flow of value in that workflow.
Waste (muda) - Lean identifies 8 common conditions that add cost to a workflow without producing customer value. The following are most relevant to software development:
Defects.
Over-production - Creating things that the customer doesn't value or didn't ask for is wasted effort.
Waiting - Waiting (also known as "holding costs") creates delays in the workflow.
Extra-processing - Unnecessarily complicated processes diminish workflow efficiency.
Motion - Hand-offs (also known as "transaction costs") also create delays in the workflow.
Non-utilized talent.
Batch Size and Cycle Time
Batch Size - Batch size (i.e., scope) is the size of one delivered unit of work (e.g., a software release).
A large batch size (e.g., extensive scope) increases variability and decreases predictability.
Reducing batch sizes (e.g., small scope) increases predictability, accelerates feedback, and lowers overall cost.
Lead Time - Lead time is the amount of time between when a customer makes a request and when the requested value is finally delivered. It includes delays (or waiting time) in between tasks until the value is finally delivered.
Cycle Time - Cycle time is the amount of time between work starts on a customer request and when the requested value is delivered, including the time for all the tasks in the workflow. (Lead Time is Cycle Time plus the time between when the request came in and the work began.)
Reducing cycle time (i.e., project schedule) results in cuts down on waste, increases productivity and quality, puts value in the customers' hands more quickly (accelerating the pace of feedback), and increases customer satisfaction.
Task Cycle Time - The amount of time to complete an individual step in a workflow. (Cycle Time is the sum of all Task Cycle Times plus any delays between steps.) The most common causes of waste between software development tasks are extra-processing (overly complicated processes), motion (poorly coordinated hand-offs), and waiting.
Continuous Improvement (Kaizen) - Promote continual self-reflection and raising issues blocking the identification and elimination of waste.
Theory of Constraints - All systems have at least one element of waste that prevents them from producing infinite output and becoming better than they are. The Theory of Constraints suggests that an organization should identify the most limiting factor in a workflow and improve it until it is no longer the most limiting factor.
Kanban - Create signals and mechanisms to visualize the workflow. You cannot measure and improve what you cannot see. A Kanban board or Big Visible Information Radiator (BVIR) allows everyone to identify blockages and issues and share in the accountability to keep the workflow efficient and effective.
Jidoka - Shift the culture so that people are empowered and encouraged to report defects and problems without fear of blame and convey a sense of urgency to raise issues and identify root causes. This increases trust , improves communication, engages employees, and drives prevention.
Lean seeks to increase value for the customer by eliminating waste in the system. Waste is eliminated by optimizing the value stream (workflow) rather than by optimizing on assets, technologies, or departments.
The most common sources of waste in traditional software development projects are large batch sizes (e.g., large scope) and long cycle times (e.g., long delivery cadences). Delivering small scope more frequently in a culture of continuous improvement creates frequent feedback loops in which the limiting factors in producing value are inspected and adjustments are made and re-evaluated.
https://www.scaledagileframework.com/team-kanban/
Book [paid]: "Agile Project Management with Kanban" by Eric Brechner and James Waletzky.
Video [free] - "The Difference Between Lean and Agile" by CA Technologies on YouTube