Lean-Entwicklung ist die Anwendung der Lean-Prinzipien auf die Softwareentwicklung. Die Lean-Prinzipien haben ihren Ursprung in der Fertigung, wo sie zur Optimierung von Produktionslinien eingesetzt werden. Das Ziel war es, Verschwendung zu minimieren und den Nutzen für den Kunden zu maximieren. Diese beiden Ziele sind auch für die Softwareentwicklung von Bedeutung, die ebenfalls:
- Einem wiederholbaren Prozess folgt
- Bestimmte Qualitätsstandards erfordert
- Auf der Zusammenarbeit einer Gruppe spezialisierter Mitarbeiter beruht
Natürlich gibt es auch einige wesentliche Unterschiede zwischen der Fertigung und der Softwareentwicklung. Bei der Fertigung geht es um die Produktion physischer Güter, bei der Softwareentwicklung entsteht der Nutzen dagegen sozusagen „im Kopf des Entwicklers“.
Die Anwendung der Lean-Prinzipien auf Wissensarbeit erfordert ein Umdenken in Bezug auf die Definitionen von Wert, Verschwendung und anderen wichtigen Lean-Konzepten. Erfahren Sie, wie sich diese 7 Lean-Prinzipien auf die Praxis der Softwareentwicklung anwenden lassen.
AgilePlace – kostenlose Testversion: AgilePlace Online-Kanban-Software
Melden Sie sich für eine kostenlose 30-tägige Testversion an, damit Sie und Ihr Team noch heute die ersten Online-Kanban-Boards erstellen können. Erleben Sie selbst, wie AgilePlace kontinuierliche Bereitstellungsinitiativen unterstützt, den Zeitaufwand reduziert und die Bereitstellungsgeschwindigkeit und -prozesse Ihres Teams verbessert.
Jetzt kostenlos testen • AgilePlace Free TrialDie 7 Prinzipien der Lean-Entwicklung
Die sieben Lean-Prinzipien lauten:
- Vermeiden Sie Verschwendung
- Integrieren Sie Qualität
- Schaffen Sie Wissen
- Schieben Sie Entscheidungen auf
- Liefern Sie schnell
- Respektieren Sie die Menschen
- Optimieren Sie das Ganze
In ihrem Buch Lean Software Development: An Agile Toolkit erläutern Mary und Tom Poppendieck, wie sich diese Lean-Prinzipien auf die Softwareentwicklung anwenden lassen. Im Folgenden finden Sie eine kurze Zusammenfassung der einzelnen Prinzipien sowie praktische Tipps zu ihrer Anwendung im Rahmen der Softwareentwicklung.
Vermeiden Sie Verschwendung
Eines der Schlüsselelemente der Lean-Praxis besteht darin, alles zu beseitigen, was keinen Nutzen für den Kunden liefert. In der Toyota-Tradition der Lean-Produktion werden sieben Arten der Verschwendung (oder Muda) definiert. Sie lauten:
- Überproduktion: Herstellen eines Artikels, bevor er benötigt wird
- Unnötige Materialbewegungen: Das Bewegen des Inventars von Ort zu Ort birgt das Risiko von Beschädigungen, ohne zusätzlichen Nutzen zu stiften.
- Inventar: Das Vorhalten von Inventar verursacht zusätzliche Kosten, ohne dem Kunden einen Nutzen zu bieten; überschüssiges Inventar beansprucht wertvollen Platz, verlängert die Vorlaufzeiten und verzögert Innovationen.
- Bewegung: Damit ist wortwörtlich die unnötige Bewegung von Arbeitern in der Fertigung gemeint.
- Ausschuss/Nacharbeit: Qualitätsprobleme führen zu Nacharbeit oder Ausschuss und können Unternehmen, die nicht regelmäßig Wege zur Beseitigung von Fehlerquellen finden, enorme Zusatzkosten bescheren.
- Überbearbeitung: Die Verwendung fortschrittlicher, teurer Werkzeuge, um etwas zu erreichen, das mit einfacheren Tools hätte erledigt werden können.
- Warten: Diese Art der Verschwendung tritt auf, wenn der Bestand zwischen nutzenstiftenden Schritten warten muss.
Tom und Mary Poppendieck haben diese Arten von Verschwendung auf die Softwareentwicklung übertragen. Jede dieser Verschwendungsformen sollte systematisch beseitigt werden, um den Kundennutzen zu maximieren:
- Unnötiger Code oder Funktionalitäten: Diese Form der Verschwendung verlängert die Zeit bis zur Auslieferung an den Kunden und verlangsamt Feedbackschleifen.
- Mehr anfangen, als erledigt werden kann: Dies fügt dem System unnötige Komplexität hinzu, führt zu Kontextwechsel, Verzögerungen bei der Übergabe und anderen Blockaden, die einen reibungslosen Ablauf stören.
- Verzögerungen im Softwareentwicklungsprozess: Solche Verzögerungen verlängern die Zeit bis zur Auslieferung an den Kunden und verlangsamen Feedbackschleifen
- Unklare oder sich ständig ändernde Anforderungen: Solche Probleme führen zu Nacharbeit, Frustration, Qualitätsproblemen und mangelndem Fokus.
- Bürokratie: Übermäßige Bürokratie verlangsamt das Tempo.
- Langsame oder ineffektive Kommunikation: Sie führt zu Verzögerungen, Frustration und schlechter Kommunikation mit den Stakeholdern, was sich negativ auf den Ruf der IT-Abteilung im Unternehmen auswirken kann.
- Teilweise erledigte Arbeit: Solche Arbeit liefert dem Kunden keinen Nutzen oder ermöglicht es dem Team nicht, aus seiner Arbeit zu lernen.
- Mängel und Qualitätsprobleme: führen zu Nacharbeit, abgebrochener Arbeit und geringer Kundenzufriedenheit.
- Aufgabenwechsel: Sie führen zu schlechter Arbeitsqualität, Verzögerungen, Kommunikationsstörungen und niedriger Arbeitsmoral der Teams.
Integrieren Sie Qualität
Es mag selbstverständlich erscheinen, dass jedes Team Qualität in seine Arbeit integrieren möchte. Aber wenn dies nicht Teil einer disziplinierten Praxis ist, ist das leichter gesagt als getan. Bei dem Versuch, Qualität zu gewährleisten, verursachen viele Teams in Wirklichkeit Verschwendung – zum Beispiel durch übermäßiges Testen oder die ausufernde Protokollierung von Fehlern.
In vergangenen Jahrzehnten waren viele Lean-Entwicklungsteams erfolgreich, indem sie die folgenden Lean-Entwicklungstools eingesetzt haben, um Qualität in ihre Arbeit zu integrieren. In der Lean-Entwicklung ist Qualität die Aufgabe aller Beteiligten, nicht nur die des Qualitätsanalysten.
Die folgenden sind die bekanntesten Lean-Tools für die Integration von Qualität:
- Paarweise Programmierung: Vermeiden Sie Qualitätsprobleme, indem Sie die Fähigkeiten und Erfahrungen von zwei Entwicklern kombinieren, statt nur einem die Aufgabe zu übertragen.
- Testbasierte Entwicklung: Notieren Sie Kriterien für den Code, ehe er geschrieben wird, um sicherzustellen, dass er den geschäftlichen Anforderungen entspricht.
- Incremental development and constant feedback
- Minimieren von Wartezeiten: Reduzieren Sie Kontextwechsel, Wissenslücken und mangelnden Fokus.
- Automatisierung: Automatisieren Sie jeden mühsamen, manuellen oder für menschliche Fehler anfälligen Prozess.
Schaffen Sie Wissen
Das Lean-Entwicklungsprinzip „Wissen schaffen“ ist ein weiteres Prinzip, das auf den ersten Blick einfach zu sein scheint, bei der Umsetzung jedoch Disziplin und Fokus verlangt. Dieses Prinzip ermutigt Lean-Teams dazu, die Infrastruktur bereitzustellen, um wertvolle Learnings ordnungsgemäß zu dokumentieren und beizubehalten. Dazu kann eine beliebige Kombination der folgenden Werkzeuge verwendet werden:
- Paarweise Programmierung
- Codeüberprüfungen
- Dokumentation
- Wiki – um die Wissensbasis schrittweise aufzubauen
- Sorgfältig kommentierter Code
- Sitzungen zum Wissensaustausch
- Schulungen
- Verwendung von Tools zum Anforderungsmanagement oder zum Verwalten von User Storys
Schieben Sie Entscheidungen auf
Dieses Lean-Entwicklungsprinzip lässt sich leicht missbräuchlich einsetzen. Entscheidungen aufzuschieben bedeutet nicht, dass Teams bei ihren Entscheidungen unentschlossen oder unverantwortlich handeln sollten.
Ganz im Gegenteil: Dieses Lean-Prinzip will die Teams ermutigen, Verantwortung zu zeigen, indem sie sich ihre Optionen offenhalten und kontinuierlich Informationen sammeln, anstatt Entscheidungen zu treffen, ohne über die erforderlichen Daten zu verfügen.
Entscheidungen aufzuschieben bedeutet:
- Nicht detailverliebt und für Monate im Voraus zu planen
- Sich nicht zu Ideen oder Projekten zu verpflichten, ohne die geschäftlichen Anforderungen vollständig zu verstehen
- Informationen zu wichtigen Entscheidungen kontinuierlich zu erfassen und zu analysieren
Liefern Sie schnell
Jedes Team will schnell bereitstellen, um den Kunden so rasch wie möglich einen Nutzen zu liefern. Die Frage ist nicht, warum Teams schnell liefern möchten, sondern vielmehr, was sie bremst. Hier ein paar häufige Ursachen:
- Ein zu weit in die Zukunft gerichtetes Denken im Hinblick auf zukünftige Anforderungen
- Hindernisse, auf die nicht mit Dringlichkeit reagiert wird
- Over-Engineering bei Lösungen und geschäftlichen Anforderungen
Die Lean-Methode, schnell zu liefern, bedeutet nicht, um der Geschwindigkeit willen länger und am Wochenende zu arbeiten oder unbesonnen vorzugehen.
Die Lean-Entwicklung basiert auf folgendem Konzept: Erstellen Sie eine einfache Lösung, stellen Sie sie Ihren Kunden vor, und verbessern Sie sie schrittweise auf der Basis des Kundenfeedbacks. Das ist vor allem bei Software wichtig, denn eine schnelle Markteinführung kann einen unglaublichen Wettbewerbsvorteil bedeuten.
Respekt für Menschen
Das Lean-Prinzip „Respekt für Menschen“ ist häufig eines der am stärksten vernachlässigten, insbesondere in der schnelllebigen, von Burn-outs belasteten Welt der Softwareentwicklung. Es gilt für jeden Aspekt der Arbeitsweise von Lean-Teams, von der Kommunikation über den Umgang mit Konflikten, die Einstellung und Einbindung neuer Teammitglieder bis hin zur Prozessverbesserung und vielem anderen mehr. Lean-Entwicklungsteams können den Respekt für Menschen fördern, indem sie:
- Proaktiv und effektiv kommunizieren
- Konstruktive Konflikte fördern
- Arbeitsbezogene Probleme im Team aufdecken
- Sich gegenseitig unterstützen, ihr Bestes zu geben
Optimieren Sie das Ganze
Suboptimierung ist in der Softwareentwicklung ein ernsthaftes Problem und oft auch eine sich selbst erfüllende Prophezeiung. In ihrem Buch beschreiben Mary und Tom Poppendieck zwei Teufelskreise, in die Lean-Entwicklungsteams häufig geraten.
Der erste ist die Freigabe von schlampig geschriebenem Code um der Geschwindigkeit willen. Wenn Entwickler sich gedrängt fühlen, um jeden Preis liefern zu müssen, geben sie Code frei, der die Qualitätsanforderungen möglicherweise nicht erfüllt. Dies erhöht die Komplexität der Codebasis, was wiederum zu mehr Mängeln führt. Mehr Mängel haben zusätzliche Nacharbeit zur Folge, was Entwickler zwingt, schneller zu liefern ... Auf diese Weise entsteht ein Teufelskreis.
Der zweite Teufelskreis findet sich im Bereich der Testungen. Wenn Tester überlastet sind, kommt es zu einer langen Unterbrechung zwischen dem Moment, in dem die Entwickler den Code schreiben, und dem, an dem die Tester in der Lage sind, ihr Feedback abzugeben. Das bedeutet, dass die Entwickler weiterhin Code schreiben, der möglicherweise mängelbehaftet ist, was zu weiteren Fehlern führt, was wiederum zusätzliche Tests erfordert.
Als Gegenmittel zur Suboptimierung ist die Optimierung des Ganzen ein Lean-Entwicklungsprinzip, das Lean-Unternehmen ermutigt, diese Art von Teufelskreisen zu durchbrechen, indem sie mit einem besseren Verständnis hinsichtlich der bereitstehenden Kapazität und der nachgelagerten Auswirkungen der Arbeit operieren.
Dieses Prinzip basiert auf der Vorstellung, dass jedes Unternehmen einen Value Stream darstellt – die Sequenz der Aktivitäten, die erforderlich sind, um ein Produkt oder einen Service für Kunden zu entwickeln, zu produzieren und bereitzustellen. Wenn unser Ziel darin besteht, unseren Kunden so schnell wie möglich so viel Nutzen wie möglich zu liefern, dann müssen wir unsere Value Streams optimieren, um genau das zu erreichen. Um zu verstehen, wie wir unsere Value Streams optimieren können, müssen wir sie zunächst korrekt identifizieren.
Nachdem sie herausgefunden haben, wie der Nutzen durch die Arbeit ihrer Teams entsteht, entscheiden sich viele Unternehmen, ihre Softwareentwicklungsteams als vollständige, multidisziplinäre Produktteams zu organisieren, die an einem gemeinsamen Standort arbeiten und somit über alles verfügen, was sie benötigen, um eine Anfrage von Anfang bis Ende zu bearbeiten, ohne auf andere Teams zurückgreifen zu müssen. Dies ist ein durch Spotify bekannt gewordener Ansatz, der von vielen Lean-Unternehmen (einschließlich LeanKit) eingeführt wurde, um das Ganze zu optimieren und die Werterbringung zu beschleunigen.