Auf den Clean Code Days 2019 diskutierten Praktiker/-innen die Zukunftsthemen erfolgreicher Softwareentwicklung. Unser viadee Clean Code Team war mittendrin und hat die wichtigsten Erkenntnisse und Themen für Sie zusammengefasst.
Die 5 Key-Takeaways für Sie zum Mitnehmen:
Agile TESTING
Die agile Transformation hat mittlerweile die meisten Unternehmen zumindest im Ansatz erfasst und ist somit auch festes Thema der Clean Code Days: Die Fragen, welche Auswirkungen agiles Arbeiten in selbstorganisierten Teams auf die Softwareentwicklung hat, wurden in vielen Sessions und Erfahrungsberichten adressiert und lebhaft diskutiert: Jan Hegewald zeigte in seiner Keynote auf, welche Herausforderung es auch für ein junges Unternehmen wie Zalando bedeutet, die eigene IT in großem Stil und in einem hochdynamischen Umfeld agil zu organisieren. In einem stetigen Releasestrom gilt dabei umso mehr, dass sich Qualität nicht am "Ende" hinzufügen lässt, sondern elementarer Teil der Entwicklung sein muss. In Konsequenz bedeutet dies u.a., dass es keine speziellen (explorativen) Test-Teams mehr gibt und aus der Testpyramide ein Haus wird. Den konstanten Veränderungen kann mit der Strategie "detect and react" unter Umständen besser Rechnung getragen werden, als mit dem traditionellen Ansatz, Fehler durch vorgelagerte Analysen grundlegend zu verhindern. Hier geht steht das Monitoring über der Prävention.
"In einem agilen Vorgehen kann man keine nachgelagerten Testphasen haben, davon bin ich überzeugt." (Jan Hegewald)
Von der Herausforderung, eine agile Transformation in der IT in Gang zu bringen, berichtete Ulf Richter von der BMW Group IT. Er zeigte anhand eines Schulungskonzeptes auf, wie Gamification helfen kann, spielerisch Konzepte zu vermitteln und zu verankern: Über die gemeinsame Montage und den gemeinsamen Test eines komplexen Lego-Motorrades lernten jeweils 2 parallel arbeitende und kooperierende Teams, wie agile Methoden funktionieren können und welche Umstellung das für sie bedeuten kann. Heraus kamen nicht nur allerhand spannende "Lifehacks" sondern auch viele Lerneffekte. Ein wichtiger erster Schritt in einem großen Veränderungsprozess.
"Veränderungen benötigen Zeit. Auch die agile Transformation." (Ulf Richter)
Agile GAMES
Ganz praktisch konnten sich die Konferenzteilnehmer/-innen dann im Agile Games Room einen Eindruck davon machen, wie agile Methoden und Clean Code Prinzipien spielerisch vermittelt und verinnerlicht werden können. Gespielt wurden u.a. das Agile Jenga Testing Game, die Marshmellow Challenge und Silent Post. Natürlich durfte auch eine Lego-Challenge nicht fehlen. Nach mehr als 3 Stunden mit vielen kreativen, motivierten und am Ende auch begeisterten Teilnehmer/-innen waren unsere Kolleg/-innen Claudia Simsek-Graf und Björn Meschede am späten Abend erschöpft, aber glücklich. "Geht's raus und spielt's" ist ein Konzept, dass nicht nur im Fußball Erfolg verspricht. Wer neugierig ist oder sich überzeugen lassen will, ist in unseren Seminaren gerne willkommen.
Einen Vorgeschmack gibt es hier: Die Anleitungen zu unseren Agile Games zum Download.
Code Reviews und Feedback
Dass Kommunikation eine grundlegende Zutat funktionierender Teams ist und Code Reviews einen wichtigen Beitrag zur Steigerung der Codequalität leisten können, sind keine neuen Erkenntnisse. Die konkrete Umsetzung in der Praxis gestaltet sich aber meistens deutlich schwieriger als gedacht. Unsere Kollegen Joris Wachter und Tobias Voß zeigten in ihrer Session insgesamt 4 Antipatterns in Code Reviews auf, die ihnen in der Praxis besonders häufig unterkommen. Ihre "erschreckend realistischen" Darstellungen brachten das Publikum nicht nur zum Lachen, sondern lieferten den Anstoß für eine differenzierte Analyse von Strukturen, Dynamiken und Effekten, die Reviews scheitern lassen. Anhand des Johari-Fensters und ihrer eigenen Erfahrungen zeigten die beiden schließlich Wege zu einer guten Review-Kultur auf: Dazu gehören neben dem Schaffen eines Problembewusstseins u.a. sich Zeit für Reviews zu nehmen und diese konsequent mit einzuplanen. Kopfmonopole sollten vermieden und/oder abgebaut werden, was z.B. durch Pair Programming erreicht werden kann. Zuletzt darf das Üben von konstruktivem Feedback nicht fehlen. Denn damit aus einem "Ja, aber..." ein ungleich wertvolleres "Ja, und..." wird, bedarf es auch des Trainings.
"Nehmt euch Zeit, guckt über den Tellerrand und bindet verschiedene Perspektiven ein." (Joris Wachter und Tobias Voß)
Clean Code Mindset
Wie man ein Clean Code Mindset nicht nur vermittelt, sondern dauerhaft in Teams verankert, war die Ausgangsfrage in gleich mehreren spannenden Sessions rund um die Themen Teams, Werte und Motivation. Claudia Simsek-Graf stellte mit Spiral Dynamics ein Konzept vor, um die verschiedenen Wertemodelle und Weltanschauungen, die Menschen (anteilig) bewegen und motivieren, greifbar und verständlich zu machen. Wie sich diese Werte dann äußern und welche Konsequenzen sich daraus für Kommunikation und Zusammenarbeit in einem Team ergeben, zeigte sie anhand von praktischen Beispielen - positiv wie negativ - auf. Darauf aufbauend zeigte sie gemeinsam mit dem Kollegen Christoph Meyer, wie sich dieses Wertemodell mit Clean Code Prinzipien verknüpfen lassen.
"Wenn ich rauskriege, wie mein Team oder mein Gegenüber gerade tickt, dann finde ich auch die richtigen Argumente." (Claudia Simsek-Graf)
In seiner ebenso launigen wie treffenden Session legte Stefan Priebsch von thePHPcc den Fokus auf ein Thema, das allzu oft in den Hintergrund gerät: Nämlich den Nutzen der Anwender/-innen im Blick zu behalten und somit das umzusetzen, was wirklich zählt. Dazu gehört, Software nicht nur innerhalb eines zeitlich und thematisch abgegrenzten Projektzeitraums zu betrachten sondern auch, Disruptionen/Veränderungen vorauszusehen und (unbestimmterweise) einzuplanen. Zudem sollte man sich nicht in den Wirren des "Whataboutism" verlieren, d.h. den Fokus nicht auf Sonder- und Spezialfälle legen, sondern möglichst schnell dafür sorgen, dass die Standardfälle sauber umgesetzt werden. Über weitere Komplexität kann dann im Einzelfall entschieden werden.
"Happy Path First, Edge Case Second." (Stefan Priebsch)
Den Abschluss zu diesem Themenkomplex machten dann Johannes Dienst von der DBSystel und unser Kollege Christoph Meyer in ihrer Keynote am zweiten Konferenztag: Sie zeigten auf, welche Unterschiede zwischen einem "echten" Team und einer Arbeitsgemeinschaft bestehen und welche Konsequenzen dies auf die Zusammenarbeit haben kann. Johannes Dienst stellte im "Pride"-Teil der Keynote das Konzept von "Psychological Safety" vor und erläuterte, warum es nicht umsonst zum Faktor Nr.1 in der google re:work-Studie über erfolgreiche Teams wurde. Unser Kollege Christoph Meyer befasste sich unter dem Titel "Prejudice" damit, welchen Einfluss das Menschenbild einer Organisation auf die Arbeitsweise haben kann, welche Motivationstheorien diesen zu Grunde liegen und welche Organisationsformen sich zukünftig entwickeln könnten - und sollten. Am Ende fassten sie beide Aspekte in einer möglichen Formel für erfolgreiche Teams zusammen:
"Psychological Safety + Teamvision + Teammission = erfolgreiche Teams" (Christoph Meyer und Johannes Dienst)
Code Analysen und Machine Learning
Natürlich sind auch klassische Clean Code Themen weiterhin relevant und wurden teils lebhaft diskutiert. Die Statische Code Analyse erfuhr dieses Jahr ein Update: Herbert Dowali von embarc fasste in seiner Session einige Best Practices sehr treffend zusammen und zeigte auf, wie diese in Zukunft weiter entwickelt werden könnten. So hat er angeregt, die LCOM4-Metrik auf Methoden auszuweiten. Unter organisatorischen Gesichtpunkten hat er den Einsatz von Gamification für die Motivation von Teams empfholen, z.B. mit Tools wie SonarQuest.
Diese Anregung griffen unsere Kollegen Björn Meschede und Hauke Husstedt im Anschluss auf. Sie stellten vor, wie man Wartung mit Hilfe der "Fixing The Water Leak"-Strategie und dem Einsatz von Machine Learning Algorithmen effizient gestalten kann. Ausgehend von der komplexen Problemstellung, Software nicht nur "am Laufen zu halten", sondern "deren Nutzen zu erhalten", zeigten sie anhand des OpenSource Projektes SonarIssueScoring, wie man Wartungsbeduget dort einsetzt, wo es wirklich gebraucht wird. Nämlich primär in den Komponenten, die sich in näherer Zukunft ändern werden (Change Prediction mit h2o) und welche für das individuelle Projekt Relevanz besitzen (Issue Scoring Algorithmus). Nach einer offenen, aber immer konstruktiven Diskussion fand sich gleich im Vortrag das erste "Versuchskanichen" für einen Testlauf außerhalb der viadee.
"Wartung bedeutet, den Nutzen von Software in einer sich ändernden Welt zu erhalten. Effiziente Wartung bedeutet, an den Stellen in Software zu investieren, die wirklich relevant sind." (Björn Meschede und Hauke Husstedt)
Fazit
Wir nehmen aus zwei vollgepackten Tagen und vielen Diskussionen mit anderen engagierten Clean Coder/-innen nicht nur unsere fünf Key-Takeaways mit, sondern auch eine Menge Ideen und Motivation, die wir in unseren Projekten und Seminaren weitergeben werden. Und ganz gemäß der Clean Code Prinzipien des konstanten Reflektierens, der kontinuierlichen Iteration und der stetigen Fortbildung freuen wir uns schon auf das nächste Jahr. Treffen wir uns dort?
Alle Vortragsfolien zu unseren Vorträgen finden Sie hier zum Download.
Anleitungen zu unseren Agile Games finden Sie ebenfalls bei uns zum Herunterladen.
zurück zur Blogübersicht