JAX Blog

“Schätzen ist wie eine Droge – lassen wir dieses dumme Spiel!”

Aug 8, 2016

Aufwandsschätzungen für Software-Projekte geraten regelmäßig aus dem Ruder. Doch warum liegen Entwickler mit ihren Einschätzungen, wie lange sie für ein bestimmtes Feature brauchen, so oft daneben? In welchem Rahmen sind solche Schätzungen überhaupt sinnvoll? W-JAX-Sprecher Matthias Bohlen gibt im Interview Hinweise, wie man sich der „Droge der Schätzung“ entziehen kann.

JAX: “Liefern, schon vor dem Schätzen” – so lautet der Titel deiner W-JAX Session zum Thema Softwareeentwicklung. Das hört sich irgendwie so an, als sollte man den Lottoschein NACH der Ziehung der Lottozahlen ausfüllen, und nicht vorher. Ist was dran, an diesem Vergleich?

Matthias Bohlen: Ein bisschen was ist dran. Ich habe den Titel so provokant gewählt, weil ich in meiner Arbeit mit Entwicklungsteams immer wieder gesehen habe, dass Detailschätzungen gemacht werden, die richtig Zeit kosten, weil eine hohe Verlässlichkeit angestrebt wird. Währenddessen hätte ein Team das ein oder andere Feature bereits liefern können – besonders bei Verwendung heutiger Technologien, Prozesse und der DevOps-Kultur. Übrigens: Mein E-Book zum selben Thema heißt genauso.

 

Wir unterschätzen jedesmal den Aufwand, etwas wirklich fertig zu machen.

JAX: Weshalb ist es denn eigentlich so schwer, Aufwandsschätzungen abzugeben.

Matthias Bohlen: Stell Dir vor, Du bist Entwickler und baust ein Feature, für das Du zwei Tage geschätzt hast. Beim ersten Mal klappt es nicht richtig. Du suchst die Fehler, merkst aber, dass der Ansatz nichts taugt und baust es mit einem besseren Ansatz noch einmal. Diesmal funktioniert es und Du hast beim zweiten Mal auch exakt zwei Tage gebraucht. Insgesamt waren es jedoch vier oder fünf.

Die Wochen vergehen. Dein Kunde fragt Dich nochmal nach einem ähnlichen Feature. Was sagst Du, wie lange es dauert? Sagst Du zwei oder fünf Tage? Meine Erfahrung ist, dass wir Menschen dazu tendieren, unsere Fehlversuche zu vergessen und nur die Nettozeit des letzten, erfolgreichen Versuchs anzusetzen. Deshalb lautet die Antwort eben meist zwei und nicht fünf. Bei Dingen, die wir wirklich zum ersten Mal programmieren, sieht es natürlich noch viel ungewisser aus.Und es gibt noch einen dritten Fall: Wir unterschätzen jedesmal den Aufwand, etwas wirklich fertig zu machen. Es gibt doch die schöne 90/90-Regel von Tom Cargill: “Die ersten 90% des Codes dauern die ersten 90% der Zeit, die letzten 10% kosten die anderen 90% der Zeit”. Das kommt, weil wir vielfach in den Teams noch eine Trennung zwischen Programmieren und Ausliefern haben und deshalb das Ausliefern aus dem Fokus verlieren.

JAX: Meist braucht der Kunde oder Manager aber dennoch irgendeinen Anhaltspunkt, wann ein bestimmtes Produkt fertig wird – oder was es denn nun kosten wird. Was sagst du dem Kunden/Manager dann in solchen Momenten?

Matthias Bohlen: Natürlich möchten alle beim Projektbeginn wissen, ob man eine Hundehütte, einen Bungalow oder ein Hotel vor sich hat. Gegen solche Schätzungen ist nichts einzuwenden. Hier kann man Grob-Schätzverfahren anwenden, die ein Ergebnis liefern, das immerhin 0,25mal bis 4 mal so groß ist wie der tatsächliche Entwicklungsaufwand. Nach ersten Prototypen wird das Verständnis des Problems besser, man macht noch eine etwas qualifiziertere Schätzung und geht dann aber sofort dazu über, aus einem festen Termin und aus festem Budget das Maximum an Features herauszuholen (agiler Festpreis), anstatt zu erwarten, dass die Schätzung auch eintrifft. Also auch hier: Keine Detailschätzungen anwenden, das ist Zeitverschwendung, die falsche Daten liefert.

JAX: Welcher Aspekt der agilen Software-Entwicklung hat dich gerade in der letzten Zeit besonders fasziniert?

Matthias Bohlen: Der Einzug von Ideen aus “Lean Startup” in den Alltag. Ein Startup ist eine temporäre Organisation, die ein erfolgreiches Businessmodell sucht. Wenn sie es gefunden hat, ist es kein Startup mehr, sondern eine Company. Eigentlich sollten wir den Gedanken von Software-“Projekten” – also von Vorhaben, die einen definierten Anfang und ein definiertes Ende haben – aufgeben und jedes einigermaßen riskante Projekt gleich wie ein Startup führen. Ganz hungrig und verrückt mit wenigen Leuten beginnen, dann die Machbarkeit und den Erfolg beweisen, erste zahlende User bekommen, und dann erst mit Hilfe eines Investors voll zuschlagen. Ganz genauso sollten wir auch normale, “langweilige” Enterprise-Software entwickeln. Was meinst Du, was das für ein Erfolg werden würde!

 

Schätzen macht aus Unwissen eine Zukunft. Diese ist wie eine Droge.

JAX: Was ist die Kernbotschaft deiner Session, die jeder Teilnehmer mit nach Hause nehmen sollte?

Matthias Bohlen: Schätzen macht aus Unwissen eine Zukunft. Diese ist wie eine Droge. Wir sind süchtig nach Zukunft und versuchen, die Gegenwart so zu verbiegen, dass sie der vorgesehenen Zukunft entspricht. Lassen wir dieses dumme Spiel und holen wir aus der Gegenwart mit guten Leuten aus Zeit und Geld das Maximum heraus. In meiner Session zeige ich Euch ganz genau den Weg zum Entzug von der “Schätzdroge”.

Über Matthias Bohlen:

Mit seinen Coachingprogrammen und Trainings hilft Matthias Bohlen Führungskräften und Teams, die in der Entwicklung von Produkten tätig sind, dabei, profitable Produkte zur Tür hinaus zu bekommen, ohne dabei den Verstand zu verlieren: Start-ups und Produktmanager erarbeiten mit Matthias, wie deren neues Produkt aussehen soll, damit es für Kunden unwiderstehlich wird. Kleine und mittlere Unternehmen wollen von ihm wissen, wie sie effizienter und zuverlässiger entwickeln können, z. B. mit Kanban. Unternehmen mit reifen Produkten nutzen Matthias’ Talent als Softwarearchitekt und Mitglied des iSAQB, um mit seiner Hilfe ihre Produkte wieder wartbar und robust zu bekommen. Alle möchten bei Matthias Soft Skills lernen wie z. B. Präsentieren, Moderieren, Designmeetings leiten, Entscheidungen herbeiführen und Konflikte bei der Arbeit ausräumen. Teammitglieder, die mit Matthias schon gearbeitet haben, nennen ihn den „Team- und Managementflüsterer“. Matthias Bohlen hat eine einzigartige Weise, komplizierte Dinge einfach zu erklären und in kleinen Schritten umsetzbar zu machen.

Alle News der Java-Welt:

Behind the Tracks

Agile, People & Culture
Teamwork & Methoden

Clouds & Kubernetes
Alles rund um Cloud

Core Java & Languages
Ausblicke & Best Practices

Data & Machine Learning
Speicherung, Processing & mehr

DevOps & CI/CD
Deployment, Docker & mehr

Microservices
Strukturen & Frameworks

Performance & Security
Sichere Webanwendungen

Serverside Java
Spring, JDK & mehr

Software-Architektur
Best Practices

Web & JavaScript
JS & Webtechnologien

Digital Transformation & Innovation
Technologien & Vorgehensweisen

Domain-driven Design
Grundlagen und Ausblick

Spring Ecosystem
Wissen in Spring-Technologien

Web-APIs
API-Technologie, Design und Management