Clean Coding Cosmos: Teil 3: Kosmische Effizienz durch Team Clean Coding
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Clean Coding Cosmos: Teil 3: Kosmische Effizienz durch Team Clean Coding www.clean-coding-cosmos.de Clean Coding Cosmos: Teil 3: Kosmische Effizienz durch Team Clean Coding Was bedeutet eigentlich clean? Unsere Antwort darauf lautet: effizient. Als clean wurde ursprünglich nur der Quellcode bezeichnet, der Begriff wird heutzutage aber viel breiter verstanden. Wir dehnen ihn auf den gesamten Entwicklerkosmos aus. Wir glauben weiter, dass ein Appell an die Professionalität bei den meisten Entwicklern nicht ausreicht, sondern dass es noch ein stärkeres Mittel gibt, um mehr Sauberkeit im Entwickler- Kosmos zu erreichen: nämlich Teamplay. Deshalb wollen wir in diesem Artikel die „Team-Clean-Coding“- Methode vorstellen und zeigen, mit welchen konkreten Maßnahmen diese Methode im Projektalltag eingeführt und so die Clean-Coding-Mentalität viel lebendiger werden kann. Professionalität ist die Fähigkeit, durch spe- ein Mensch, der verstanden habe, was ver- auf Dauer – vor allem unter Zeitdruck zielle Handlungen ein konkretes Ziel mit nünftig ist, schöpfe aus dieser rationalen – stärker wird als die persönliche Über- minimalem Aufwand zu erreichen. Professi- Einsicht die Motivation, das Vernünftige zeugung, dass Clean Coding wichtig ist. onell bedeutet also, etwas effizient d.h. clean auch wirklich zu tun (vgl. [Wik-c]). Diese n „Nein, nein, so mach ich das aber zu tun (siehe Kasten 1). Dementsprechend Philosophie hätte die Welt eigentlich ver- nicht!“ Unterschiedliche Meinungen, haben die Clean Code Developer (CCD) – bessern müssen. Tatsächlich reicht die rati- die sich nicht annähern, stellen offene eine Initiative, die 2009 von Ralf Westphal onale Einsicht nur bei starken Idealisten als oder versteckte Konflikte dar, die Wild- und Stefan Lieser gegründet wurde (vgl. alleinige Motivationsquelle aus, vernünftig wuchs und damit Ineffizienz bewirken. [CCD]) – eine Definition dieses Begriffs zu handeln. Eine zusätzliche, viel stärkere TCC hilft, die Meinungsvielfalt zusam- aufgestellt, der für effiziente Softwareent- Motivationsquelle ist eine soziale Form von menzuführen. wicklung (SE) wichtig ist: Professionalität Kontrolle. Als sozialverträglich betrachten n „Meine Meinung zählt ja sowieso = Bewusstsein + Prinzipien. Unter „Be- wir eine Kontrolle auf Augenhöhe in Form nicht!“ Die Durchsetzungsstarken im wusstsein“ verstehen die CCD die ständige der TCC-Qualitätssicherung (siehe Abbil- Team haben nicht automatisch die bes- Selbstkontrolle eines Entwicklers, das Wer- dung 1). Sie wirkt folgenden Einstellungen seren Argumente. Durch TCC haben tesystem auch unter widrigen Umständen entgegen: die Durchsetzungsschwachen ein Mit- konsequent anzuwenden. Damit appellieren tel, das ihre Position stärkt. die CCD (und wir auch) an den Berufsethos n „Aber Saubermachen kann ich das n „Ist doch egal, wie mein Code aussieht, und den Ehrgeiz von Entwicklern, ein Profi jetzt nicht mehr!“ Diese Haltung macht es interessiert sich ja doch keiner da- zu sein oder einer zu werden. Dieser Appell deutlich, dass der innere Schweinehund für!“ Gegen diese Einstellung hilft die richtet sich an die menschliche Vernunft ei- nes jeden einzelnen Entwicklers. Warum Team Clean Coding (TCC)? Der Philosoph Immanuel Kant vertrat schon vor über 200 Jahren die Meinung, Clean ist alles, was intuitiv verständlich ist: (Quellcode-)Dokumente, Daten- strukturen, Konzepte, Regeln, Verfah- ren usw. Intuitiv verständlich ist, was mit wenig Spezialwissen in kurzer Zeit richtig verstanden wird. „Wenig“ und „kurz“ ist dabei relativ zur vorliegen- den Komplexität zu sehen. Clean ist also alles, was die Softwareentwicklung be- schleunigt. Das schließt die Korrektheit (vgl. [Wes12]), die Evolvierbarkeit (vgl. [Wes13-a]) und die Produktionseffizienz (vgl. [Wes13-b]) der Software ein. Abb. 1: Das TCC-Konzept (Kasten 3) besteht aus 4 Bereichen und acht Teilbereichen. Kasten 1: IT-Definition von „clean“. Es hat das Ziel, Clean Code und Clean Architecting (Kasten 5) zu gewährleisten. 52
www.objektspektrum.de Clean Code ist ein alter Begriff, der den Blick auf den Quellcode fokussiert. Die CCD- TCC-Kontrolle. Sie ist eine stärkere Bewegung hat mit ihren Praktiken bereits deutlich gemacht, dass viel mehr als nur der Motivation als das „Zuckerbrot und Code sauber sein sollte. Um den Blick zu weiten und den ganzen Softwareentwick- Peitsche“-Prinzip (vgl. [Obe13]) durch lungsprozess in den Fokus der Effizienzsteigerungen zu bringen, sprechen wir im Clean einen Code-Watch. Coding Cosmos (CCC) vom Clean Coding. Der CCC erweitert den Professionalitätsgedanken der CCD um weitere Aspekte des Das Team Clean Coding Applikations-Lebenszyklus-Managements (siehe Abbildung 1 in [Obe13]). Diese Er- TCC ist Teil des Clean Coding Cosmos weiterung schließt sauberes Requirements-Engineering, Clean Architecting (siehe Kas- (CCC). Im CCC schließen wir uns der Phi- ten 4), verantwortungsvolles Projektmanagement (siehe Kasten 6 in [Obe14]) und ef- losophie der Clean-Code-Developer (CCD) fektive Zusammenarbeit mit dem Betrieb ein. an, gehen allerdings in einzelnen Punkten Als CCD unterscheiden wir Prinzipien, also Maßnahmen, die den Quellcode sauber noch weiter (siehe Kasten 2). halten, und Praktiken, d. h. eine bunte Sammlung von Maßnahmen, die ganz unter- Die „Ritter der Tafelrunde“ verband das schiedliche Teile des Softwareentwicklungsprozesses betreffen. Im CCC verfolgen wir gemeinsame Grundverständnis, dass sie das ganzheitliche Ziel, alle Einflussgrößen auf die Software und den Softwareentwick- erstens alle Gleiche unter Gleichen waren lungsprozess nicht nur zu nennen, sondern sie so zu strukturieren, dass alle gleichzeitig und sie sich zweitens einem gemeinsamen besser im Blick behalten werden können. Zu diesem Zweck haben wir in [Obe13] die Verhaltenskodex unterordneten. Die glei- vierdimensionale Raumzeit des Softwareentwickler-Kosmos vorgestellt. che Idee liegt dem TCC zu Grunde. Auf Im CCC betrachten wir nicht nur die schöne, saubere Seite der Softwareentwicklung, diesem Grundverständnis basiert das TCC- sondern auch die dunkle, schmutzige Seite. Das ist wichtig, um zu erkennen, in welchen Konzept, das aus folgenden vier Bereichen Bereichen des Softwareentwicklungs-Kosmos am meisten Handlungsbedarf für Effizi- besteht: enzsteigerung besteht. Zu diesem Zweck haben wir in [Obe14] den kosmologischen Schmutz beleuchtet. 1. Initialisierung Der in [Obe14] gefundene Softwareentwicklungs-Schmutz macht deutlich, dass die 2. Ausführung Kommunikation, die in allen vier Dimensionen des CCC eine Rolle spielt, im Kontext 3. Optimierung von Effizienzsteigerung vernachlässigt wurde. Der Appell der CCD an die Professio- 4. Qualitätssicherung nalität ist gut, reicht aber oft nicht aus. Eine gegenseitige Qualitätskontrolle im Team ist dagegen viel wirkungsvoller. Diese funktioniert allerdings nur mit effektiver Kom- Jeder dieser Bereiche beinhaltet Teilberei- munikation. Zu diesem Zweck gibt es im TCC zusätzliche Regeln, die das Teamplay che. Die insgesamt acht Teilbereiche des betreffen. Wie das clean aussehen kann, stellen wir in diesem Artikel vor. TCC-Konzepts lassen sich gut durch die Staatsmetapher veranschaulichen (siehe Kasten 2: Clean Code Developer (CCD) und Clean Coding Cosmos (CCC). Abbildung 1 und Kasten 3). Initialisierung 1.1 Alle Teammitglieder (TM) verpflichten sich, Regeln und Prozesse anzuerkennen und einzuhalten, die für alle gleichermaßen verbindlich sind. Diese Regeln und Prozesse können bei Bedarf jederzeit angepasst werden. 1.2 Als erstes wird eine Methode zur Entscheidungsfindung festgelegt: Wie fällt das Team verbindliche Entscheidungen? 1.3 Als nächstes werden zu folgenden grundsätzlichen Fragen verbindliche Entscheidungen getroffen: a) Dokumentation: Welche Informationen werden wie festgehalten, persistiert und für alle TMs zugänglich gemacht? b) Definition of Clean (DoC): Was bedeutet für uns „Clean Code“ und „Clean Architecting”? c) Definition of Done (DoD): Was genau muss erfüllt sein, damit eine Programmieraufgabe als „fertig“ anerkannt werden kann? d) Code Ownership: Gibt es so etwas wie persönlichen Code oder darf jedes TM jede beliebige Codestelle ändern? Anwendung 2. Alle TM wenden alle festgelegten Regeln und Prozesse bei ihrer täglichen Arbeit konsequent an. Optimierung 3.1 Die TM kommen regelmäßig zusammen und tauschen Informationen aus, ob die bisherigen Regeln und Prozesse gut funktionieren oder ob sie angepasst bzw. erweitert werden müssen. Dazu stehen Daily-Standups, Journal Coding Club und Retrospektive-Meetings zur Verfügung. Darüber hinaus können Informationen auch durch Pair-Programming und Coding Notes ausgetauscht werden. 3.2 Bei Bedarf verabschiedet das Team mit der unter „Initialisierung“, Punkt 1.3, festgelegten Methode neue Regeln oder ändert bestehende. Qualitätssicherung 4.1 Nach Abschluss einer Programmieraufgabe durch ein TM stellt ein anderes TM sicher, dass die vereinbarte DoD erfüllt ist (Vier-Augen-Review). Erst wenn für beide TM die DoD vollständig ist, gilt die Programmieraufgabe offiziell als fertig. 4.2 Das Team kann Regeln benennen, deren Verstoß als schwerwiegend deklariert wird. Ein Verstoß gegen solche Regeln darf im Konsens aller TM mit einer Verpflichtung zu einer 1-Euro-Spende verknüpft werden. Das Team bestimmt später gemeinschaft- lich die Verwendung der Spendenkasse. Kasten 3: Formelle Beschreibung des TCC (siehe auch Abbildung 1). 02/2014 53
Clean Coding Cosmos: Teil 3: Kosmische Effizienz durch Team Clean Coding Abb. 2: Thumb Voting. Alle Teammitglie- der werden um ein Handzeichen gebeten, bei dem diese drei Daumenpositionen zulässig sind. Konstitution/Basiskonsens Am Anfang steht die Einigung aller Team- mitglieder (TM) auf den kleinsten gemeinsa- men Nenner: den Basiskonsens (Punkt 1.1 in Kasten 3) – er ist das Fundament des TCC- Abb. 3: Ablauf einer Programmieraufgabe im TCC. Konzepts. Definition der Legislative/Methode n Hierarchisches Modell: Das Team über- sind (Punkt 1.3 in Kasten 3). Dies stellt zur Entscheidungsfindung trägt einem Mitglied für einen bestimm- die zuvor beschlossene Meta-Entscheidung Die (Meta-)Entscheidung, wie das Team ten Bereich die Entscheidungshoheit, auf eine erste Probe und kann bei größeren zu einer Entscheidungsfindung kommt, ist z. B. einem Mitglied mit viel Architek- Teams mehr als einen Nachmittag Aufwand für alle kommenden Entscheidungen von turerfahrung die Entscheidungshoheit bedeuten. Wir geben für die in Kasten 3 ge- grundlegender Wichtigkeit. Als Werkzeug über Architekturfragen. stellten Fragen folgende Empfehlungen: für die Entscheidungsfindung eignet sich n Mehrheitsmodell: Die Alternative mit das Thumb Voting (siehe Abbildung 2). Für der höchsten Zustimmung wird be- n Dokumentation: Alle beschlossenen die Meta-Entscheidung gibt es vier Wege: schlossen. Regeln und Prozesse sowie alle vom n Konsent: Die Alternative mit der ge- Team getroffenen architektonischen Sauberes Umsetzen einer Architekturauf- ringsten Ablehnung wird beschlossen Entscheidungen (siehe Kasten 4) sind gabe hat aus CCC-Sicht drei Aspekte: (vgl. [Wik-a]). in einem Wiki festzuhalten. Alle TM n Konsens: Eine Alternative wird nur haben Lese- und Schreibrechte. Darü- 1. Dokumentation beschlossen, wenn sie keine Ableh- ber hinaus werden ein zentraler Prob- Die Beschreibung der Architektur bein- nung erfährt (vgl. [Wik-b]). Sie muss lem-Lösung-Katalog und eine zentrale haltet alle relevanten Anforderungen, ist eventuell so geändert werden, dass es Checklistensammlung gepflegt (siehe in sich schlüssig und für alle Stakeholder keine Ablehnung mehr gibt. Bei einer Kasten 5). gut zugänglich und leicht verständlich. Konsensrunde wird jeder Teilnehmer n DoC: Für CCD-Anfänger eignen sich explizit befragt, welche Alternative ein die Regeln des roten Grades (siehe un- 2. Bewertung (gegebenenfalls persönliches) Problem ten). CCD-Fortgeschrittene können un- Die gefällten Architekturentscheidungen darstellt (vgl. [Wit11]). ter Berücksichtigung der Kritikalität die ermöglichen, dass die wichtigen Anfor- für das Projekt geeigneten CCD-Regeln derungen gut umgesetzt werden können Vorteil der ersten drei Möglichkeiten ist, festlegen (siehe Abbildung 6). und die Risiken minimiert werden. dass Entscheidungen relativ schnell gefällt n DoD: Die in Kasten 3 unter 4.1 genann- werden können. Ihr Nachteil besteht in der ten Maßnahmen verbindlich festlegen 3. Realisierung Gefahr, Teamkollegen zu zwingen, gegen (siehe Abbildung 3 in [Obe14]). Im Die beschriebene Architektur wird in ihre persönliche Überzeugung zu arbeiten. Zusammenhang mit der Testabdeckung der Implementierung umgesetzt und Das kann zu starken offenen oder versteck- empfehlen wir bei mittlerer Kritikalität lässt sich im Code klar nachvollziehen. ten Widersprüchen führen. Der Vorteil der circa 80 Prozent der Programmzeilen Um das zu erreichen, schlagen wir im vierten Möglichkeit ist genau die Vermei- (siehe Abbildung 6). Außerdem halten TCC die Verwendung des „arc42 Tem- dung solcher Widersprüche im Team. Ihr wir mindestens einen Integrationstest plates“ vor (vgl. [Hru13-a], [Zör12]). Nachteil ist jedoch eine unter Umständen für notwendig. Eine manuelle Unter- Zu diesem Template gehört eine Metho- langwierige Entscheidungsfindung. suchung muss dabei sicherstellen, dass dik, die einen gewissen Prozess nahe legt alle kritischen Pfade enthalten sind. (vgl. [Hru13-b]). Die Anwendung von Grundgesetz/projekt- n Code-Ownership: Allen gehört alles, Template und Prozess führt zu „Clean unspezifische Regeln d. h. jeder Entwickler darf jede Code- Architecting“. Letzter Schritt der Initialisierung ist das ge- stelle ändern. Das ist nicht selbstver- meinschaftliche Beantworten von Fragen, ständlich und muss klar kommuniziert Kasten 4: Clean Architecting. die grundsätzlich in jedem Projekt wichtig werden. 54
www.objektspektrum.de Don’t Repeat Mistakes pro Monat an Kommunikationsaufwand. Vieles in der Softwareentwicklung lässt sich nicht automatisieren und muss manuell Dieser Aufwand ist aber kein reiner Zu- erledigt werden. Dabei geschehen immer wieder Fehler. Damit diese Fehler nicht wie- satzaufwand für TCC, denn Kommunikati- derholt auftreten, ist es wichtig festzuhalten, wie sie vermieden werden können. Für on findet auch ohne TCC statt. Bei Teams, manuelle Arbeitsschritte eignet sich eine Checkliste, die jeden Schritt in der richtigen die von sich aus viel kommunizieren, ist der Reihenfolge benennt. Zusatzaufwand für TCC gering, die Kom- munikation erfolgt nur in strukturierterer Don’t Re-unravel Mysteries Form. Bei komplexen Systemen kommt es immer wieder vor, dass sich das System völlig uner- Parlamentsmitglieder tauschen auch au- wartet verhält. Die Ursachenfindung dauert manchmal lange und hält die Softwareent- ßerhalb der Parlamentssitzungen Infor- wicklung sehr auf. Nach Abschluss einer solchen Rätselsuche ist es deshalb wichtig, mationen aus. Für TCC-Mitglieder stehen das Problem zusammen mit seiner Lösung zu dokumentieren. Dafür eignet sich ein dazu Pair-Programming (vgl. [Wik-f]) und Problem-Lösung-Katalog. Dieser kann mit der Zeit für ein spezielles Problem (Symp- Coding-Notes zur Verfügung: tom) mehrere Lösungen beinhalten. Auf diese Weise muss ein Rätsel nur einmal gelöst werden. n Pair-Programming ist besonders effek- tiv, wenn es gezielt bei kniffligen Pro- Kasten 5: Die DoReMi- und DoReMy-Regel. blemen zum Einsatz kommt. Eine gute Lösung wird so meistens viel schneller Exekutive/Anwendung Technologien. Nutzen: Angleichung des gefunden als allein. Zugleich wird das Der Projektalltag eines Entwicklers besteht Wissensstands im Team, einheitliche Wissen über diese Lösung im Team im Wesentlichen aus der Analyse von An- Vorstellung davon, „was sauber ist und verbreitet und unerfahrene Entwickler forderungen, dem Umsetzen dieser Anfor- was nicht“, einheitliche Meinung, mit können dabei extrem gut von erfahre- derungen und der Qualitätssicherung. Bei welcher Lösungsstrategie wiederkeh- nen lernen. dieser Arbeit werden alle im Team abge- rende Probleme angegangen werden. n Coding Notes sind ein Mittel, um wert- sprochenen Regeln und Prozesse ange- n Retrospektive-Meetings: Nach dem volle Informationen zu verbreiten und wandt. Dabei gehört es zum Berufsethos, Vorbild von Scrum monatliche oder auch zu konservieren. Die einfachste diese Regeln auch gegen widrige Umstände quartalsweise zwei- bis dreistündige Form einer Coding Note ist die E-Mail wie Termindruck und den inneren Schwei- Team-Meetings. Inhalt: „Was lief gut, an den Team-Verteiler. Auf diese Weise nehund professionell zu verteidigen. was schlecht?“ sowie „Lessons Lear- können Hinweise über neue Utilities im ned“. Kosten: Circa 1,5 PT pro Mo- Code oder Links zu einer interessanten Parlament/Meinungsaustausch nat für ein fünfköpfiges Team. Nutzen: Webseite einfach mitgeteilt werden. Für eine ständige Optimierung des TCC Regelmäßige Reflexion der aktuellen Werden solche E-Mails mit einem spe- braucht das Team ein Forum zum Disku- TCC-Regeln und -Prozesse über einen ziellen Schlüsselbegriff im Betreff mar- tieren und zur Meinungsbildung. Im TCC längeren Zeitraum. kiert, kann jeder Entwickler in seinem stehen dafür drei verschiedene Formen von Postfach sehr einfach eine Wissensda- „Parlamentssitzungen“ zur Verfügung: Diese drei Team-Meetings benötigen zu- tenbank aufbauen. sammen für ein fünfköpfiges Team ca. 4 PT n Daily Standups: Nach dem Vorbild von Scrum sehr kurze Meetings, die täglich zur selben Zeit im Stehen durchgeführt werden. Jedes TM beschreibt kurz sei- ne aktuelle Tätigkeit und nennt gege- benenfalls Probleme, die es aufhalten. Kosten: Circa zwei Minuten pro Person und Tag, circa 0,5 Personentage (PT) pro Monat für ein fünfköpfiges Team. Nutzen: Aufdecken von Querverbin- dungen zwischen Programmieraufga- ben, Hilfeangebote von TM, die Mög- lichkeit zur täglichen Optimierung von Regeln und Prozessen. n Journal Coding Club: Wöchentliche oder 14-tägige Team-Meetings, die Abb. 4: Schematische Darstellung von Team-Typen ([Wiki-e]). Jeder Pfeil stellt die Fortbildungscharakter mit direktem Wirkrichtung eines Entwicklers und dessen Stärke dar. Jeder Kreis stellt ein Team dar. Projektbezug haben. Kosten: Circa 2 Die Summe der Wirkrichtungen in einem Team stellt die Team-Performance (die Effizi- PT pro Monat für ein fünfköpfiges enz des Teams) dar. Nur in echten Teams ist die Performance hoch. Arbeiten die Team- Team. Inhalt: Besprechung von Fach- mitglieder nicht gut zusammen, handelt es sich eher um eine Gruppe oder sogar um literatur, Code-Reviews, Vorstellung einen Haufen. TCC ermöglicht, aus Haufen Gruppen und aus Gruppen echte Teams zu von aktuell oder zukünftig eingesetzten machen. Dazu müssen aber auch die Rahmenbedingungen stimmen. 02/2014 55
Clean Coding Cosmos: Teil 3: Kosmische Effizienz durch Team Clean Coding n Alle im Team vereinbarten CCD-Re- geln wurden eingehalten (DoC). n Es gibt keine als unfertig markierten Codestellen mehr (siehe Kasten 6). n Der Quellcode ist leicht verständlich (dazu zählt unter anderem die Code- Dokumentation). n Die Testabdeckung ist ausreichend. Erst nachdem auch der Reviewer sein OK abgegeben hat, gilt die Programmierauf- gabe offiziell als erledigt. Bei Fehlern bzw. Mängeln, die im Nachhinein auftreten, trägt der Reviewer eine ebenso große Ver- antwortung wie der Autor des Codes. Un- terstützen lässt sich diese Vorgehensweise durch das (leider nur auf GIT und Jenkins basierende) Tool „Gerrit“ (vgl. [Ger13]). Diese Vorgehensweise hat folgende fünf Vorteile: 1) Alle Softwarefehler, die der Reviewer findet, können sofort und zeitnah vom Abb. 5: Das TCC-Startup-Kid (DoD = Definition of Done, DoC = Definition of Clean). Autor behoben werden. Ohne das Re- view fallen diese Fehler meistens erst Legislative/Weiterentwicklung neues Feature) als vollständig umgesetzt, nach der nächsten Auslieferung auf – des Regelwerks bittet es ein anderes TM seiner Wahl, ein oft erst nach Wochen und Monaten. In den frühen Phasen eines Projekts reichen Vier-Augen-Review für diese Programmier- Das macht zusätzlichen Verwaltungs- die projektunspezifischen Grundregeln zu- aufgabe durchzuführen (siehe Abbildung 3). aufwand dieses Bugs in einem Issue- nächst aus, um effektiv im Team zu arbei- Der Reviewer prüft Folgendes: Tracker und eine häufig langwierige ten. Jedes Projekt stellt jedoch eine eigene nachträgliche Analyse notwendig. kleine oder große Welt dar, die spezifische n Alle funktionalen und nicht-funktiona- 2) Trotz Einsatz von automatischen Code- Umstände und Situationen mit sich bringt. len Anforderungen wurden umgesetzt. Analysen bleibt der menschliche Code- Deshalb dauert es in der Regel nicht lange, Review das einzig sichere Mittel, die bis die Notwendigkeit nach projektspezifi- Verständlichkeit von Quellcode festzu- schen Regeln und Prozessen deutlich wird. Mit folgender Syntax können Codestel- stellen. Es gibt immer wieder Phasen im Projekt, in len, die in irgendeiner Form noch eine 3) Für Besuch macht man zu Hause in der denen die Komplexität wächst – und mit Überarbeitung benötigen, markiert wer- Regel gründlicher sauber als für sich dem Projekt entwickeln sich auch die TM den: allein. Das Gleiche gilt beim Program- weiter. Aus diesem Grund ist es wichtig, die mieren: Wer möchte schon, dass ein bestehenden Regeln und Prozesse ständig TM Schmutz im selbst geschriebenen zu reflektieren und gegebenenfalls zu opti- Code findet? mieren. Die im Abschnitt „Parlament/Mei- 4) Konstruktive Kritik ist für viele Ent- nungsaustausch“ angesprochenen Mög- Folgende Tags stehen zur Verfügung: wickler motivierender als Desinteresse lichkeiten zur Diskussion und zum Infor- an geleisteter Arbeit. mationsaustausch führen bei den TM zu n FIXME: Diese Codestelle muss noch 5) Findet ein Reviewer wenig oder keine einer Meinungsbildung, die sich dann im- bearbeitet und der Tag entfernt wer- Kritikpunkte, stellt dieses Review-Ergeb- mer wieder in der Überarbeitung der be- den, um die DoD zu erreichen. nis für den Autor ein unausgesprochenes stehenden Regeln und Prozesse oder in der n TODO: Diese Codestelle (und der Tag) Lob dar – eine wortlose Anerkennung Formulierung neuer Regeln und Prozesse dürfen für die DoD nur verbleiben, für gute Arbeit. Das Lob darf aber auch manifestiert. wenn dafür im verwendeten Issue- gerne offen ausgesprochen werden. Tracker ein Issue angelegt wurde. Der Verfassungsschutz/ n REFACTORME: Diese Tags zeigen an, Die Judikative/die 1-Euro-Regel Vier-Augen-Review dass eine Codestelle nicht optimal Fehler zu machen, ist menschlich. Fehler Das Vier-Augen-Review prüft die Einhal- gelöst wurde. Sie sind aber nicht wiederholt zu machen, reduziert aber die tung der Definition of Done (DoD), beruht DoD-relevant und sollten sparsam Effizienz der Softwareentwicklung (siehe auf dem Vier-Augen-Prinzip und stellt ein verwendet werden. Kasten 5). Immer wiederkehrende Fehler, bewährtes Review-Verfahren dar: die Stel- die andere behindern, schaffen schlechte lungnahme (vgl. [Poh10]). Betrachtet ein Kasten 6: Das TCC-Code-Tagging- Teamstimmung, die ebenfalls die Effizienz TM eine Programmieraufgabe (Bugfix oder System. reduziert. Hier ein Beispiel: Zum Feier- 56
www.objektspektrum.de abend schließt ein TM seine Tagesarbeit mit einem gutem Gefühl ab und überträgt den aktuellen Entwicklungsstand ins zent- rale Repository. Ein automatischer Prozess holt in seiner Abwesenheit die aktuellen Sourcen aus dem zentralen Repository, kompiliert sie, testet sie und baut die Soft- ware. Tritt dabei ein Fehler auf, steht ein anderes TM spätestens morgens früh vor ei- nem fremden Hindernis. Diese Feierabend- Check-In-Mentalität ist ein typisches Bei- spiel für chronische Unsitten, gegen die das Team mit der im Kasten 3 beschriebenen 1-Euro-Regel vorgehen kann. Die Erfah- rung hat gezeigt, dass diese etwas skurril wirkende Regel für unangenehme Kratzer am eigenen Entwicklerstolz und damit eine erhöhte Motivation für die Einhaltung der Abb. 6: CCC-Zuordnung von CCD-Regeln zur Kritikalität von Software. Die Farben Vereinbarungen sorgt. Nach einer längeren zeigen den jeweiligen CCD-Grad der Regeln an. Die links aufgeführten Regeln schla- Projektphase kann das Team von den er- gen wir im CCC-Kontext als CCD-Basisregeln vor. worbenen Spenden zusammen essen gehen. * Im CCC-Kontext setzen wir Test First mit TDD gleich. Diese Entwicklungstechnik birgt gewaltiges Effizienz-Potenzial, ist aber sehr aufwändig im Erlernen. Für TDD- TCC-Rahmenbedingungen Neulinge sollte das Set der CCD-Basisregeln wenigstens eine TDD-Fortbildung bein- Es gibt teils mehr, teils weniger klare Gren- halten. zen der Selbstbestimmung eines TCC-Teams. Deshalb hinkt der oben gezogene Vergleich der Vereinheitlichung und Wahrung der ter Skillsets (Teil ihres Profils) ausgewählt zu den Rittern der Tafelrunde, denn die Rit- Selbstbestimmung der einzelnen Teams. und die persönlichen Eigenschaften und ter waren kaum fremdbestimmt, viele Ent- die menschliche Kompatibilität der TM wicklerteams sind es aber maßgeblich – und Selbstorganisation des Teams unterstützen werden vernachlässigt. Das kann schnell zwar durch folgende Faktoren: Das Umfeld von TCC-Teams sollte die zu schlechter Teamstimmung, mangelnder Selbstorganisation der Teams akzeptieren Kommunikation und niedriger Performanz n Jedes Team arbeitet für einen Auftrag- und unterstützen. Beispielsweise muss die führen (siehe Abbildung 4). Daily Standups geber, der Rahmenbedingungen vor- benötigte Infrastruktur – wie ausreichende ermöglichen es, solche frühzeitig aufzude- gibt. Dazu zählen z. B. die räumliche starke Software und Hardware für CI-Ser- cken. Persönliche Konfliktsituationen kann Infrastruktur, Hardware und Software. ver und andere Qualitätssicherungsmaß- das Team in der Regel nicht selbst lösen. n Ein Entwicklungsteam ist in der Regel nahmen – bereitgestellt werden. In solchen Fällen ist ein Eingreifen des Pro- nicht für den gesamten Lebenszyklus jektleiters bzw. Scrum Masters gefragt. Ein der Software verantwortlich (vgl. auch Kommunikation im Team einplanen nützliches Forum dafür stellen auch die Re- die Dimension „Prozess“ in [Obe13]). Es muss ausreichend Zeit für die Kommu- trospektive-Meetings dar (siehe oben, Ab- Die eigentliche Entwicklung ist meis- nikation im Team eingeplant werden (siehe schnitt „Parlament/Meinungsaustausch“). tens in einen größeren ALM-Prozess oben, Abschnitt „Parlament/Meinungsaus- In einigen Fällen sollte eine neue Teamzu- eingebunden. Deshalb muss das Team tausch“), für ein fünfköpfiges Entwickler- sammenstellung in Betracht gezogen wer- auf externe Faktoren, z. B. den Betrieb, team etwa vier PT pro Monat. den, was bei (Feature-getriebenen) agilen der die Software in der Produktion Teams ohnehin gebräuchlich ist. pflegt, Rücksicht nehmen. Fortbildung der firmeneigenen n Bei großen Unternehmen ist ein ein- Mitarbeiter fördern TCC einführen zelnes Team häufig Teil einer ganzen Die Fortbildung der TM sollte unterstützt TCC ist eine Zusammenstellung von Maß- Entwicklungsabteilung. Aus Sicht der werden. In der schnelllebigen Welt der IT nahmen, die alle nicht neu, aber im Team- Leitung der Gesamtentwicklung ist es gilt: Stillstand ist Rückgang. Um von neuen play bewährt sind. Die Motivation, diese ineffizient, falls die einzelnen Teams modernen Lösungen zu profitieren, muss Maßnahmen anzuwenden, muss – wie voneinander völlig losgelöst und autark regelmäßig neues Know-how von außen auch bei anderen Entwicklungsmethoden einen Staat im Staate bilden. Um Wild- in die Firma, in die Abteilung und in die (wie Scrum, OOP oder TDD) – von den wuchs und Ineffizienz aus team- und Teams geholt werden. Außerdem erhöht Entwicklern selbst kommen. Sie lassen projektübergreifender Sicht zu vermei- die Fortbildung die Motivation vieler Ent- sich nicht verordnen. Der Versuch, neue den, muss ein TCC-Team Vorgaben wickler auch in ihrem Entwickleralltag. Arbeitsweisen in Teams einzuführen, ist der Gesamtentwicklung (z. B. bezüglich deshalb grundsätzlich ein Problem. Insbe- Qualitätssicherung) in ihrem Regel- Teamstimmung berücksichtigen sondere wenn es sich um ein noch nicht werk berücksichtigen. Die Kunst des und fördern allgemein anerkanntes Verfahren handelt, Entwicklungsleiters liegt in der Grat- Nicht selten werden neue TM, speziell sind viele Akteure sehr skeptisch. Um das wanderung zwischen teamübergreifen- externe Mitarbeiter, anhand so genann- so genannte Not-Invited-Here-Syndrom 02/2014 57
Clean Coding Cosmos: Teil 3: Kosmische Effizienz durch Team Clean Coding (vgl. [Wik-d]) zu vermeiden, muss jedes TM bewusst an den Entscheidungsprozes- Literatur & Links sen beteiligt werden. [CCD] Clean Code Developer, siehe: http://www.clean-code-developer.de/ TCC „unter der Haube“ einführen [Hru13-a] P. Hruschka, G. Starke, arc42 – Ressourcen für Software-Architekten - Template, Der TCC-Maßnahmenkatalog ist kein mo- 2013, siehe: http://www.arc42.de/template/template.html nolithischer Prozess. Die einzelnen Maß- [Hru13-b] P. Hruschka, G. Starke, arc42 – Ressourcen für Software-Architekten – Prozess, nahmen des Katalogs können bei Bedarf siehe: http://www.arc42.de/process/process.html einzeln angewandt werden. Die Motivation [Obe13] R. Oberrath, J. Vollmer, Clean Coding Cosmos: Teil 1: Kosmologie für Softwareent- dafür stammt in der Regel aus Schmerzen, wickler, in: OBJEKTspektrum 6/2013 die eine ineffiziente SE verursacht. TCC [Obe14] R. Oberrath, J. Vollmer, Clean Coding Cosmos: Teil 2: Kosmologische Suche nach kann also auch schrittweise pain driven Softwareentwicklungsschmutz, in: OBJEKTspektrum 1/2014 eingeführt werden. Dabei ist jedoch der Ba- [Poh10] K. Pohl, C. Rupp, Basiswissen Requirements Engineering (2. Auflage), dpunkt.verlag siskonsens grundsätzlich immer notwendig. 2010 [Wes12] R. Westphal, Clean Code Developer: Korrektheit als Wert, in: OBJEKTspektrum TCC im Start-Up-Kit einführen 06/2012 Um zu testen, wie sich TCC anfühlt, ohne [Wes13-a] R. Westphal, Clean Code Developer, Teil 3: Evolvierbarkeit als Wert, in: das volle Programm anzuwenden, kann ein OBJEKTspektrum 01/2013 Team einen reduzierten Maßnahmen-Kata- [Wes13-b] R. Westphal, Clean Code Developer, Teil 4: Produktionseffizienz als Wert, in: log, das TCC-Start-Up-Kit, ausprobieren OBJEKTspektrum 02/2013 (siehe Abbildung 5). Nach etwa zwei Wo- [Wik-a] Wikipedia, Soziokratie, siehe: http://de.wikipedia.org/wiki/Soziokratie chen stellt sich dann ein erstes TCC-Gefühl [Wik-b] Wikipedia, Konsens, siehe http://de.wikipedia.org/wiki/Konsens ein. [Wik-c] Wikipedia, Kritik der praktischen Vernunft, siehe: http://de.wikipedia.org/wiki/Kritik_der_praktischen_Vernunft TCC ohne CCD-Kenntnisse einführen [Wik-d] Wikipedia, Not-invited-here-Syndrom, siehe: Den Effizienzgewinn der gemeinsamen An- http://de.wikipedia.org/wiki/Not-Invented-Here-Syndrom wendung von TCC- und CCD-Regeln hal- [Wik-e] Wikipedia, Teambildung, siehe: http://de.wikipedia.org/wiki/Teambildung ten wir für enorm. [Wik-f] Wikipedia, Pairprogramming, siehe: Die CCD geben keine Prioritäten für ihre http://de.wikipedia.org/wiki/Paarprogrammierung Regeln an und die Einteilung in die farbi- [Wit11] M. Wittwer, Entscheiden im Konsens, 2011, siehe: gen Grade ist eher eine Lernhilfe. Im CCC http://www.oose.de/blogpost/entscheiden-im-konsens-teil-1-was-ist-konsens/ schlagen wir vor, die Priorität der CCD- [Zör12] S. Zörner, Softwarearchitekturen dokumentieren und kommunizieren: Entwürfe, Ent- Regeln mithilfe der Kritikalität der Soft- scheidungen und Lösungen nachvollziehbar und wirkungsvoll festhalten, Hanser Verlag 2012 ware zu bewerten (siehe Abbildung 6). Vor dem Hintergrund der Kritikalität sehen wir einige einfache, leicht verständliche Basis- läutert haben. Es ist aber keine Weltformel den dortigen Akteuren gut passt. Das TCC regeln, die wirklich immer als Minimum- – eher eine Einschwenkhilfe in einen güns- besitzt einige konkrete Startregeln, jedoch Muss angewendet werden sollten. tigen Orbit, d. h. ein Wegweiser zu einem wenige allgemeingültige Regeln und lässt Teams, die planen, TCC ohne CCD-Vor- Softwareentwicklungsprozess, der zu ei- somit viele Anpassungsmöglichkeiten für kenntnisse einzusetzen, empfehlen wir nem bestimmten Stern, d. h. Projekt, und spezielle Projektsituationen offen. || wenigstens die in Abbildung 6 genannten Regeln für geringe Kritikalität zu berück- sichtigen. Die Autoren Fazit „Team Clean Coding“ ist eine Methode, um die Clean-Coding-Regeln im Entwick- lerteam lebendig werden zu lassen. Dadurch wird der Softwareentwicklungsprozess erheblich effizienter, weil die Teammitglie- der sich so gegenseitig motivieren, vonein- ander lernen und an einem Strang ziehen. || Dr. Reik Oberrath || Jörg Vollmer Als Herzstück des Softwareentwicklungs- (R.Oberrath@iks-gmbh.com) (info@informatikbuero.com) prozesses wirkt das TCC in alle Dimen- ist als IT-Berater bei der iks Gesellschaft für ist freiberuflicher IT-Berater und verfügt über sionen des Entwicklerkosmos hinein, die Informations- und Kommunikationssysteme tätig. langjährige Erfahrung als Entwickler, Soft- wir in Teil 1 dieses Artikels (vgl. [Obe13]) Er beschäftigt sich seit vielen Jahren mit der warearchitekt und Trainer im Java-Umfeld, Entwicklung von individuellen Geschäftsanwen- speziell Java EE und Spring. Seine Leidenschaft vorgestellt haben. Und es wirkt gegen alle dungen und mit der Architektur komponentenba- gehört dem Vermitteln von Software-Qualitäts- Formen von kosmischem Schmutz, die wir sierter Systeme. bewusstsein. in Teil 2 dieses Artikels (vgl. [Obe14]) er- 58
Sie können auch lesen