Agile, Lean Software Development, Scrum, XP und Kanban

Herkunft und Zusammenhang

  • Agile: Entstand 2001 aus dem Agile Manifesto und beschreibt eine Reihe von Prinzipien und Werten, die Flexibilität, Zusammenarbeit und Kundenorientierung in der Softwareentwicklung fördern. Agile umfasst verschiedene Methoden und Frameworks wie Scrum, XP und Kanban.

  • Lean Software Development: Basierend auf den Prinzipien der Lean Production aus der Automobilindustrie (insbesondere Toyota). Ziel ist es, Wert zu maximieren und Verschwendung zu minimieren. Wurde von Mary und Tom Poppendieck auf die Softwareentwicklung angewendet.

  • Scrum: Ein agiles Framework, das auf Iterationen, genannt Sprints, basiert. Es fördert Selbstorganisation, regelmäßige Inspektion und Anpassung.

  • Extreme Programming (XP): Eine agile Methode, die sich auf technische Exzellenz und kontinuierliche Verbesserung konzentriert. Enthält Praktiken wie Pair Programming, TDD und kontinuierliche Integration.

  • Kanban: Ursprünglich aus der Lean Production stammend, wurde Kanban von David J. Anderson auf die Softwareentwicklung übertragen. Es konzentriert sich auf die Visualisierung des Workflows und die Begrenzung von Work-in-Progress (WIP).

Kanban Principles, Practices und Values

Principles:

  1. Start with what you do now: Kanban baut auf bestehenden Prozessen auf.
  2. Agree to pursue incremental, evolutionary change: Veränderungen werden schrittweise eingeführt.
  3. Respect the current process, roles, responsibilities, and titles: Anerkennung der bestehenden Strukturen und Verantwortlichkeiten.
  4. Encourage acts of leadership at all levels: Jeder im Team wird ermutigt, Verantwortung zu übernehmen.

Practices:

  1. Visualize the Workflow: Darstellung der Arbeitsprozesse auf einem Kanban Board.
  2. Limit Work in Progress (WIP): Begrenzung der Anzahl gleichzeitiger Aufgaben, um Überlastung zu vermeiden.
  3. Manage Flow: Überwachung und Optimierung des Arbeitsflusses.
  4. Make Process Policies Explicit: Klare Definition und Kommunikation der Arbeitsregeln.
  5. Implement Feedback Loops: Regelmäßige Überprüfung und Anpassung der Prozesse.
  6. Improve Collaboratively, Evolve Experimentally (Kaizen): Kontinuierliche Verbesserung durch kleine, experimentelle Änderungen.

Values:

  • Transparency: Klare Sicht auf alle Arbeitsprozesse und Aufgaben.
  • Collaboration: Förderung der Zusammenarbeit im Team.
  • Customer Focus: Ausrichtung auf die Bedürfnisse des Kunden.
  • Flow: Kontinuierlicher und effizienter Arbeitsfluss.

Kanban Board und Cumulative Flow Diagram (CFD)

Kanban Board:

  • Funktion: Visualisierung des Workflows durch Spalten, die verschiedene Phasen des Arbeitsprozesses darstellen (z.B. To Do, In Progress, Done).
  • Elemente: Karten repräsentieren Aufgaben, die durch die Spalten bewegt werden, um den Fortschritt zu zeigen.

Cumulative Flow Diagram (CFD):

  • Funktion: Visualisierung der Arbeitselemente über die Zeit, um Engpässe und Arbeitsfluss zu analysieren.
  • Elemente: Zeigt die Menge der Arbeit in verschiedenen Phasen (Spalten des Kanban Boards) über die Zeit an.

Begriffe

Pull System:

  • Aufgaben werden basierend auf der Kapazität und Verfügbarkeit des Teams gezogen, nicht geschoben.

Limited WIP (Work in Progress):

  • Begrenzung der Anzahl gleichzeitiger Aufgaben, um Überlastung zu vermeiden und den Fokus zu verbessern.

Visualize the Workflow:

  • Darstellung des Arbeitsprozesses auf einem Kanban Board, um Transparenz und Effizienz zu erhöhen.

Cumulative Flow Diagram:

  • Visualisierung des Arbeitsflusses über die Zeit, zeigt die Menge der Arbeit in verschiedenen Phasen an.

Lead Time vs. Cycle Time:

  • Lead Time: Zeit von der Auftragserteilung bis zur Lieferung.
  • Cycle Time: Zeit, die benötigt wird, um eine Aufgabe vom Beginn der Bearbeitung bis zur Fertigstellung abzuschließen.

Kaizen:

  • Kontinuierliche Verbesserung durch kleine, inkrementelle Veränderungen.

Waste in Software Development:

  • Überflüssige Aktivitäten, die keinen Mehrwert liefern, wie unnötige Meetings, Wartezeiten, Defekte und redundante Arbeiten.

Principles of Lean

  1. Value: Kundenwert definieren und maximieren.
  2. Value Stream: Wertstrom analysieren und optimieren.
  3. Flow: Kontinuierlichen Arbeitsfluss sicherstellen.
  4. Pull: Aufgaben basierend auf Nachfrage ziehen.
  5. Perfection: Kontinuierliche Verbesserung anstreben.

Unterschiede und Gemeinsamkeiten von Scrum und Kanban

Gemeinsamkeiten:

  • Beide fördern Transparenz, Zusammenarbeit und kontinuierliche Verbesserung.
  • Beide nutzen visuelle Werkzeuge zur Verfolgung des Arbeitsfortschritts (Task Board in Scrum, Kanban Board in Kanban).
  • Beide zielen darauf ab, den Arbeitsfluss zu optimieren und Engpässe zu identifizieren.

Unterschiede:

  • Scrum: Strukturierte Iterationen (Sprints) mit festgelegten Rollen (Scrum Master, Product Owner, Entwicklungsteam) und Zeremonien (Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective).
  • Kanban: Keine vorgeschriebenen Iterationen, Rollen oder Zeremonien. Fokus liegt auf kontinuierlichem Fluss und WIP-Limits.

Zusammenfassung

Agile, Lean Software Development, Scrum, XP und Kanban sind eng miteinander verbunden und haben gemeinsame Ziele: Flexibilität, Effizienz, Kundenorientierung und kontinuierliche Verbesserung. Kanban bietet spezifische Prinzipien und Praktiken, die den Arbeitsfluss visualisieren und optimieren, während Lean Prinzipien sich auf die Eliminierung von Verschwendung und die Maximierung des Kundenwerts konzentrieren. Scrum und Kanban bieten unterschiedliche Ansätze zur Organisation und Optimierung der Arbeitsprozesse, können jedoch auch kombiniert werden, um die jeweiligen Vorteile zu nutzen.