Clean Code Days 2017: Erfahrungsbericht

Posted by in clean code, Konferenz

Dieses Jahr war ich zwei Tage auf den Clean Code Days. Leider habe ich am ersten Konferenztag die Keynote von Elmar Jürgens verpasst. Im Gegenzug dafür konnte ich „ausschlafen“ 😉 . Insgesamt scheint die Konferenz, die parallel zur Embedded Testing stattfindet, in der Teilnehmerzahl leicht zu wachsen. Immerhin waren deutlich mehr Aussteller da und es gab mehr Keynotes.

Für einen eingefleischten Clean Coder sind ein großer Teil der Vorträge mit vielen bekannten Grundlagen ausgestattet. Jedoch konnte ich von den fortgeschrittenen Themen interessante Ideen mitnehmen. Zu begrüßen waren die Vorträge über Clean Code in der funktionalen Programmierung. Aber auch der Fokus auf die eigentlich nötige Entwicklerethik und Unternehmenskultur wurde in zwei Talks stimmig herausgearbeitet.

Um Roland Golla Never Code Alone frei zu zitieren:

Ihr müsst mit dem Code arbeiten. Also schreibt Tests, um Bugs zu vermeiden. Da braucht ihr keine Erlaubnis dafür!

Ich möchte an dieser Stelle auch den Organisatoren wieder ein großes Lob aussprechen. Der Ablauf war unglaublich reibungslos, immer ein Ansprechpartner vorhanden, das Essen superlecker und diesmal bei der Hitze alle Räume angenehm klimatisiert!

Erster Konferenztag

Der erste Vortrag für mich war „Mit Ideen der funktionalen Programmierung CleanCode erweitern“. Der Redner Remy Loy hat funktionale Konzepte wie Optionals oder die Modellierung von Problemen als Typen vorgestellt. Das Besondere daran war, dass er sie nach C# portiert hat, um sie dort für besser lesbaren Code einzusetzen.

remy_loy_ideen_funktionale_programmierung
image-763

Im Talk nach der Mittagspause „Software engineering through the eyes of a role playing gamer„ von Lutz Marquardt und Frank Blendinger haben die Redner ein fiktives und wirklich sehr gut ausgearbeitetes Rollenspiel veranstaltet. Dabei ging es um die Hauptfigur Tina, die einen neuen Job als Softwareentwicklerin antritt und mit interessanten Charakteren wie ihrem Chef Dr. Azoc von Rasse Ork oder einem dreiarmigen Testeräffchen interagiert. Zwischendurch wurden Fragen zu Clean Code und Softwarequalitätsmaßnahmen vom Publikum beantwortet, die direkten Einfluss auf den Verlauf des Vortrags hatten. Leider hat die Zeit nicht ganz gereicht, aber es war sehr unterhaltsam.

marquardt_blendinger_clean_code_roleplaying
image-764

Mathias Ahrens hat in seinem Talk „Clean Code for the Front End“ einige Techniken vorgestellt, wie Clean Code auf den drei Ebenen Setup, Architektur und Code im Front End sichergestellt werden kann. Am wichtigsten fand ich die Technik BEM (Block Element Modifier). Dabei wird für einzelne Blöcke (Komponenten) auf einer Seite das CSS/HTML abgekapselt, indem ein Namensschema für die HTML-Klassen Verwendung findet. Dadurch erhält man meiner Meinung nach gut wartbare Komponenten.

mathias_arens_clean_code_for_the_front_end
image-765

Danach hat Stefan Hock das Integration Operation Segregation Principle (IOSP) vorgestellt. Dies ist ein neues Prinzip im roten Grad der clean-code-developer.de. Es zielt darauf ab, dass der Bearbeitungsfluss innerhalb eines Programms wie ein Baum aufgebaut ist. Dabei befinden sich als Blätter immer Operationen, die tatsächliche Berechnungen ausführen. Diese dürfen keine Operationen als Kinder haben. Alle anderen Knoten sind Integratoren, die nur die Ergebnisse der Operatoren bzw. anderen Integratoren zusammenfügen. Daraus ergibt sich, dass die eigentlichen Operationen auf den untersten Ebenen zu finden sind und nicht über alle Aufrufebenen verschmiert ist.

stefan_hock_iosp
image-766

Was Clean Code mit technischer Schuld zu tun hat erklärte Michael Kaufmann auf ehrliche und anschauliche Weise in seinem Vortrag „Clean Code und technische Schuld“. Mit SonarQube und einem Beispielprojekt hat er gezeigt, wie man technische Schuld für jedermann greifbar machen kann.

michael_kaufmann_clean_code_und_technische_schuld
image-767

Abendveranstaltung: Coding Dojo

Roland Golla von der Entwicklungshilfe NRW/Never Code Alone hat in seinem Coding Dojo das Tool Codeception vorgestellt, mit dem man leicht Oberflächentests schreiben kann, die sich problemlos in eine Build-Pipeline integrieren lassen. Neben einem Wrapper um die beliebte Bibliothek Selenium, der Convenience-Methoden zur Ansteuerung des Browsers bereitstellt, kann Codeception noch mehr: Detailliertes Reporting, Screenshots und Generierung von Testskeletons, um nur ein paar zu nennen.

Roland ging in seiner charmanten Art auch witzig auf Vorschläge ein und animierte alle Teilnehmer mit spitzen Aussagen zur Teilnahme. Das Coding Dojo war für mich ein echtes Highlight der Clean Code Days!

Zweiter Konferenztag

Der erste Vortrag von Roland Golla hatte in etwa den gleichen Inhalt wie das Coding Dojo. Deswegen an dieser STelle nur meine Sketchnotes.

roland_golla_codeception_acceptance_tests
image-768

Einen wirklichen Kracher hat in meinen Augen Dr. Frank Raiser mit „Clean Property-Based Contracts“ rausgehauen. Sein Vorschlag war Property-Based-Testing (junit-quickcheck) mit Contracts zu verknüpfen. Dazu hat er für Contracts, die global gelten sollen – ich nenne sie hier Querschnittscontracts – die zu erfüllenden Properties in eine Default-Methode eines Interfaces ausgelagert. Dieses Interface enthält auch eine Fabrikmethode für Objekte, die diesen Contract einhalten. Der eigentliche Test erweitert dieses Interface und besorgt sich über die Fabrikmethode ein Objekt der zu testenden Klasse, die diese Property einhalten soll. So kann der Test sicherstellen, dass der Querschnittscontract eingehalten wird. Das Ganze wird dann in der Build-Pipeline mit jQAssistant kombiniert, das sicherstellt, dass die Querschnittscontracts auch von Tests überprüft werden: Prädikat genial!

dr_frank_raiser_clean_property_based_contracts
image-769

Claudia Simsek-Graf und Christoph Meyer haben in ihrem Talk „Erfolgsfaktor Mensch -> Wieviel Mensch steckt in Clean Code und wieviel Mensch braucht es für die Umsetzung?“ interaktiv mit dem Publikum und untereinander erörtert, was denn jetzt nun wichtiger sei für Clean Code: Der Mensch oder die Technik. Ich fühlte mich gut unterhalten, da es viele interessante Beiträge zu den einzelnen Punkten sowie Erfahrungsberichte aus dem Publikum gab.

simsek-graf_meyer_wieviel_clean_code
image-770

Der Vortrag „Combinator als funktionales Entwurfsmuster in Java 8“ von Gregor Trefs war ein weiterer Vortrag über funktionale Möglichkeiten mit Java 8. Er zeigte auf nachvollziehbare Weise, wie Default Methoden von Interfaces und deren Komponierung dabei helfen können eine kleine DSL für lesbaren Validierungscode zu schreiben.

gregor_trefs_combinator_funktionales_entwurfsmuster
image-771

Fazit

Die Auswahl der Vorträge seitens der Organisatoren war aus meiner Sicht dieses Mal sehr gelungen und vielseitig. Ich habe viele neue Denkanstöße mitgenommen. Nebenbei war die Abendveranstaltung nach dem Coding Dojo gesellig. Grüße an alle, mit denen ich mich am Abend noch über Gott und die Welt ausgetauscht habe: Christoph, Claudia, Stefan, Alexander, Timo, Roland, Lydia und die, deren Namen ich jetzt vergessen habe 😉

Hoffentlich bis nächstes Jahr!