Suche

Codequalität: "Funktioniert" ist nicht genug

Was können wir tun?

Wie aber kann man zu etwas beitragen, das man direkt weder wahrnehmen noch steuern kann? Meiner Meinung nach ist die entscheidende Frage, was ich in einer leitenden oder organisierenden Funktion tun kann, um den bewussten Umgang mit Qualität zu begünstigen. Betrachte ich die Projekte und Teams, mit denen ich in der Vergangenheit gearbeitet habe, sind letztlich immer wieder die gleichen Muster zu beobachten:

  • Es mangelt an Erfahrung mit qualitätssteigernden und -bewahrenden Entwicklungspraktiken.
  • Es existiert kein einheitliches Qualitätsverständnis.
  • Aus gefühltem Zeitdruck werden als sinnvoll wahrgenommene Praktiken nicht angewandt.
  • Das Projekt befindet sich im Zustand der oben erwähnten Überschuldung.

Den letztgenannten, in der Praxis leider häufig anzutreffenden, Aspekt möchte ich zugunsten einer ausführlicheren Betrachtung der übrigen Punkte an dieser Stelle bewusst aussparen. Mit dem Problem des, liebevoll „historisch gewachsen“ genannten, Softwaresystems setzt sich in großer Tiefe das von Michael Feathers verfasste Buch „Working Effectively with Legacy Code“ auseinander [2]. Ideen für den Umgang mit den verbleibenden Herausforderungen möchte ich in den folgenden Abschnitten vermitteln.

Software Craftsmanship

Erfreulicherweise hat sich um das Thema nachhaltiger Softwareentwicklung in den letzten Jahren eine rege Szene entwickelt. Die Software-Craftsmanship-Bewegung beschäftigt sich mit dem Programmieren als ein erlernbares Handwerk. Ihre Thesen sind an das agile Manifest [3] angelehnt und erweitern dieses (Kasten: „Modernes Programmierhandwerk“).

Modernes Programmierhandwerk

Unter der Überschrift „Die Latte höher legen“ hat die Software-Craftsmanship-Bewegung [4] sich das Praktizieren und Weitergeben professioneller Softwareentwicklung auf die Fahne geschrieben und hebt dabei vier Aspekte hervor:

  • Gute handwerkliche Arbeit
  • Stetige Produktion von Geschäftswert
  • Eine Gemeinschaft von Fachleuten
  • Produktive Partnerschaften mit dem Kunden

Vorreiter dieser Bewegung sind Meinungsführer, wie Robert C. Martin (unter anderem Autor von „Clean Code“ [5]) und Corey Haines (Organisator des Global Day of Coderetreat 2011 [6]). Der von der Bewegung betriebenen Auseinandersetzung mit modernem Programmierhandwerk entspringen neben Handlungsprinzipien und -praktiken auch neue Lern- und Lehransätze.

Ermangelt es den Mitarbeitern an dem, für einen konstruktiven Umgang mit interner Qualität notwendigen, Handwerkszeug, so kann man hier auf einen großen Fundus von Literatur, Schulungen und Maßnahmen zurückgreifen. Exemplarisch seien Aktivitäten erwähnt, mit denen ich in den vergangenen Jahren gute Erfahrungen gemacht habe: In Leserunden, in denen ein Buch gemeinsam in Abschnitten gelesen und diskutiert wird, lässt sich neben theoretischen Grundlagen auch ein gemeinsames Verständnis von Softwarequalität schaffen. Durch variable Dauer und Frequenz der Veranstaltungen eignet sich diese Lernmethode besonders gut für Mitarbeiter, die stark durch Projekte ausgelastet sind. Eine ausgezeichnete Zusammenstellung geeigneter Bücher kann man auf Stack Overflow finden [7]. Diese zwei Titel empfehle ich gerne:

  • „Clean Code: A Handbook of Agile Software Craftsmanship“ von Robert C. Martin
  • „Refactoring: Improving the Design of Existing Code“ von Martin Fowler

Eine auf den ersten Blick ungewöhnliche Lernmethode ist das Lehren. Wer schon einmal eine Schulung vorbereitet oder einen Fachartikel geschrieben hat, weiß jedoch, wie viel man dabei selbst dann noch über ein Thema lernen kann, wenn man sich bereits für einen Experten hält. Lehren kann in den unterschiedlichsten Formen stattfinden. Sehr gut funktionieren beispielsweise „Tech Talks“ (Frontalvorträge zu einem speziellen Thema, etwa im Rahmen oder angrenzend an ein Abteilungstreffen), Vorbereitung oder Aktualisierung internen Schulungsmaterials und Mentorentätigkeiten (Betreuung neuer Mitarbeiter, Studenten oder Auszubildender).

Ein in der Software-Craftsmanship-Szene immer wieder betonter Aspekt ist das bewusste Üben der Programmiertätigkeit. Ein professioneller Pianist spielt schließlich nicht nur auf der Konzertbühne Klavier, sondern verwendet einen (in diesem Fall vermutlich sehr großen) Teil seiner Zeit auf das Üben seines Handwerks. Speziell für die Tätigkeit des Programmierens hat sich das Format des Coding Dojos [8] durchgesetzt. In diesen Treffen werden gemeinsam spezielle, Code Kata [9] genannte, Programmierübungen durchgeführt. Wie auch die Leserunden sind Coding Dojos ein flexibles und abwechslungsreiches Format, das im Rahmen so genannter Code Retreats und auf Konferenzen mittlerweile auch öffentlich und zum Teil kostenfrei angeboten wird.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.