Extreme Programming
Der Begriff „working software“ wurde durch die agile Methode des Extreme Programming geprägt. Dort bedeutet er, dass eine Software voll integriert, getestet, zum Kunden ausgeliefert oder in der Produktionsumgebung installiert werden kann.
Abbildung 6 Extreme Programming
Das bedeutet aber nicht, dass diese Software fehlerfrei läuft und frei von Abstürzen ist. Es bedeutet nur, dass Unit Tests gemacht und grundlegende Qualitätssicherung betrieben wurden und man sich davon überzeugt hat, dass sie grundsätzlich läuft. Ob diese „extreme“ Festlegung eine für Ihre Verhältnisse adäquate Definition von „working software“ ist, müssen Sie für sich prüfen.
Mogeln ist verlockend
Viele Scrum Teams machen zusätzlich den Fehler, bei der Bewertung ihres Sprintergebnisses zu mogeln. Beispielsweise wird halbfertige Software, die z.B. mit technischen Schulden („technical debt“) belastet ist, als „working software“ deklariert, ohne dass eine User Story zur Beseitigung der technischen Schuld mit dem Product Owner vereinbart und in den Product Backlog eingestellt wird. Das ist dann so, als hätte das Team die technische Schuld unter den Teppich gekehrt.
Abbildung 7 Technical debt
Das führt dazu, dass das Management annimmt, dass etwas abgeschlossen ist und keine späteren Investitionen mehr benötigt, was real betrachtet nicht stimmt.
Transparenz gewinnt
Die Gründe dafür, dass die Software am Ende eines Sprints nicht wirklich fertig ist, sind vielschichtig, aber letztlich doch unerheblich. Entscheidend für alle Beteiligten ist, dass das Scrum Team am Ende jedes Sprints schonungslos transparent macht, was funktioniert und was nicht. Schönreden ist zwar verlockend, aber nicht die Lösung. Das holt einen später wieder ein.
Tipps zu Working SoftwareSorgen Sie für Transparenz bei der Bereitstellung von working software.
Typisch „working“
Auf dem Bild „Working Software“ ist eine typische, als „working“ deklarierte Software abgebildet. Diese wird von allen Seiten gestützt, ist zusammengeflickt, weist Lücken oder Löcher wie ein Schweizer Käse auf und passt an den Schnittstellen kaum zusammen. Wird dies nicht transparent gemacht, so löst dies eine Kettenreaktion aus.
Push oder Pull
Wie kommt es eigentlich in agil arbeitenden Teams dazu, dass etwas fertig wird? Der wesentliche Unterschied zur gängigen Arbeitsweise ist, dass Arbeit nicht „zugewiesen“ wird (Push-Prinzip). Es gibt niemanden, der den Teammitgliedern eine Aufgabe zuteilt. Vielmehr holen sich die Teammitglieder die Aufgaben aus dem Backlog, sobald sie dafür Kapazitäten zur Verfügung haben (Pull-Prinzip). Wann eine Aufgabe zur Bearbeitung ausgewählt wird, hängt damit vom individuellen Fortschritt der Teammitglieder und vom Fortschritt des ganzen Teams ab.
Abbildung 8 Push- oder Pull-Prinzip
Unfertiges vermeiden
Aus der traditionellen Fertigungsindustrie wissen wir, dass unfertige Produkte gebundenes Kapital darstellen. Daher ist jedes Fertigungsunternehmen bestrebt, den Bestand an nicht fertiggestellten Erzeugnissen möglichst gering zu halten. Ein anderes Beispiel wäre: Es soll eine Brücke über einen Fluss gebaut werden. Ungefähr zur Hälfte der Bauzeit beschließt das Team, mit dem Bau einer zweiten Brücke zu beginnen. Das führt dazu, dass der Bau an der ersten Brücke langsamer vorangeht und an der zweiten Brücke nicht mit voller Kraft gebaut werden kann. Die in die Brücken investierte Arbeit kann nicht dazu genutzt werden, den Fluss zu überqueren. Sie können sich vorstellen, was passiert, wenn Sie den Bau einer dritten Brücke parallel beginnen.
Übertragen auf die agile Softwareentwicklung bedeutet dies, dass eine angefangene Aufgabe Kapital bindet. Solange die Aufgabe nicht fertiggestellt wurde, kann die in die Aufgabe investierte Arbeit in keinen Nutzen umgewandelt werden. Der Nutzen hat hier natürlich zwei Aspekte. Zum einen ist der Nutzen gemeint, den potentielle Kunden aus dem fertiggestellten Produkt erzielen können, und zum anderen ist natürlich der potentielle Gewinn gemeint, der mit der Vermarktung des fertigstellten Produkts erzielt werden kann. Daher sind unfertige Tasks sozusagen eine „Verschwendung“. Je länger eine Aufgabe im Zustand „unfertig“ verbleibt, umso größer wird diese „Verschwendung“. Genau das ist mit dem agilen Begriff „waste“ gemeint.
Abbildung 9 Ständig neue Brücken bauen
Agile Teams sollen daher das Prinzip verfolgen, Aufgaben eher fertigzustellen, statt immer neue Aufgabe anzufangen. Das wird mit „start finishing – stop starting“ einprägsam auf den Punkt gebracht.
Work in Progress
Im vorigen Abschnitt wurde dargestellt, dass unfertige Tasks vermieden werden sollen, da unfertige Aufgaben Kapital binden. Ein Instrument agiler Methoden zur Vermeidung von „waste“ ist daher die Begrenzung der Anzahl gleichzeitig „in Bearbeitung“ befindlicher Aufgaben. Das bezeichnen die agilen Methoden mit „Limit Work in Progress
Tipps zu Working SoftwareSchaffen Sie ein Klima, in dem man wieder stolz auf