Lean Software Developement Pascal Singer
Ursprünge & Entwicklung Vorgänger Toyota Production System: Überbelastung, Inkonsistenz & Verschwendung vermeiden Lean manufacturing / schmale Produktion Anwendung auf Softwareentwicklung seit 1990er Ziele: Flow optimieren, Effizienz steigern, Verschwendung vermeiden, ständige Weiterentwicklung und Verbesserung
Lean Prinzipien
1. Eliminate Waste Verschwendung? : Kein Wert für Kunden Unnötiger Code & Funktionen Langsame interne Kommunikation Bürokratie
Learn to see waste Unvollständige Arbeit Papierarbeit & übermäßige Dokumentation Extra features Warten auf Informationen Internes Task Switching Defekte
Learn to reduce waste Management & Tracking minimieren Autoritätssystem überarbeiten Konzentration auf Sinn und Zweck Valuestream visualisieren um Ineffizienz aufzudecken
2. Amplify Learning Softwareentwicklung als Prozess des Lernens Learn first: unterschiedliche Ideen ausprobieren um Datengrundlage für das Wählen der besten Option zu schaffen Learn constantly: Minimum an Funktionalität implementieren für schnelles Feedback Häufige Feedbacksitzungen: Kunde lernt seine Bedürfnisse & Entwickler lernt sie zu erfüllen
3. Decide as late as possible Zu Beginn immer Unsicherheit Auf Fakten statt Prognosen beruhende Entscheidungen immer besser Verschiedene Optionen ausarbeiten und bereithalten Je komplexer das System, desto flexibler sollte es sein Feedback mit Kunden unterstützt Flexibilität Hohe Kosten durch späte Änderung & Fehlprognosen werden minimiert
4. Deliver as fast as possible Möglichst schnelle Lieferung von Sofwareversionen Schnelle Lieferung schnelles Feedback kürzere Iterationen schnelleres Lernen und Kommunikation im Team Aufschieben wichtiger Entscheidungen Steady Rate of Arrival: kleine Pakete an Arbeit, Prioritäten, Ausgeglichenheit Steady Rate of Service: Variabilität minimieren, kleine Pakete, Flaschenhälse verhindern, konsistentes Liefern
5. Empower the team Nomal: Manger gibt Arbeitern vor wie sie ihren Job erledigen Lean: „find good people and let them do their job“ Teamleiter hilft bei Beseitigen von Hindernissen und Fehlerfindung, aber betreibt kein Micromanagement Menschen keine Ressourcen, Unterstützung und Motivation erforderlich Zugang der Entwickler zum Kunden und Einbindung ins Treffen Entscheidungen
6. Build integrity in Perceived Integrity: Wahrnehmung des Systems aus Sicht des Kunden Conceptual Integrity: Komponenten arbeiten zusammen als reibungslose Einheit Perceived Integrity Conceputal Integrity How intuitive is the system? Does it have an effective balance between flexibility, maintainability, efficiency and responsivness? How does it keep up with changes? Can the system evolve and mature? How well does it solve problems? Does it have a consistent set of design principles? How much market share does it have? Is usability consistent? How much mind share does it have? Quelle: slideshare.net/jpvajda/lean-software-development-principles
7. See the whole System nicht Summe seiner Teile, sondern auch Produkt aus Interaktion zwischen ihnen Wurzel der Probleme behandeln nicht Symptome Klar definierte Beziehungsstruktur um reibungslose Interaktion zu garantieren Erfolg nur wenn gesamtes System „lean thinking“ versteht „Think big, act small, fail fast, learn rapidly“
Danke für eure Aufmerksamkeit
Quellen http://www.michaelnygard.com/images/blog/headlights/value_strea m_agile.png http://en.wikipedia.org/wiki/Lean_software_development#Eliminate _waste http://de.slideshare.net/jpvajda/lean-software-development- principles http://www.nt.fh- koeln.de/fachgebiete/inf/nissen/sif/Sprenk_Bericht.pdf