Kanban ist eine Methode mit Ursprung in der Produktionssteuerung und wurde für die Softwareentwicklung stark adaptiert. Ziel ist die transparente Darstellung der vorliegenden Aufgaben. Die bessere Visualisierung ermöglicht die Arbeitsschritte besser zu steuern und somit kürzere Durchlaufzeiten zu erreichen. Auch Probleme – insbesondere Engpässe – können schnell sichtbar gemacht werden.
Wurzeln und Geschichte Das japanische Wort bedeutet ursprünglich ‚Signalkarte‘ ( ‚Signal‘, ‚Karte‘) und ist eine Technik aus dem Toyota-Produktionssystem, mit der ein gleichmäßiger Fluss in der Fertigung hergestellt und so Lagerbestände reduziert werden sollen. Der Schwerpunkt liegt dabei auf dem optimalen Fluss jedes einzelnen Produktes durch die Fertigung. Kanban in der Informationstechnik (IT) übernimmt zwar den Namen, versucht aber keine direkte Übertragung einzelner Techniken aus der Produktion auf die IT. Vielmehr werden einige grundlegende Prinzipien aus der (‚Schlanke Produktion‘), und mehr noch dem (auch ), übernommen und ergänzt durch die D. Anderson: Agile Management for Software Engineering - Applying the Theory of Constraints for Business Results. Prentice Hall, 2004, ISBN 0-13-142460-2 und das klassische Risikomanagement. Insbesondere die Ideen Don Reinertsens, der verschiedene Techniken vorstellt, wie sich Produkte in wesentlich kürzerer Zeit entwickeln lassen, spielen eine wichtige Rolle in Kanban. Als Begründer von Kanban in der IT gilt David J. Anderson, der zuvor an der Entwicklung von Feature Driven Development mit beteiligt war und 2010 das erste Buch zu Kanban veröffentlichte.
Prinzipien und Praktiken Anderson beschreibt sechs Prinzipien und sechs Praktiken, die Unternehmen in ihre Arbeitsweise integrieren, wenn sie Kanban anwenden:
Prinzipien Change-Prinzipien Starte mit dem, was jetzt getan wird: In diesem Grundprinzip stecken zwei Dinge. Indem man mit dem beginnt, was man gerade tut, beendet man die aktuelle Arbeit, bevor etwas Neues begonnen wird. Genauso ist hier aber auch die Aussage enthalten, dass Kanban einfach eingeführt werden kann, alle bestehenden Rollen, Prozesse und Verantwortlichkeiten bleiben bestehen. Führe Einigung darüber herbei, Verbesserung durch evolutionäre Veränderungen anzustreben: Weiterentwicklung ist essentiell, hier sollen Verbesserungen aber vor allem durch kleine/evolutionäre Schritte erreicht werden. Fördere Handlungen von Leadership auf allen Ebenen: Verbesserung kann nur funktionieren, wenn sich alle Ebenen in der Organisation daran beteiligen. Besonders wichtig ist es, dass Mitarbeiter, die direkt die Arbeit verrichten, „Acts of Leadership“ zeigen und konkrete Verbesserungsvorschläge einbringen.
Service-Erbringungs-Prinzipien Verstehe die Bedürfnisse und Erwartungen der Kunden und fokussiere Dich auf diese Manage die Arbeit, lass die Menschen sich selbst um die Arbeit herum organisieren Entwickle das Netzwerk aus Services und dessen Regeln häufig weiter, um Ergebnisse zu verbessern
Praktiken Visualisiere Die Wertschöpfungskette mit ihren verschiedenen Prozessschritten (zum Beispiel Anforderungsdefinition, Entwicklung, Dokumentation, Test, Inbetriebnahme) wird gut sichtbar für alle Beteiligten visualisiert. Dafür wird ein Kanban-Board (in der Regel ein großes ) verwendet, auf dem die unterschiedlichen Aktivitäten als Spalten dargestellt werden. Die einzelnen Anforderungen (es können , , , (MMF) usw. sein) werden auf Karteikarten oder Haftnotizen festgehalten und durchwandern mit der Zeit als so genannte Tickets das Kanban-Board von links nach rechts. Limitiere die parallele Arbeit (das WIP) Die Anzahl der Tickets ( – WiP), die gleichzeitig innerhalb einer Aktivität bearbeitet werden dürfen, wird limitiert (WiP-Limit). Wenn beispielsweise die Entwicklung gerade zwei Tickets bearbeitet, und das Limit für diese Aktivität zwei beträgt, darf sie kein drittes Ticket annehmen, auch wenn die Anforderungsdefinition ein weiteres bereitstellen könnte. Hierdurch entsteht ein Pull-System, bei dem sich jede Aktivität ihre Arbeit bei der Vorgängeraktivität abholt, anstatt fertige Arbeit einfach an die nächste Aktivität zu übergeben. Steuere den Arbeitsfluss Die Mitglieder eines Kanban-Prozesses messen typische Größen wie die Durchlaufzeit, die Lieferrate und das WIP, um festzustellen, wie gut die Arbeit organisiert ist, wo man noch etwas verbessern kann und welche Versprechen man an die Kunden geben kann, für die man arbeitet. Dadurch wird die Planung erleichtert und die Verlässlichkeit gesteigert. Mache Regeln explizit Um sicherzustellen, dass alle Beteiligten des Prozesses wissen, unter welchen Annahmen und Gesetzmäßigkeiten man arbeitet, werden möglichst alle Regeln der Zusammenarbeit, die es gibt, explizit gemacht. Dazu gehören z. B. eine Definition des Begriffes „fertig“, ähnlich der Definition of Done in Scrum, Bedeutung der einzelnen Spalten, Antworten auf die Fragen: wer zieht, wann zieht man, wie wählt man das nächste zu ziehende Ticket aus der Menge der vorhandenen Tickets aus (Pull-Kriterien) Implementiere Feedbackschleifen In festgesetzten Terminen gibt sich das Team (oder die Teams untereinander) gegenseitig Feedback. Beispiele: Retrospektiven: Zusammenarbeit revue passieren lassen Standup Meeting: Absprache anstehender Aufgaben / Blockaden ansprechen / Fluss koordinieren Operation Reviews: Kanban-Teams des Unternehmens treffen sich und tauschen Erfahrungen aus Verbessere gemeinsam, entwickle experimentell weiter
Die Visualisierung und die Begrenzung des WiP sind einfache Mittel, mit denen rasch sichtbar wird, wie schnell die Tickets die verschiedenen Aktivitäten durchlaufen und wo sich Tickets stauen. Die Stellen, vor denen sich Tickets häufen, während an den nachfolgenden Aktivitäten freie Kapazitäten vorhanden sind, werden als bezeichnet. Durch Analysen des Kanban-Boards können immer wieder Maßnahmen ergriffen werden, um einen möglichst gleichmäßigen Fluss zu erreichen. Beispielsweise können die Limits für einzelne Aktivitäten verändert werden, es können Puffer eingeführt werden (insbesondere vor , die durch nur zeitweise Verfügbarkeit von Ressourcen entstehen), die Anzahl der Mitarbeiter an den verschiedenen Aktivitäten kann verändert werden, technische Probleme werden beseitigt usw. Dieser kontinuierliche Verbesserungsprozess (japanisch: ) ist wesentlicher Bestandteil von Kanban.
Kaizen Kanban enthält als festen Bestandteil eine Kultur des kontinuierlichen Verbesserungsprozesses (KVP), gibt aber keine konkreten Kadenzen hierfür vor. In vielen Kanban-Teams haben sich aber mindestens die folgenden drei Kadenzen etabliert: Tägliche Statusmeetings () Das Team trifft sich täglich (in der Regel morgens) vor dem Kanban-Board. Dort wird anhand der Tickets der Projektfortschritt seit dem letzten Meeting deutlich gemacht. Außerdem werden Probleme verdeutlicht und Lösungswege besprochen. Das Meeting ist allerdings auf Kürze angelegt (zirka 15 Minuten), so dass längere Diskussionen ausgelagert werden.
In Kanban werden so genannte abgehalten. Dies sind Meetings, die der kontinuierlichen Verbesserung dienen. Sie weisen Ähnlichkeiten zu Retrospektiven auf, wie sie aus anderen agilen Methoden bekannt sind. Allerdings finden unregelmäßig statt. Und sie streben eine hohe Objektivität an, indem sie sich stärker auf die gesammelten Daten aus der Vergangenheit beziehen. Weiterhin wird versucht, dass an diesen Meetings Teilnehmer aus der gesamten Organisation teilnehmen (inklusive Management), und nicht nur das Entwicklungsteam.
Probleme sollen in Kanban nicht verwaltet, sondern behoben werden. Dies geschieht im Wesentlichen dadurch, dass durch das Kanban-Board Fehler schnell deutlich werden, zum Beispiel weil sich Arbeit staut, einzelne Aktivitäten nicht ausgelastet sind, die Durchlaufzeiten zu lang sind oder einzelne Tickets ständig an derselben Aktivität bleiben. Die Fehlerursachen sollen schnell ausfindig gemacht und schnell beseitigt werden (gegebenenfalls durch die Zusammenarbeit des gesamten Teams).
und Kanban orientiert sich am Grundsatz aus dem . Dies bedeutet, dass zwar großer Wert darauf gelegt wird, Verschwendung zu beseitigen (zum Beispiel unfertige Aufgaben) und einen möglichst gleichmäßigen Fluss zu gewährleisten, dass an erster Stelle jedoch stets der Wert der zu erledigenden Tickets steht. Deshalb kann es auch gerechtfertigt werden, ein Kanban-Limit kurzfristig zu brechen, um ein sehr wichtiges Ticket schneller zu bearbeiten oder Features schon im Vorwege detailliert zu spezifizieren, obwohl ungewiss ist, ob/wann sie tatsächlich realisiert werden.
Priorisierung Um zu entscheiden, welche zu welchem Zeitpunkt in das Kanban-System genommen werden, wird häufig nach dem Schema der Verzögerungskosten () priorisiert, das auf Reinertsen/Smith zurückgeht. Die Idee dahinter ist, dass es nicht nur Kosten verursacht, neue work items zu bearbeiten, sondern dass auch Kosten dadurch entstehen, wenn diese mit Verzögerung auf den Markt gebracht werden. Streng genommen handelt es sich dabei nicht um „Kosten“, sondern um Verzichtskosten. Standardmäßig ist davon auszugehen, dass ein work item umso mehr Verzögerungskosten verursacht, je später es am Markt ist. Die Frage ist dann, wie teuer jeder weitere Tag/Woche/Monat Verzögerung ist und wie sich diese Kosten im Verhältnis zu den Verzögerungskosten für andere work items verhalten. Es gibt aber auch work items bei denen über einen gewissen Zeitraum gar keine Verzögerungskosten anfallen, diese dann aber an einem fixen Termin schlagartig ansteigen (und dann sogar das gesamte Unternehmen gefährden können), oder auch kritische work items die von Beginn an hohe Verzögerungskosten verursachen.
Service-Klassen Wenn ein Kanban-System installiert wird, werden zu Beginn in der Regel alle Tickets gleich behandelt. Das bedeutet, dass diejenigen Tickets, die zuerst in der ersten Aktivität erledigt wurden, auch zuerst in der nächsten Aktivität bearbeitet werden. Dieses Vorgehen wird als FIFO () bezeichnet. Oft wird jedoch schnell deutlich, dass Tickets mit verschiedener Wichtigkeit behandelt werden. Deshalb wird in Kanban vorgeschlagen, verschiedene Service-Klassen () zu definieren: Beschleunigt () Diese Tickets müssen mit hoher Priorität behandelt werden. Es kann nötig sein, dass das gesamte Team seine momentane Tätigkeit stoppt, um dieses Ticket zu bearbeiten. Für diese Service-Arten werden häufig die Kapazitätslimits der einzelnen Aktivitäten vorübergehend außer Kraft gesetzt. Fester Termin () Wenn eine Funktionalität erst zu einem fixen Termin benötigt wird (zum Beispiel weil dann eine Gesetzesänderung wirksam wird), dann werden die entsprechenden Tickets so durch das Kanban-System geschleust, dass die Funktionalität kurz vor diesem Stichtag produktiv geht. Vage () Wenn der Geschäftswert und/oder die Verzögerungskosten für eine neue Funktionalität vage sind, werden die entsprechenden Tickets nachrangig behandelt. Das Team kann zum Beispiel definieren, dass sich zu jedem Zeitpunkt nur ein solches Ticket im System befinden darf. Standard () Alle anderen Tickets zählen zur Standard-Serviceklasse. In der Regel werden sie nach FIFO behandelt. Das Team kann jedoch auch andere/zusätzliche Regeln definieren. Die Service-Arten werden maßgeblich bestimmt durch die Art der Verzögerungskosten, die mit den jeweiligen work-items verbunden sind.
Varianzen Auch wenn es unrealistisch ist, dass alle Anforderungen exakt dieselbe Größe haben bzw. immer in nahezu derselben Zeit erledigt werden können, wird in Kanban-Systemen angestrebt, diesem Ideal möglichst nahezukommen. Ein Ziel von Kanban ist es daher, die Varianzen zu verringern. Dies geschieht, indem zum Beispiel in möglichst gleicher Komplexität heruntergebrochen werden.
Tracking In Kanban-Systemen werden verschiedene Maße (Metriken) aufgezeichnet, um empirische Daten für zukünftige Verbesserungen zu sammeln: (CFD)