Wie schreibt man guten Code, und wenn ja wieviel Austausch braucht es dazu?
Ob im Studium, im Hobbyprojekt oder im beruflichen Alltag, als Softwareentwickler:in begegnen wir täglich diesen Fragen: Wie schreibt man guten Code? Was ist eigentlich guter Code? Wann genau ist Code gut?
Viele von uns haben ein intuitives Verständnis von gutem Code. Doch diese Intuition zu verbalisieren ist gar nicht so einfach. Eine Googleanfrage zu „what is good code“ zeigt über 6 Millionen Versuche dieses Verständnis greifbar zu machen.
Auch bei isento treibt uns dieses Thema um – im Pair Programming, im Code Review und hin und wieder auch am Mittagstisch mit den Kolleg:innen. Da letzterer jedoch vor allem der Pandemie zum Opfer fiel (Home-Office grüßt!), fehlte uns hier eine wichtige Austauschquelle. Allerdings: Not macht erfinderisch, und so kam uns die Idee: Warum gründen wir nicht einen (Remote-)Lesekreis und gehen gemeinsam der Frage auf den Grund: Wann ist Code gut?
Ein Lesekreis gründet sich – remote und motiviert
Nach über einem Jahr Pandemie waren wir fest erprobt was den Entwicklungsalltag im Home-Office angeht. Dailys, Weeklys, Retros – remote alles kein Problem. Doch ein Online-Lesekreis? Wir geben zu, auch wir waren uns zu Beginn nicht sicher, wohin uns dieses Experiment führen würde. Fest verankert in unserer Vorstellung war das Bild angeregt diskutierender Menschen im Stuhlkreis.
Unsicherheit ist für uns aber kein Grund etwas nicht zu tun. Bei isento begeben wir uns auch gerne in unerprobtes Terrain. Da sich der Kontakt mit den Kolleg:innen während Remote-Phasen dann doch überwiegend auf das eigene Team konzentrierte, motivierte uns der Gedanke, nach so langer Zeit wieder den teamübergreifenden Austausch zu pflegen. So entschieden wir uns dazu, das Experiment Lesekreis einfach zu wagen. Zu verlieren hatten wir nichts, zu gewinnen umso mehr: Wir sind breit aufgestellt, von den Entry-Level-Positionen bis hin zu erprobten Lead Developern ist bei uns jeder Erfahrungsschatz vertreten. Eine perfekte Ausgangslage also, um von gegenseitigen Erfahrungen zu profitieren.
Mit Uncle Bob auf den Spuren von sauberem Code
Wer sich auf die Spuren von gutem Code begibt, kommt um diesen Klassiker nicht herum: „Clean Code: A Handbook of Agile Software Craftsmanship“ (Robert C. Martin, 2008). Von weiten Teilen der internationalen Dev Community als das Standardwerk für guten Code empfohlen, einigten wir uns schnell auf die Lektüre des Buches. Eine wiederkehrende Terminserie in unserem Remote-Tool der Wahl erstellt und dann war es offiziell: Woche um Woche würden wir nun gemeinsam ein Kapitel durcharbeiten.
Um für Abwechslung zu sorgen, durfte jeder Teilnehmende die Moderation einer Sitzung übernehmen. Dabei waren die Moderator:innen der Woche frei in ihrer Ausgestaltung – solange sie darauf achteten, eine Diskussion anzustoßen. Tatsächlich stießen sich diese meist von selbst an. Darauf sind wir besonders stolz. 😉
Von- und miteinander lernen
Auch wenn es gut tat, nach so einer langen Zeit mal wieder im größeren Kolleg:innenkreis zusammenzufinden – das wahre Herzstück unseres Lesekreises waren eindeutig die lebhaften Diskussionen.
In diesen teilten wir unsere Meinungen und Eindrücke zu den gelesenen Buchinhalten, setzten uns kritisch mit diesen auseinander und erarbeiteten gemeinsam alternative Codebeispiele. Seit der Veröffentlichung von Clean Code (2008) sind ja doch einige Jahre ins Land gezogen, in denen sich die Welt der Softwareentwicklung ebenfalls weiterdrehte. Umso wichtiger war es uns, Uncle Bobs Gedanken nicht dogmatisch zu übernehmen, sondern sie als Grundlage weiterer Überlegungen zu betrachten.
Dass Dogmatismus und “One fits all”-Ansätze in der Praxis schnell an ihre Grenzen stoßen, stellten wir eindrücklich im Erfahrungsaustausch fest. Was für das eine Team funktionieren mag, entpuppt sich für das Nächste bereits als Hindernis. Grüne Wiese oder Brownfield-Entwicklung, Leerlauf oder Crunch Time – Softwareprojekte kommen mit ihren ganz eigenen Anforderungen. Umso hilfreicher war es für uns von unseren Kolleg:innen zu lernen, mit welchen Best Practices und Konventionen sie teamintern diesen Anforderungen begegnen, um dennoch sauberen Code zu entwickeln. Über sauberen Code zu diskutieren, erweckte auch den Tatendrang in uns. Insbesondere die späteren Kapitel zum Thema Refactoring inspirierten uns dazu, selbst die Ärmel hochzukrempeln. Da wir bei isento neben Auftragssoftware ebenfalls Inhouse-Projekte entwickeln, befanden wir uns in der glücklichen Lage zwei Fliegen mit einer Klappe zu schlagen: unseren neu gewonnen Wissensschatz konnten wir an “echtem” Code anwenden und damit die Codequalität unseres Inhouse-Projektes verbessern.
Beyond Clean Code: Das haben wir gelernt
Natürlich haben alle ihre eigenen Eindrücke gesammelt und Lektionen mitgenommen. Für uns als Software Developer bei isento steht nun jedoch fest: Guter Code ist sauberer Code, und dieser entsteht iterativ. Das Buch Clean Code empfinden wir als sehr gutes Referenzwerk, raten jedoch davon ab, es unreflektiert und stur zu befolgen. Dogmatismus ist im Entwicklungsalltag fehlplatziert, wie unser Erfahrungsaustausch gezeigt hat. Denn häufig gibt es nicht nur die eine Variante von sauberem Code und nicht jeder Ratschlag ist in jeder Situation zielführend.
Einen positiven Nebeneffekt hatte unser Lesekreis dann insbesondere auch für unsere isento-Neuzugänge: Er war eine super Gelegenheit, um teamübergreifende Kontakte zu knüpfen. Ich selbst habe so auch einen Teil meines späteren Teams kennengelernt. 😀
Unser Fazit
Ein Lesekreis, noch dazu remote – das war auch für uns Neuland. Motiviert und guter Dinge begaben wir uns in dieses Experiment. Und nun, etliche Wochen später, stehen wir vor der Frage: Hat es sich gelohnt? Wir sagen: Ja, definitiv! Unser Lesekreis war ein voller Erfolg. Mit unterschiedlichen Wissensständen starteten wir, mit einem gemeinschaftlich erarbeiteten Verständnis von sauberem Code kehren wir zurück. Insbesondere der fachliche Austausch mit den Kolleg:innen und die anknüpfenden Diskussionen entpuppten sich als wertvolle Erfahrungsquellen.
So dürfte manch einem und einer sicherlich der lebhafte Austausch zum Thema „Unit Tests“ in Erinnerung bleiben. Von Uncle Bob auf 12 Seiten skizziert, diskutierten wir tatsächlich angeregt bis in die Mittagspause hinein. Genau diese offene Diskussionskultur macht unser Experiment zum Erfolg.
Unser Lesekreis ist eine wertvolle Erfahrung, die wir gerne wiederholen. Tatsächlich haben wir schon die ein oder andere Idee für das nächste Buch in großer Runde. Fun Fact: Unser Format war sogar so erfolgreich, dass unsere Ressortleiterrunde jetzt auch zusammen ein Buch liest. 😊
Carina Walker
Carina war Softwareentwicklerin bei isento