Kanban im Überblick: Wie funktioniert diese agile Methode?

Der Kanban-Prozess ist ein Prozess der agilen Softwareentwicklung. Wie auch SCRUM hat Kanban Vor- und Nachteile.

Was ist Kanban?

Kanban ist zunächst ein Modell zur Produktionssteuerung gewesen. Ähnlich zu diesem Modell geht es auch in der Softwareentwicklung darum, parallele Prozesse abzubauen, um die bereits vorgefertigten Teile zum Abschluss zu bringen. Dies führt zu kürzeren Durchlaufzeiten einzelner Produkte (Software-Iterationsschritte) und zu schnelleren Releasezyklen.

Das Kanban-Board

Das Kanban-Board ist ein zentrales Element im Bereich Kanban. Es wird im Grunde durch eine einfache Tabelle abgebildet. Die einfachste Version stellt sich als Tabelle mit drei Spalten dar:

  1. Todo
  2. In Progress
  3. Done

Während Spalte zwei auf eine bestimmte Anzahl an Aufgaben begrenzt wird, können in den Spalten eins und drei beliebig viele Aufgaben (zum Beispiel dargestellt durch Klebezettel) abgelegt werden. Dabei muss bedacht werden, dass die Aufgaben in Spalte eins nach Abarbeitungsreihenfolge sortiert sein müssen. Sobald eine Aufgabe aus der Todo-Liste bearbeitet wird, wird sie in die „In Progress“-Spalte verschoben. Ist sie fertig, wird sie in die Spalte „Done“ verschoben – alternativ kann sie auch wieder nach „Todo“ zurückwandern.

Durch die anzuwendende Regel, dass in Spalte zwei nur eine begrenzte Anzahl an Aufgaben stehen darf, wird das Ziel der schnelleren Abarbeitung von Aufgaben gewährleistet. Geringere Fokuswechsel bedeutet weniger Verlust durch selbigen Overhead. Die Aufgaben werden in kürzeren Zeiten abgearbeitet und können somit auch schneller Geld einbringen.Natürlich kann dieses Board beliebig erweitert werden – es können Spalten wie „Test in Progress“, „Review in Progress“ oder ähnliches hinzukommen. Wichtig ist nur, dass jede Spalte zwischen der ersten und letzten Spalte (zwischen dem „Backlog“ und der „Erledigt“-Spalte) in der Anzahl der simultan darin abgelegten Tasks begrenzt sind.

Kanban Nachteile

Kein Vorgehensmodell ist perfekt. Dadurch lässt sich logisch schließen, dass jedes Entwicklungsmodell auch Nachteile hat. Einer der Nachteile ist das Starke Bedürfnis des Prozesses nach Disziplin aller Beteiligten. Sobald auch nur eine Person aus der Reihe fällt und sich nicht an eine der (wenigen) Regeln hält, gerät der Prozess schnell in’s wanken. Ebenso bietet das Vorgehen insofern keine „Eigenstabilität“, als dass es keine festen Zyklen gibt, in denen gearbeitet wird. Daraus folgt natürlich, dass sich jederzeit Priorisierungen oder die Reihenfolge der Abarbeitung von Aufgaben ändern können.

Kanban Vorteile

Vorteile sind unter anderem, dass die Reihenfolge von Aufgaben ständig geändert werden kann. Das führt zu einer extrem hohen Flexibilität. Ebenso ist der gesamte Prozess sehr „lean“, das heißt sehr schlank. Es gibt tägliche Standup-Meetings und unregelmäßig stattfindenden „Operations Reviews“ (eine Art Retrospektive). Fügt man diese beiden Meetings noch mit dem Begriff der „Root cause analysis“ (dem Beheben der Wurzel eines Problemes), so landet man direkt beim Kaizen.

Zusammenfassung

Zusammengefasst kann man sagen, dass Kanban sehr von der Flexibilität lebt, welche es bietet. Es ist ein sehr schlankes Vorgehensmodell der Softwareentwicklung und bietet eingespielten Teams sehr viele Möglichkeiten, die Workload zu optimieren. Für Teams, welche sich neu im Sektor der agilen Softwareentwicklung befinden, empfehle ich allerdings SCRUM. Dieses setzt auf ein paar mehr Regeln, besitzt ein etwas starreres Grundgerüst und gibt dadurch einen etwas strengeren Rahmen – für Anfänger ist es damit deutlich geeigneter, um erste Erfahrungen zu sammeln.

Was ist Agile Softwareentwicklung – Ein Einblick

Der erste Teil der Artikelserie zum Thema „Agile Softwareentwicklung“ wird sich mit der Definition beschäftigen, was überhaupt Agile Softwareentwicklung ist. Im darauffolgenden Teil des Artikels soll unter anderem auf Vorteile und Nachteile dieses Entwicklungsmodelles eingegangen werden. Weiterhin sollen ebenso die ein oder anderen Stolpersteine der „Agilität“ herausgearbeitet werden.

Was ist Agile Softwareentwicklung?

Die Agilität in der Softwareentwicklung beschreibt im Groben das Bestreben, einen möglichst flexibel handhabbaren Softwareentwicklungsprozess zu haben. Durch das eliminieren von unnötigem Verwaltungsaufwand, soll der Prozess schlank gehalten werden und die Softwareentwicklung soll in den Vordergrund treten.

Unter diesem flexibel handhabbaren Entwicklungsprozessen versteht man die Tatsache, möglichst zeitnah den Fokus von einem Thema auf ein anderes Thema setzen zu können. Hierbei soll nicht mehr im Vorhinein eine Art „Fünf-Jahres-Plan“ erstellt werden. Vielmehr es soll möglich sein, nach der Umsetzung des ersten Features ein beliebiges, zum Zeitpunkt der Erstellung von Feature 1 noch nicht bekanntes Feature, einwerfen und in die Umsetzung geben zu können.

Die genannte Agilität wird gestützt durch das sogenannte „Agile Manifest“, welches im Februar 2001 veröffentlicht wurde. Selbiges umfasst vier Grundwerte der „Agilität“:

  1. Individuals and interactions over processes and tools
  2. Working software over comprehensive documentation
  3. Customer collaboration over contract negotiation
  4. Responding to change over following a plan

Schaut man sich diese Werte an, so geht es vordergründig nicht darum, sich an Prozessen, Befehlsketten und ähnlichem aufzuhalten. Vielmehr ist dafür zu sorgen, möglichst schnell ein (den Kundenanforderungen genügendes) funktionierendes Produkt zu liefern.

Vorteile des agilen Entwicklungsprozesses

Die Softwareentwicklung in ihrer agilen Form mag für den einen oder anderen sicher als eine Modeerscheinung bekannt sein. Diese Modeerscheinung bringt jedoch handfeste Vorteile mit sich. Beginnen wir mit dem Punkte der Risikobewertung. Einer der Fokuspunkte agiler Entwicklung liegt darin, ein Produkt in kurzen Iterationen umzusetzen. Aus diesem Vorgehen folgt, dass schlecht ankommende Versionen einer Software weniger negative Auswirkungen generieren. Nimmt man das Vorgehen per Wasserfallmodell als Vorbild, so ist diese (meist längere) Planungs- als auch Umsetzungszeit verloren. Agilität schränkt diesen Zeitraum stark ein, indem es kurze Iterationen fordert. Ein Feature nach dem anderen. Funktioniert dieses eine Feature nicht, sind lediglich die Zeiten für diese Iteration vergeben. Bei herkömmlichen Entwicklungsmethoden, muss das geplante und entwickelte Feature beim Kunden ankommen, ansonsten geht viel Geld verloren.

Ebenso vorteilhaft ist, dass man sehr viel schneller auf Marktgegebenheiten reagieren kann. Märkte und Kundenverhalten ändern sich häufig und teilweise sehr schnell. Genau diese Reaktionsfähigkeit durch agile Softwareentwicklung ist Gold wert: durch die Gegebenheit wenige Wochen an einer Softwareversion zu arbeiten, müssen keine langen Planungs- und Umsetzungsphasen verworfen werden. Im Gegenteil: Diese Arbeiten können abgeschlossen werden. Es muss keine, bzw. im Notfall nur wenig Arbeit verworfen werden und es kann direkt mit der Reaktion auf das Marktumfeld begonnen werden.

Ein weiterer, wichtiger Punkt ist der direkte Draht zwischen IT-Abteilung und Management. Auch wenn es nicht so wirkt: durch den frühen Einstieg der IT in die Planungen eines Features lassen sich verschiedene Fehlplanungen vermeiden, welche zum Beispiel im Wasserfallmodell zu einem großen „Knall“ und einem deutlichen Mehraufwand an Investitionen geführt hätten.

Nachteile agiler Entwicklung

Es ist nicht nur so, dass die agile Entwicklung ausschließlich Vorteile mit sich bringt. Sie bringt auch einige Nachteile mit sich. Nach meiner Erfahrung der letzten 2,5 Jahre sind sich (vor allem zu Anfang eines solchen Prozesses) viele Projektmanager nicht im klaren darüber, dass das Wort „agil“ nicht gleichzusetzen ist mit dem Wort „spontan“. Ein Kanban- oder SCRUM-Prozess verleiten sehr schnell dazu, doch noch das eine oder andere Ticket tauschen oder „in den Prozess quetschen“ zu wollen. Dass das nicht gewollt ist, sollte jedem verständlich sein. Auch ein agiler Prozess lebt von einer bestimmten Kontinuität. Diese erreicht man unter Verwendung von SCRUM beispielsweise durch das Einhalten der „Sprints“. Diese beschreiben das definieren eines Ziels binnen der nächsten 14 Tage und auch, dass sich an diesem Ziel möglichst nichts änder sollte.

Ebenso wirkt es sich nachteilig aus, dass wenige Entwickler und auch wenige Führungsrollen vertraut mit agiler Entwicklung sind. Es gilt, vor allem zu Beginn, auf die strikte Einhaltung besitmmter Regeln zu achten. In vielen Fällen werden Vorgehen wie SCRUM zunächst zu einem Naserümpfen im Management führen. Auf den ersten Blick wirken viele Meetings dieses Entwicklungsprozesses nach „Überfluss“. Gerade Meetings wie das Estimation-Meeting helfen jedoch auch dem Management ein besseres Gefühl für den Wert einer Aufgabe („User-Story“) zu bekommen. Auf die einzelnen Phasen des Sprints sowie die dazugehörigen Meetings werde ich jedoch in einem weiteren Artikel eingehen.