Agile, Scrum, Kanban. What is the difference?
Agile is a group of software development methodologies, methods, and practices based on iterative development. Requirements and their implementation evolve through collaboration in self-organized multidisciplinary teams.
Agile is a mindset that welcomes changes as a driver of continuous improvement that helps fulfill customer, business, and team satisfaction. Agile is represented by frequent inspection and adaptation, self-organization, accountability, disciplined processes, and rapid delivery of high-quality working products. Agile prefers to deliver working products instead of perfect documentation with the continuous support of customers as a reaction to changes. Agile prefers people & interactions over tools and processes.
Agile values discipline, feedback, courage, openness, transparency, and delivery of commitments/promises.
Scrum implements an Agile mindset and Agile Manifesto in the area of project management. Scrum is a lightweight project management framework (it should be adapted to the company needs) that is quite simple (3 roles, few ceremonies) and provides guidance on how to develop working products in short iterations (timeboxes of 2-3 weeks) that are planned, validated, and reviewed regularly. Scrum fits well for teams with creative work where the process might be different for different types of activities (i.e. software development).
Kanban is a scheduling system for lean manufacturing and production that has been adopted in software development as well. Kanban helps to improve the efficiency of a manufacturing process. Problem areas are discovered by measurement of lead and cycle times, targeted by root cause analysis and system-wide optimization. Like Agile, Kanban is based on high transparency. Software development teams combine Kanban principles and practices with other agile methods:
- Visualize work – Kanban index cards are used for evidence of requirements and tasks on Kanban boards indicating the status of the work.
- Limit work in progress with help of WIP limits that help teams to focus on the most important work, finishing it first and only then continuing with less important items.
- Focus on the flow – develop items based on the order defined by the business and customers in the shortest possible time, but with the highest level of quality. This is achieved by a collaboration of a multi-disciplinary team that even incorporates automated solutions for most boring activities.
- Continuous improvements – everybody is responsible for the identification of waste, proposals of improvements on a regular basis, and implementation of improvements to achieve the best efficiency on the system level, not just local improvements. The work, flow, quality, throughput, and lead time are measured.
Compared to Scrum, Kanban is better for an environment where activities are repeated. For example, call centers, support, maintenance, etc. Kanban doesn’t work in iterations, but the principles of planning, daily standups, review, and retrospectives might be applied as well. These are practices that simply make sense so why not apply them?