Lean Software Development (LSD) – Wir lieben eine schlanke Softwareentwicklung. Diese Vorgehensweise besteht aus sieben Grundprinzipien, die uns bei einer zeit- und kostenoptimerten Umsetzung wesentlich unterstützen. Lean Software Development besteht aus den folgenden sieben Grundprinzipien:
1. Müll beseitigen
Die Lean-Philosophie betrachtet alles, was dem Kunden keinen Mehrwert bringt, als Müll. Zu diesen Abfällen gehören zum Beispiel:
- Unnötige oder fehlerhafte Features
- Unnötig komplizierte Elemente
- Kognitive Belastung
- Wartezeiten / Multitasking
- Ineffektive Kommunikation
Um Müll zu vermeiden, muss dieser erst einmal erkannt werden. Wenn eine Funktion umgangen werden könnte oder das Ergebnis ohne sie erreicht werden kann, ist diese Müll. Teilweise entstandener Code, der während des Entwicklungsprozesses verworfen wurde, ist Müll. Zusätzliche Prozesse wie Papierkram und Funktionen, die von Kunden nicht oft verwendet werden, sind Müll. Auf andere Aktivitäten, Teams und Prozesse zu warten, ist Verschwendung. Verwaltungsaufwand, der keinen echten Wert erzeugt, ist Müll.
All diesen „Müll“ versuchen wir bereits während der Anforderungsermittlung zu erkennen und mit dem Kunden zu kommunizieren. Erweisen sich anschließend während des Entwicklungsprozesses weitere Features als in der Form unbrauchbar, sind wir aufgrund unserer agilen Entwicklungsmethoden in der Lage, hierauf möglichst optimal zu reagieren.
2. Den Lernprozess verbessern und fördern
Softwareentwicklung ist ein fortlaufender Lernprozess, der beim Schreiben von Code auf Iterationen basiert. Software-Design ist ein Problemlösungsprozess, bei dem die Entwickler ihr Wissen zur Lösung der Aufgabenstellungen einsetzen. Der Wert einer Software liegt dagegen in der praktischen Brauchbarkeit und nicht an der Konformität zu den definierten Anforderungen auf dem Papier.
Anstatt mehr Aufwand in die Dokumentation oder eine detaillierte Planung zu investieren, können verschiedene Ideen ausprobiert werden, indem Code geschrieben und getestet wird. Der Prozess der Erfassung von Benutzeranforderungen könnte vereinfacht werden, indem den Endbenutzern Screendesigns präsentiert und ihre Vorschläge eingebaut werden.
Diesen Lernprozess beschleunigen wir durch kurze Iterationszyklen, die jeweils mit Refactoring und Integrationstests gekoppelt sind. Durch kurze Feedbacksitzungen mit unseren Kunden sind wir in der Lage, während der Entwicklungsphase Anpassungen der Funktionen einfließen zu lassen und zukünftige Erweiterungen bereits im Vorfeld zu berücksichtigen.
3. Entscheidungen so spät wie möglich treffen
Da viele Entscheidungen bei der Architektur einer Lösung zu Beginn noch nicht eindeutig getroffen werden können, sollten diese so weit wie möglich verzögert werden. Erst wenn sie auf der Grundlage von Fakten getroffen werden können und nicht aufgrund von unsicheren Annahmen und Vorhersagen, ist die Entscheidung etwas Wert.
Je komplexer ein System ist, desto mehr Veränderungspotential sollte darin berücksichtigt werden. Die Möglichkeit, sich Veränderungen anzupassen spart Kosten, die sehr hoch werden können, wenn sie erst nach der Veröffentlichung des Systems entdeckt werden.
Um diesen Anforderungen gerecht zu werden, setzen wir in der slim-it konsequent auf einen agilen Softwareentwicklungsansatz. Das bedeutet für uns, die Softwareentwicklung in kurze Iterationen zu unterteilen und in regelmäßigen Meetings mit den Entwicklungs-Teams die aktuellen Probleme, Herausforderungen und Ideen zu besprechen.
4. Baldmöglichst ausliefern
Je früher die Lösung ohne größere Mängel abgeliefert wird, desto eher kann eine Rückmeldung zu den bereits gelieferten Features erfolgen und in den nächsten Entwicklungszyklus einfließen.
Schnelligkeit an dieser Stelle verbessert die Kommunikation und stellt die Erfüllung der gewünschten Anforderungen sicher. Kunden schätzen die schnelle Lieferung eines Qualitätsprodukts.
Daher setzen wir auch auf regelmäßige Besprechungen mit dem Kunden, in denen wir mittels Screensharing den aktuellen Stand der Entwicklung demonstrieren und diesen nach Abschluss unserer internen Testphase an den Kunden ausliefern. Dadurch erhalten wir frühzeitig Rückmeldung zu den bereits gelieferten Features und können die Entwicklungsprozesse dahingehend anpassen.
5. Das Team befähigen
In vielen Unternehmen herrscht traditionell die Einstellung, dass die Firma bzw. die Vorgesetzten alle Entscheidungen treffen. Die Vorgesetzten erklären den Entwicklern, wie sie ihre eigene Arbeit erledigen müssen. Bei der „Work-Out-Technik“ werden die Rollen an dieser Stelle vertauscht – Vorgesetzte lernen den Entwicklern zuzuhören, so dass dieses Know-How in die direkte Entscheidung mit einfließt. Dies setzt bei uns voraus, dass die entsprechenden Vorgesetzten das technische Feedback beurteilen können. Das Motto lautet: „Gute Leute finden und sie ihre eigene Arbeit machen lassen“.
Eine weitere falsche Sichtweise ist die einseitige Betrachtung von Menschen als Ressourcen. Aus Sicht einer Statistik können Menschen Ressourcen sein, aber in der Softwareentwicklung und in allen Unternehmensbereichen benötigen die Mitarbeiter mehr als nur die Liste der Aufgaben und die Sicherheit, dass sie während der Umsetzung dieser nicht gestört werden. Die Mitarbeiter brauchen Motivation und einen höheren Zweck, um innerhalb einer erreichbaren Zielsetzung zu arbeiten. Entwickler sollten möglichst Zugang zum Kunden erhalten. Der Vorgesetzte sollte in schwierigen Situationen Unterstützung und Hilfe leisten, aber dem Teamgeist nicht schaden.
Als slim-it legen wir sehr großen Wert darauf, dass die Entwickler ein hohes Verständnis vom Endprodukt haben. Sie müssen verstehen, was das Problem des Kunden ist und wie wir dieses Problem lösen können.
6. Integrität
Der Kunde muss eine durchgängige Gesamterfahrung für die Lösung erhalten. Dies ist die sog. „wahrgenommene Integrität“: Wie wird die Lösung beworben, ausgeliefert, bereitgestellt, darauf zugegriffen, wie intuitiv ist die Verwendung, wie teuer sie ist und wie gut löst sie die Probleme bzw. Aufgabenstellung?
Konzeptionelle Integrität bedeutet, dass die einzelnen Komponenten des Systems als Ganzes gut funktionieren und ein Gleichgewicht zwischen Flexibilität, Wartbarkeit, Effizienz und Reaktionsfähigkeit aufweisen. Dies kann erreicht werden, indem wir die Problemstellungen verstehen und anschließend mit einer Lösung gleichzeitig und nicht schrittweise lösen.
Die benötigten Informationen dazu werden in kürzeren Sessions ausgetauscht und nicht in einem einzigen großen Termin – vorzugsweise durch persönliche Kommunikation und nicht (nur) durch schriftliche Dokumentation. Der Informationsfluss sollte in beide Richtungen konstant sein – vom Kunden bis zum Entwickler und zurück. Vermieden werden sollten lange Meetings, nach deren Ende hunderte Punkte abgearbeitet werden müssen.
Am Ende muss die Integrität durch gründliche Tests überprüft werden, um sicherzustellen, dass das System genau das tut, was unser Kunde von ihm erwartet. Automatisierte Tests werden ebenfalls als Teil des Produktionsprozesses genutzt – sie sollten jedoch nicht das Ziel sein, sondern ein Mittel zum Zweck.
7. Das Ganze im Blick behalten.
Softwaresysteme sind nicht nur die Summe ihrer einzelnen Komponenten, sondern auch das Ergebnis ihres Zusammenspiels. Softwarefehler addieren sich während des Enwicklungsprozesses oft – durch die Zerlegung von großen Paketen in kleinere Aufgaben und durch die Standardisierung verschiedener Entwicklungsstufen können die Hauptursachen für Fehler gefunden und beseitigt werden. Je größer das System ist, desto mehr Teilnehmer sind an der Entwicklung beteiligt. Je mehr Teilkomponenten von verschiedenen Teams entwickelt werden, desto wichtiger ist es gut definierte Schnittstellen zwischen den einzelnen Teilnehmern zu haben.
In einem längeren Entwicklungszeitraum ist ein stärkeres Subunternehmer-Netzwerk weitaus vorteilhafter als eine kurzfristige Gewinnoptimierung, die keine Win-Win-Beziehungen ermöglicht.
Lean Thinking muss von allen Mitgliedern eines Projekts gut verstanden werden, bevor es konkret umgesetzt wird. Nur wenn alle Lean-Prinzipien zusammen mit einem gesunden „gesunden Menschenverstand“ in Bezug auf das Arbeitsumfeld angewendet werden, ist das die Basis für den Erfolg in der Softwareentwicklung.
Phone: +49 (9201) 9174 270
Email: info@slim-it.de
Website: www.slim-it.de