Blog
LEAN-CODERSWie du mit der LEAN-Methode schneller und besser Softwareprojekte umsetzt
LEAN Softwareentwicklung ist in aller Munde, verspricht sie doch massive Vorteile, hohe Effizienz und signifikante Qualitäts-Booster für Softwareprojekte. In diesem Artikel gebe ich einen Überblick über Vor- und Nachteile, die grundlegenden Prinzipien, und auch Tipps, wie du LEAN in der Praxis für deine Softwareentwicklungs-Projekte einsetzen kannst.
LEAN: Das neue Zeug?
Die Ursprünge des sogenannten Lean Management Systems reichen weit zurück zu den Anfängen des 20. Jahrhunderts, als der Unternehmer Sakichi Toyoda zusammen mit seinen Söhnen und dem Ingenieur Taiichi Ohno das Toyota Production System ins Leben rufte. Schon bald war Toyota weltweit für seine rasante Innovationskraft bekannt. Erreicht wurde diese durch starken Fokus auf die Sicht der Kund:innen, schlanke Prozesse, deren ständigen Verbesserung, und vor Allem durch die nie endende Suche nach WASTE und dessen Eliminierung.
Jetzt, ein Jahrhundert später, wurde dieses Managementsystem auf die Softwareentwicklungs-Welt umgemünzt. Und tatsächlich: Diese Prinzipien lassen sich wunderbar auch für Softwareprojekte anwenden und haben vielfach bewiesen, dass ein gekonnter Einsatz von LEAN Produktivität und Qualität so richtig boosten kann.
Möglichkeiten mit LEAN
Die Methode zielt auf folgende Vorteile ab:
Schnellere Auslieferung von Software an Kund:innen
Höhere Qualität der produzierten Software
Zeitersparnis durch Finden und Streichen unnötiger Prozess-Schritte
Reduzierte Projektkosten
Gesteigerte Motivation des gesamten Teams durch mehr Verantwortung und Entscheidungsbefugnis
Die Herausforderung bei Einführung dieser Methode ist, dass sie nur funktioniert, wenn die Mitarbeiter:innen gut geschult und erfahren mit Eliminierung von WASTE sind. Was das genau bedeutet, sehen wir uns jetzt an:
DAS WICHTIGSTE ZUERST: VALUE vs. WASTE
Um LEAN gekonnt einsetzen zu können, gilt es, ein zentrales Grundprinzip zu verstehen. Ja, es gibt wie in jeder elaborierten Methodik auch hier reichlich Theorie und Auflistungen - und sie sind alle sinnvoll. Wir werden auch noch näher auf diese eingehen. Aber zoomen wir nochmal kurz raus und werfen den Blick aufs große Ganze - auf das eine grundlegende Prinzip, von dem aus alles folgt:
Regel #1: Wenn du arbeitest, verwandelst du Zeit in VALUE und WASTE.
VALUE ist alles, was unseren Endkund:innen nachweislich etwas wert ist. Etwas, das nützlich und brauchbar ist. Etwas, wofür die Kund:innen bereit sind, uns zu bezahlen! WASTE ist alles andere. Bei jedem einzelnen Meeting müssen wir uns fragen: "Ist das Meeting so wichtig, dass unsere Kund:innen wirklich bereit sind, dafür zu bezahlen? Geld auszugeben?"
Es ist wichtig zu akzeptieren, dass es immer WASTE geben wird. Sobald du arbeitest, produzierst du einen Teil VALUE und einen Teil WASTE.
Der intuitive Gedanke ist nun wahrscheinlich: "Ich muss versuchen, mehr VALUE zu generieren". Ein guter Ansatz - aber es ist nicht der LEAN-Ansatz. Denn LEAN heißt, WASTE so weit es geht zu erkennen und zu eliminieren (das Prinzip heißt im Englischen "Eliminate Waste", daher verwende ich das Wort auch auf Deutsch ...).
Regel #2: Wenn du bei gleichem Output weniger WASTE produzierst, produzierst du automatisch mehr VALUE
VALUE und WASTE werden sozusagen als kommunizierende Gefäße betrachtet. Die Menge an Output bleibt gleich, aber die Verteilung ändert sich. Je weniger Zeit du damit verschwendest, Dinge zu tun, die als Ballast gelten, desto mehr von deiner Zeit fließt in die Erzeugung von etwas wirklich Wertvollem, von VALUE.
Wie erkenne ich, ob etwas VALUE oder WASTE ist?
Es gilt nun also, alles zu hinterfragen und zu analysieren, was du mit meiner Zeit so anstellst. Das können Prozess-Schritte oder ganze Prozesse sein. Das können Meetings, Dokumente, Dokumentationen, Softwareartefakte/Sourcecodes sein, Arbeitsabläufe, die Wahl deiner Kommunikationsmittel, und letztendlich auch Blogartikel.
Ist dieser Blogartikel VALUE oder WASTE für unsere Kund:innen? Um ganz einfach festzustellen, ob etwas VALUE ist, oder WASTE, kannst du dir 3 einfache Fragen stellen:
Ist es wichtig für unsere Kund:innen?
Ein Sprint-Review-Meeting ist unseren Kund:innen vermutlich wichtig, denn so können wir schnell Feedback für unser Softwareprojekt erhalten und einarbeiten. Ein Meeting darüber, welche Kaffeesorte wir am liebsten trinken, wird von der Wichtigkeit her vermutlich weniger hoch eingeschätzt werden.Hat es positive Auswirkungen auf eines unserer Produkte oder Dienstleistungen?
Was auch immer wir machen - wenn es keine (direkte oder indirekte) Auswirkung auf unser Angebot hat, hat es auch keine Auswirkung auf die Kund:innen und ist somit nicht als VALUE zu betrachten.Ist es korrekt / fehlerfrei?
Wenn wir Software ausliefern, von der wir wissen oder davon ausgehen, dass sie Fehler in kritischen Bereichen beinhaltet, ist das ein klassischer WASTE, der enorm viel Zeit und nerven frisst. Zum Vergleich: Ein Airbag der sich bei einem Unfall nicht öffnet, liefert keinen Wert, auch wenn er noch so gut designed wurde.
Wie steht es nun um diesen Blogartikel?
Ist dieser Blogartikel wichtig für unsere Kund:innen?
Neue Mitarbeiter:innen von LEAN-Coders sind vielleicht noch nicht so fit in der LEAN-Methodik wie unsere erfahrenen Kolleg:innen. Dieser Blogartikel hilft ihnen dabei, sich diese Kenntnisse schneller anzueignen. Außerdem ziehen wir damit Bewerber:innen an, die sich für dieses Thema ebenfalls interessieren. Davon profitieren unsere Kund:innen, denn sie fordern nichts Geringeres als die höchste Qualität in Softwareentwicklungs-Projekten.Hat dieser Blogartikel Auswirkungen auf eines unserer Produkte oder Dienstleistungen?
Ja, denn je schneller neue Mitarbeiter:innen die LEAN-Methode in der Praxis einsetzen können, desto schneller können wir als Firma eine noch größere Anzahl von Softwareprojekten erfolgreich und hochqualitativ stemmen.Ist der Blogartikel korrekt / fehlerfrei?
100% Fehlerfreiheit wird es wohl nie geben - weder bei Blogartikeln noch bei Software (siehe dazu auch Die 5 größten Fehler, die wir 2021 begangen haben). Die Grundlage dieses Artikels bilden allerdings Praxiswissen, Recherche, und Lernmaterialien zu LEAN und ich getraue mich zu sagen, dass er korrekt genug ist, um einen großen Mehrwert zu liefern :-)
Nach diesem Schema kannst du jetzt bereits loslegen. Als nächstes gibt's Infos, wie du in der Praxis WASTE erkennen und reduzieren kannst. Überleg dir doch mal, ob du denkst, dass das Weiterlesen dieses Artikels einen direkten oder indirekten Einfluss auf deine Kund:innen und deine Produkte/Services haben wird? Wenn ja, lies weiter!
Welche WASTE-Typen gibt es?
Bei der Erkennung von WASTE hilft es, die gängigsten WASTE-Typen für Softwareprojekte zu kennen. Hierzu wird es einen Folge-Blogartikel geben, doch hier mal ein kurzer Überblick über die 7 größten Waste-Typen:
Bürokratie (Management Activities): Übermäßige Management-Aktivitäten verlangsamen die Leistungserbringung. (Ich denke, darüber sind wir uns alle einig ...)
Zum aktuellen Zeitpunkt unnötige Features (Extra features): Verlängert die Zeit bis zum Release / Auslieferung an den Kunden. Dies hat zur Folge, dass Feedback später eintrifft, man später auf Probleme reagieren kann, etc.
"Multitasking" (Task switching): Das Hin- und Herwechseln zwischen Tasks erzeugt Overhead und Trägheit und reduziert im Endeffekt die Produktivität
Verzögerungen (Waiting): Sind oft "WASTE-Smells" und verlängern die Zeit bis zur Auslieferung des Produkts an Endkund:innen
Ineffiziente Komunikation/Dokumentation (Handoffs): Verlangsamt den Projektfortschritt
Bugs, Qualitätsprobleme (Defects): Führen zur Auslieferung mangelhafter Produkte
Unfertige Arbeit (Partially done work): Erhöht die Komplexität des Gesamtsystems, ohne Mehrwert zu liefern. Idealerweise arbeitet man Projekte sequenziell ab
Wenn du tiefer in die WASTE-Erkennung und Gegenmaßnahmen hierzu eintauchen willst, sieh dir auch gerne folgenden Artikel an: WASTE-Alarm! 3 unverzichtbare Maßnahmen gegen Bugs in Softwareprojekten
Die 7 Prinzipien der LEAN-Softwareentwicklung
Laut der LEAN-Methode gilt es, folgende 7 Prinzipien einzuhalten bzw. im Auge zu behalten und zu verbessern, um einen möglichst effizienten Projektfortschritt sicherzustellen. In Kombination mit den vorhin bespochenen WASTE-Typen können wir nun ein größeres Bild erkennen: Die WASTES verhindern eine gute Durchsetzung dieser Prinzipien.
WASTE eliminieren: Ganz nach dem Motto "es gibt immer noch mehr WASTE" ist dies der Kern von LEAN. Mit viel Übung und Training wirst du zu einem "WASTE detector" und kannst unnötigen Ballast aus dem Projekt rausstreichen.
Rasch lernen: Hier versteht man unter "lernen" insbesondere auch, Kund:innen und deren Prozesse, Domäne, Probleme, Struktur und Arbeitsweise zu verinnerlichen. Rasch lernen bedeutet auch, schnelle Releasezyklen oder Prototypen einzusetzen, um schnell Feedback zu erhalten, und zu "lernen", was dein Kunde oder deine Kundin wirklich benötigt.
Spät entscheiden: Jetzt eine Entscheidung zu fällen, die erst in 2 Monaten gefällt werden muss, ist WASTE. Denn erstens gibt es jetzt gerade sicher Wichtigeres zu tun, als etwas zu entscheiden, das noch gar keine Ausirkung hat. Und zweitens hast du in 2 Monaten vielleicht schon viel mehr Informationen und könntest eine wesentlich bessere Entscheidung treffen. Achte daher darauf, Entscheidungen so früh wie nötig und so spät wie möglich zu fällen.
Schnell liefern: Schnelle Release-Zyklen bringen schnell VALUE für die Kund:innen, und du erhältst im Gegenzug schnell Feedback, mit dem du das nächste Softwarepaket für das Projekt noch besser implementieren kannst. Scrum ist zB eine hervorragende Projektmanagement-Methode, die schnelle Releasezyklen unterstützt.
Verantwortung an das Team geben: Power to the People! Setze auf die Kompetenz deines Teams. Damit fallen unnötige Entscheidungszyklen und Kommunikationswege und letztendlich auch Potenzial für Missverständnisse weg. Die Entscheidungen, die das Team aufgrund seines Skillsets selber treffen kann, soll es auch selber reffen.
Integrität/Qualität forcieren: Es war noch nie so wichtig, aber auch noch nie so leicht, komplexe Softwaresysteme "defensiv" und gut durchdacht und strukturiert zu implementieren. Eine wohlüberlegte System- und Softwarearchitektur, Einsatz von Designpatterns, Linting, Continuous Integration, Automated Tests, etc. sind gute konkrete Mittel, um die Integrität der Software hochzuhalten.
Das große Ganze optimieren: Ein Projekt ist nur erfolgreich, wenn alle Projektteile funktionieren. Die eigene Software muss sich genauso reibungslos in das Gesamtsystem einfügen wie ein 3rd-Party-Tool oder die Schnittstelle zum internen IT-System. Eine weitere interessante Dimension ist die zeitliche. Es wäre WASTE, jetzt schon vorhersehen zu wollen, welche Features in 2 Jahren gewünscht werden könnten. Aber gut gesicherte Informationen, die jetzt schon zur Verfügung stehen, können natürlich in die Architekturüberlegungen, etc. miteinfließen.
Auch zu diesen Prinzipien werde ich in nächster Zeit einen separaten Artikel verfassen, da ein genaueres Eingehen an dieser Stelle den Rahmen sprengen würde.
7 Tipps für die Praxis
Zum Abschluss möchte ich dir noch ein paar Tipps geben, die sich bei der Implementierung von LEAN in der Praxis bewährt haben:
Better Done Than Perfect
Früh 50% VALUE zu liefern ist besser als spät 100% VALUE zu liefern. Kurze Releasezyklen und gezieltes Vermeiden von Overengineering ermöglichen dies. Stelle dir die Frage: Welche Features benötigt die Software unbedingt, um mit einer ersten Version live gehen zu können?Fail Fast, Learn Rapidly: Scheue dich nicht davor, schwierige Brocken in deinem Projekt früh anzugeh'n, und lerne dafür schnell aus Fehlern, die du dabei machst.
Think Big, Act Small: Denke visionär, als wärst du der Platzhirsch am Markt, aber arbeite (fleißig) als wäre es deine erste Arbeitswoche als Einzelunternehmer:in.
Agile Softwareentwicklung: Benutze wenn möglich Scrum, Kanban oder eine andere agile Software-Entwicklungsmethode. Sie bieten viele Vorteile, die gut mit LEAN zusammenpassen.
Volle Transparenz: Gestalte Prozesse, Zugriffe, Dokumentationen, Kommunikation so transparent wie möglich, um WASTE schneller finden und eliminieren zu können, und um das Prinzip "rasch Lernen" zu unterstützen.
Retrospectives: Halte regelmäßige Retrospective-Meetings in denen evaluiert wird, was bisher im Projekt gut oder schlecht gelaufen ist. Retrospectives sind starke WASTE-Identifizierungs-Tools.
Task Based Working (PULL statt PUSH - Prinzip): Wer Taskbasiert arbeitet (zB mit einem Kanban/Scrum Board oder einer Task-Liste) reduziert Kommunikationsoverhead und Wartezeiten. Wenn du ein Arbeitspaket an jemanden übergeben musst, kommuniziere zB nicht sofort und direkt, sondern erstelle einen Task oder ein Ticket. Die Zielperson wird sich das Arbeitspaket nehmen (pullen) wenn sie die Kapazitäten dazu hat.
Conclusio
LEAN steckt schon im Namen von LEAN-Coders. Wir stehen für "Create Value Without Waste", und nach Lesen dieses Artikels weißt du nun auch sehr gut, was das in der Praxis bedeutet. Wir arbeiten ständig daran, unsere "WASTE-Detektoren" zu schärfen und zu trainieren.
Mit LEAN kannst du deine Performance in Softwareprojekten optimieren, die Qualität erhöhen, und sogar schneller ausliefern.
Wenn dich eine Zusammenarbeit oder eine Anstellung mit uns als LEAN-Softwareentwickler:innen interessiert, kontaktiere uns gerne hier auf der Website, oder über Social Media.
Get inTouch
- Adresse:
- Hainburger Straße 33, 1030 Wien
- E-Mail:
- [email protected]
- Tel.:
- +43 1 890 73 94