Software wird heutzutage meist agil entwickelt. Als Grundlage gilt dabei das agile Manifest aus dem Jahr 2001. Dieses definiert vier Leitsätze:
- Individuen und Interaktionen sind uns wichtiger als Prozesse und Werkzeuge.
- Funktionierende Software ist uns wichtiger als eine umfassende Dokumentation.
- Zusammenarbeit mit dem Kunden ist uns wichtiger als Vertragsverhandlung.
- Reagieren auf Veränderung ist uns wichtiger als das Befolgen eines Plans.
Softwareentwickler*innen arbeiten mittlerweile seit über 20 Jahren nach diesen Prinzipien und fahren gut damit. Jedenfalls konnten sich bisher keine anderen Ideen so stark durchsetzen. Hat ein agiles Team eine gewisse Reife erlangt, so sind Arbeitsergebnisse und Aufwände hinreichend planbar. Durch das zyklische Arbeiten kann man schnell veränderte Rahmenbedingungen reagieren. Regelmäßige Retrospektiven sind ein hervorragendes Hilfsmittel, um aus Fehlern und Erfolgen der Vergangenheit zu lernen.
Durch die Priorisierung von Anforderungen soll erreicht werden, dass sich die Softwareentwicklung auf das Wesentliche konzentriert. Das passiert meist in Form von User Stories. Es liegt in den Händen der Product Owner, die verfügbaren Arbeitsstunden so geschickt zu investieren, dass sie möglichst schnell einen Mehrwert durch funktionierende Software schaffen.
Agilität alleine sorgt nicht für Software-Qualität
Leider macht das agile Manifest zu einem wichtigen Aspekt der Softwareentwicklung keinerlei Aussagen: Und das ist die Qualität der Software. Die Güte der Arbeit, die das agile Team abliefert, hat einen direkten Einfluss auf dessen mittel- und langfristigen Arbeitserfolg.
In länger laufenden Projekten kommt es zwangsläufig irgendwann zu Momenten, in denen größere Umbauten notwendig sind. Rahmenbedingungen können sich über die Zeit umfassend ändern.
- Neue Drittsysteme müssen integriert werden.
- Wichtige Fremdkomponenten und Frameworks müssen regelmäßig aktualisiert werden.
- Zwangsläufig findet über die Zeit eine Erosion der einstmals sauber entworfenen Systemarchitektur statt. Dieser muss man mit einer Überarbeitung entgegentreten.
- Wenn diese Aufgaben anstehen, kann man sich zu den Glücklichen zählen, sofern man es mit einem beherrschbaren IT-System zu tun hat. Und das hat man nur, wenn es in der Vergangenheit handwerklich sauber umgesetzt wurde.
Agilität und Software-Qualität vereinen
Aber was heißt das genau? Wann gilt eine Software als handwerklich sauber umgesetzt? Was sind die Regeln der „Software-Handwerkskunst“? Auch hier gibt es ein Manifest: Das „Manifesto for Software Craftsmanship“. Es erweitert (oder nach Meinung des Autors: komplettiert) das Agile Manifest um die Aspekte, die den technischen Erfolg der Softwareentwicklung erst möglich machen. Wie auch das agile Manifest stehen vier Leitsätze im Zentrum:
- Nicht nur funktionierende Software, sondern auch gut gefertigte Software
- Nicht nur auf Veränderung zu reagieren, sondern stets Mehrwert zu schaffen
- Nicht nur Individuen und Interaktionen, sondern auch eine Gemeinschaft aus Experten
- Nicht nur Zusammenarbeit mit dem Kunden, sondern auch produktive Partnerschaften
In der Umsetzung bedeutet dies, verbindliche Rahmenbedingungen zu schaffen, die für eine hohe Software-Qualität, stetigen Mehrwert und gemeinschaftliches Arbeiten sorgen. Unter anderem brauchen wir gut gefertigte Software, die durch Coding-Standards lesbar und verständlicher für Beteiligte geschrieben wird. Das Schreiben von Unit- und Integrationstests stellt sicher, dass der Code wirklich das leistet, was in den Anforderungen spezifiziert wurde. Automatisierte Tests stellen sicher, dass einmal umgesetzte Anforderungen auch nach großen Refactorings weiterhin eingehalten werden.
Regelmäßig stattfindende Code- oder Peer-Reviews durch das Team sichern die Qualität der Software. Weil das ganze Team für die Software verantwortlich ist (Collective Code Ownership), geht nichts in Produktion, was nicht mindestens nach dem Vier-Augen-Prinzip für gut befunden wurde.
Dies sind nur einige Punkte, deren Beachtung und Umsetzung essentiell sind, wenn man langfristig erfolgreich gute Software entwickeln will. Das Arbeiten allein nach der agilen Methode ermöglicht uns dies nicht. Aber sie ermuntert uns, uns ernsthaft mit der Frage auseinanderzusetzen, wie wir funktionierende und nachhaltige Software bauen können. Die Antwort darauf ist: mit handwerklichem Geschick und einem ausgeprägten Qualitätsanspruch der Entwickler*innen.
Mehr zum Thema? Unter den Schlagworten „Clean Code“ und „Software Craftsmanship“ ist viel gute Literatur in gedruckter Form und im Internet entstanden. Es lohnt, sich mit dieser Materie auseinanderzusetzen. Natürlich stehen auch wir von Holisticon gerne mit Rat und Tat zur Seite, passende Ansprechpartner sind auf unserer Team-Seite zu finden.
Titelbild: Peter Gombos / Unsplash