5. August 2022 von Stefan Mönk
#4 Agile Softwareentwicklung – agile Prinzipien für alle
Eine Fortsetzung des Leitfadens hin zu agilem Verhalten
Wir haben mittlerweile einige Basics gelernt. Wir wissen nun, was das agile Manifest ist, und haben eine Vorstellung davon, warum es dieses gibt, womit es sich befasst und warum es sich lohnt, dieses genauer anzuschauen.
Im letzten Blog-Beitrag habe ich euch sechs von zwölf agilen Prinzipien vorgestellt. Diese sollen uns helfen, Agilität nicht nur zu implementieren, sondern zu leben. Schauen wir uns die übrigen Prinzipien an, um ein Gesamtbild zu gewinnen.Wir folgen diesen Prinzipien ...
Dem agilen Manifest entnehmen wir folgende Prinzipien
Funktionierende Software ist das
wichtigste Fortschrittsmaß.
Niemand will Software, die nicht funktioniert. Klar. Wir investieren unsere Zeit, unseren Fleiß, unsere Arbeit in funktionierende Software. Am einfachsten können wir gemeinsam mit der Kundin oder dem Kunden feststellen, ob die Software funktional und hilfreich ist. Wir sammeln Feedback ein und nutzen dieses für uns. Das schaffen wir unter anderem durch eine Fehlerkultur, mit Hilfe derer wir aus Fehlern lernen. Durch hohe Transparenz – sowohl von Problemen als auch Erfolgen – sind wir in der Lage, unsere Arbeit zu messen und zu hinterfragen. Durch die Bereitschaft, stetig zu lernen, von- und miteinander, können wir nur gewinnen.
Agile Prozesse fördern nachhaltige Entwicklung.
Auftraggebende, Entwickelnde sowie Userinnen und User sollten ein
gleichmäßiges Tempo auf unbegrenzte Zeit halten können.
Hinter diesem Prinzip steckt, dass alle gemeinsam auf ein Ziel hinarbeiten. Von den Auftraggebenden über die Fachleute hin zu den Projekt- oder Produktverantwortlichen sowie den Entwickelnden. Sie alle sollten das Ziel kennen und verstehen. Tun sie das nicht und arbeiten intransparent und/oder mit unterschiedlichem Tempo, werden wir Inkremente verspätet oder gar nicht liefern. Wir geraten aus dem Takt, weil die linke Hand nicht weiß, was die rechte tut. Wenn jede und jeder nur auf den eigenen Bereich schaut, werden ungewollt Abhängigkeiten geschaffen. In solchen Fällen bauen wir Einzellösungen und nehmen Abstand von einer gemeinsam durchdachten Lösung.
Nur gemeinsam können wir gute Ergebnisse erzielen. Der Vorteil, jederzeit und schnell zu releasen, kann schnell verpuffen, wenn die Kundinnen und Kunden gar nicht in der Lage sind, die Software direkt zu nutzen. Die Gefahr, in eine falsche Richtung zu entwickeln, steigt. Je schneller eine Kundin oder ein Kunde Ergebnisse erwartet, desto schneller steigt der Druck im Team. Damit steigt auch die Gefahr, den Prinzipien von funktionierender Software zu widersprechen, da wir der Kundinnen und Kunden wegen schneller Kompromisse eingehen werden. Diese Kompromisse werden uns irgendwann einholen, uns Zeit und Geld kosten. Kompromisse sind grundsätzlich nichts Schlechtes. Sie passieren tagtäglich. Um eine nachhaltige Entwicklung zu garantieren, sind wir verpflichtet die Kompromisse abzuwägen und nicht einfach deswegen einzugehen, weil irgendwer zu irgendwann einen Abgabetermin vereinbart hat.
Ständiges Augenmerk auf technische Exzellenz und
gutes Design fördert Agilität.
Ein Team oder gar ein Unternehmen sollte in allererster Linie eine gemeinsame Definition von Qualität haben. Gleiches gilt für gutes Design. Warum sind gutes Design und technische Exzellenz überhaupt so wichtig? Reicht es nicht, wenn die Software einfach funktioniert?
Ein Auto, das fährt, erfüllt seinen Zweck. Fährt es mal nicht und niemand erkennt den Grund dafür, haben wir ein Problem. Jetzt muss man erstmal eine Expertin oder einen Experten finden, die oder der das Problem identifizieren und lösen kann. Und selbst wenn man sie oder ihn gefunden hat, kostet die Reparatur Zeit. Nun hat das Getriebe einige Mängel, weil während der Produktion nicht sauber gearbeitet wurde.
Damit das Fahrzeug früh ausgeliefert werden konnte, wurden Kompromisse eingegangen. Die Qualität musste leiden, in diesem Fall das Getriebe. Dem obigen Prinzip sind wir nicht mehr treu. Unsere Kundin oder unser Kunde ist unzufrieden. War es das jetzt wert?
Einfachheit – die Kunst, die Menge nicht
getaner Arbeit zu maximieren – ist essenziell.
Ein Team oder eine Organisation sollte darüber sprechen, welche Kriterien gelten müssen, damit ein Inkrement als fertig (auf Englisch: done) bezeichnet werden kann. Fertig soll ausdrücken, dass dieses Stück Software releast und an die Kundin oder den Kunden übergeben werden kann. Wenn wir wissen, was wir unter fertig verstehen, werden wir auch nur das tun, was wirklich notwendig ist, um ein Inkrement als fertig zu deklarieren. Den Rest an Arbeit sparen wir uns. Wenn jede und jeder eine andere Vorstellung von fertig hat, wird sich das in der Arbeit der einzelnen Person widerspiegeln und in der Gesamtheit bedeutet dies ein qualitativ inkonsistentes System.
Ein gemeinsames Verständnis von fertig erfordert Offenheit, Transparenz und eine Menge Kommunikation. Die Einhaltung dieser Definition während des Entwicklungsprozesses erfordert Mut.
Mut, etwas, das mir Spaß macht, nicht zu überarbeiten. Mut, etwas, das mir keinen Spaß macht, nicht weniger Aufmerksamkeit zu schenken.
Als Schlüsselwort im agilen Arbeiten steht hier die Selbstorganisation. Gebt dem Team ein Umfeld, in dem die Mitglieder arbeiten können, und stimmt mit ihnen das zu erreichende Ziel ab. Den Rest erledigt das Team. Selbstorganisiert und eigenverantwortlich. Das klingt erstmal nach der grünen Wiese und so, als könnten alle machen, was sie wollen. So ist es nicht. Es existieren Rahmenwerke (beispielsweise Scrum), die helfen sollen sich in diesem hohen Grad an Freiheit mit Hilfe von Strukturen und Prozessen zurechtzufinden.
In regelmäßigen Abständen reflektiert das Team,
wie es effektiver werden kann, und passt sein
Verhalten entsprechend an.
Wir wollen nicht nur regelmäßig funktionierende Software liefern. Wir wollen auch regelmäßig lernen. Das tun wir am besten, indem wir herausfinden, wie wir die gemachten Erfahrungen für unsere nächsten Schritte nutzen können. Nur wenn wir offen über Erfolge und Misserfolge sprechen, können wir identifizieren, was wir beibehalten wollen und wovon wir uns verabschieden sollten.
In diesem Zuge lässt sich hervorragend das Thema des nächsten Blog-Beitrages ankündigen: Empirie. Das Gewinnen von Wissen aus Erfahrungen passt hervorragend zu diesem so wichtigen agilen Prinzip.
Agile Prinzipien für alle
Wir nehmen mit, dass die zwölf Prinzipien, je bewusster wir sie uns machen, uns im täglichen Arbeiten unterstützen können agil zu handeln. Mindestens durch das Verstehen der Prinzipien können wir unsere Art, zu denken und zu arbeiten, positiv verändern. Im Kern geht es vor allem um Selbstorganisation, Qualität, Transparenz und Kontinuität.
Wann habt ihr im Team schon mal über die agilen Prinzipien gesprochen und reflektiert, wie ihr damit in der Praxis umgeht?
Weitere spannende Themen aus der adesso-Welt findet ihr in unseren bisher erschienenen Blog-Beiträgen.