Wie motivieren wir unser Umfeld, für Clean Code zu sorgen? - SAEC Days
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
23.07.2020
Wie motivieren wir unser Umfeld,
für Clean Code zu sorgen?
© John Boyd-Rainey
SAEC Days, München/Remote, 2020
Während wir warten, ist eine URL im Chat-Fenster mit einem Formular,
damit ich besser weiß, wer vor mir sitzt. Darf ich Sie bitten, es auszufüllen?
https://forms.gle/1VEnrCGaSFQmDuDW9
.eu
Wer bin ich?
Warum stehe ich hier?
• Ich habe viel dreckigen Code produziert
• immer noch
– immer seltener
– ich räume ihn meist gleich auf
• Mich interessieren
– wartbarer Code
– eleganter Code
– Refactoring
– gute Objekt-Orientierung d.h. u.a. Design Patterns.
23.07.2020 (C) John Boyd-Rainey 3
123.07.2020
Ich unterrichte und coache
• Programmierung (Java, C++ usw.)
• Patterns
• Refactoring
• Clean Code
• Kurs-Teilnehmer:
– nicht genug Zeit
– "Chef" sieht nicht ein, dass wir "aufräumen" müssen
– wenn wir fertig sind, bekommen wir gleich die nächste
Aufgabe.
23.07.2020 (C) John Boyd-Rainey 4
Motivation?
• Wie?
• Hat der "Chef" ein Problem?
– Hat er eins, das er noch nicht erkannt hat
– Schmerzen noch erträglich?
• Seine Vorteile
• Wenn unser Ziel (Clean Code in die Breite zu
treten) richtig ist:
– brauchen wir Wege, ihm das klar zu machen
• Erklärungen, die er verstehen kann
– Vergleiche helfen .
23.07.2020 (C) John Boyd-Rainey 5
223.07.2020
Was meinten meine Kollegen?
• Mehrere:
– "Warum brauchst du so einen Vortrag? Clean
Code ist selbstverständlich."
• Testen = Hauptziel
– nur sauberen Code können wir testen
• Nach meiner Erfahrung:
– schön wäre es!
23.07.2020 (C) John Boyd-Rainey 6
Was meine ich mit "Umfeld"?
reines Herzens
heldenhaft mutig
Der "Kunde"
Der Clean Code tugendhaft
Programmierer
Der "Chef" gott-ähnlich
Der Clean
Code Coach
Abteilungsleiter
Der unclean
Programmierer
Projektleiter
23.07.2020 (C) John Boyd-Rainey 7
323.07.2020
The Bottom Line (1)
• Wie motiviere ich die "Chefs", für Clean Code
zu sorgen
• In einer Folie…
23.07.2020 (C) John Boyd-Rainey 8
Clean Code
saves
money!
23.07.2020 (C) John Boyd-Rainey 9
423.07.2020
The Bottom Line (2)
• Wie motiviere ich die anderen Programmierer,
für Clean Code zu sorgen?
23.07.2020 (C) John Boyd-Rainey 10
Clean Code
makes you
23.07.2020
happy!
(C) John Boyd-Rainey 11
523.07.2020
… "Wie macht mich CC glücklich"?
• Programmierer
– waten nicht durch Schlamm
– suchen keine Duplikate im Code
– bleiben produktiv.
• Der Code tut, was die Namen versprechen
• Clean Code
– ist Gehirn gerecht
– passt in Ihren Arbeitsspeicher
– strengt nicht an
– ist übersichtlich
– ist verständlich
– geht schneller… Ja! Echt!! Wirklich!!!
• Ihr "Chef" ist glücklich, weil…
23.07.2020 (C) John Boyd-Rainey 12
Clean Code
saves
23.07.2020
money! (C) John Boyd-Rainey 13
623.07.2020
Überlastet der Code unsere Gehirne?
• Wie viele Sachen können wir gleichzeitig "im Kopf" haben?
• Früher "ca. 7"
• Neuerdings ca. … was meinen Sie? 4 (ja, vier!)
– im "working memory"* ( = Arbeitsgedächtnis)
• Wenn wir versuchen, mehr Sachen gleichzeitig zu merken oder
bearbeiten
– anstrengend
– unübersichtlich
– wir machen Fehler
Clean Code ist Gehirn-gerecht
Kurze Methoden passen schmerzfrei in unsere Köpfe.
* https://en.wikipedia.org/wiki/Working_memory
23.07.2020 (C) John Boyd-Rainey 14
Diagramme
• Ein Bild spricht…
• Verstehen wir ein Diagramm schneller als
Code?
• JA!
• UML, SysML usw. bieten viele Möglichkeiten
– genau/pedantisch
– oder ganz lockere Skizzen
– beide helfen!
23.07.2020 (C) John Boyd-Rainey 15
723.07.2020
Code Säubern ist einfach
• Namen verbessern
• Methode/Funktion 5 - 7 Zeilen?
– oder 3?
• Methode tut EINE Sache
• Klasse hat EINE Aufgabe
• Methode: EIN mal einrücken
• Viele Kommentare löschen
– sie zeigen, dass der Code nicht für sich spricht
– Also: Weg damit!
• Werttypen anstelle von "primitiver Obsession"
– z.B. Klasse TelefonNummer anstelle von einem String.
23.07.2020 (C) John Boyd-Rainey 16
"Definition of Done"
• "Done" kann verschiedenes bedeuten
• "Make it run, make it clean, make it fast"
• "Done":
– Tests
– grün
– Code ist aufgeräumt
– …
• Agile Projekte:
– öffentlich sichtbare "Definition of Done"
• Clean Code gehört unbedingt dazu!
– Das ist nicht optional,
– also nicht "nice to have".
23.07.2020 (C) John Boyd-Rainey 18
823.07.2020
Ein paar Zitate
• Folgende Zitate
– sind uns wahrscheinlich bekannt
– aber den "Chefs" vielleicht nicht
• Sie können helfen, "Chefs" zu motivieren
– weil sie ihn dort abholen, wo er ist.
23.07.2020 (C) John Boyd-Rainey 19
Rechtzeitiges Refactoring
It is the neglect of timely repair that makes
rebuilding necessary.
Richard Whately
Das gilt für einen Gartenzaun genau so wie für Code
wenn ein "Chef" das in Frage stellt, fragen Sie, warum er
glaubt, dass das nicht so ist.
23.07.2020 (C) John Boyd-Rainey 20
923.07.2020
Autor von "The Mythical Man-Month"
Ich wette, dass die einzelne Programmiererin
Clean Code hatte
besser ausgebildet war.
23.07.2020 (C) John Boyd-Rainey 21
Das Wesen des Universums
• Programming today is a race between software
engineers striving to build bigger and better idiot-
proof programs, and the Universe trying to
produce bigger and better idiots.
• So far, the Universe is winning.
Rich Cook
• Entropie = Unordnung = ein Naturgesetz
• Dampfende Haufen… http://geek-and-poke.com/
23.07.2020 (C) John Boyd-Rainey 22
1023.07.2020
Noch ein bisschen "Umfeld"
reines Herzens
heldenhaft mutig
Der "Kunde"
Der Clean Code tugendhaft
Programmierer
Der "Chef" gott-ähnlich
Der Clean
Code Coach
Abteilungsleiter
Firmeninhaber
Der unclean
Programmierer
Bereichsleiter Projektleiter
23.07.2020 (C) John Boyd-Rainey 23
Langfristig / Kurzfristig
• Projekt-Owner und Projektleiter wollen das "nächste
Feature" einbauen lassen
• Höher in der Hierarchie finden wir manchmal Leute mit
längerfristigem Denken
– sie wissen, dass Quick & Dirty Lösungen später zu
Problemen führen
• Wir müssen diese verantwortlichen Leute erreichen
• Und sie halten die Rücken der Software-Ingenieure frei
– zum testen
– zum refactorn
– um den Code sauber zu machen und zu halten.
23.07.2020 (C) John Boyd-Rainey 24
1123.07.2020
Metapher bildlich
Vorher Nach dem Refactoring
23.07.2020 (C) John Boyd-Rainey 25
Probleme in unserer Industrie
• Niemand sieht, wie wir arbeiten
– ob wir eine Holzbrücke produzieren
– obwohl eine Autobahnbrücke (implizit) bestellt
war
• Niemand sieht, ob wir sauber arbeiten.
23.07.2020 (C) John Boyd-Rainey 26
1223.07.2020
Andere Ingenieure…
• Ein Brückenbau-Ingenieur kann seinem
Kunden/Chef zeigen, wie weit sein Projekt ist
• Niemand beschwert sich, dass er Zeit nimmt, um
die Baustelle ständig sauber zu halten
– Das Aufräumen ist
• selbstverständlich,
• erwünscht und
• Vorschrift!
• Keiner sagt, "ok, ein Fahrrad kam sicher rüber, wir
geben die Autobahnbrücke frei".
23.07.2020 (C) John Boyd-Rainey 27
Die Brücke
• Wenn eine Holzbrücke bestellt war
– und fast fertig ist
– kommt keiner und sagt, "Oops – kleine Änderung… wir
wollten eigentlich eine Autobahnbrücke"
– "… 5 km weiter südlich"
• Das passiert bei uns oft
• Bekommen wir Zeit,
– unsere Schreiner umzuschulen?
– unsere Holzsägen usw. wegzuräumen?
– unsere Betonmischer aufzustellen und bedienen zu
lernen?
23.07.2020 (C) John Boyd-Rainey 28
1323.07.2020
Das Problem unserer Industrie
• Niemand sieht die Betonmischer mitten auf
der Straße
• Niemand sieht eine Holzkonstruktion, die
natürlich keinen 40-Tonner trägt.
23.07.2020 (C) John Boyd-Rainey 29
Lieber "Chef"…
• … du räumst deinen Schreibtisch auf, damit du Sachen
schnell wiederfindest
• … wenn du deinen Schreibtisch aufräumen würdest,
würdest du Sachen schneller wiederfinden
• Räumst du deine Küche auf?
– oder stapeln sich die dreckigen Teller neben der Spüle?
• Wenn wir JETZT unseren Code aufräumen
– bildet sich kein Schimmel
– sammeln sich die Ratten und Kakerlaken nicht!
• Uncle Bob's "Zahnarzt"…
23.07.2020 (C) John Boyd-Rainey 30
1423.07.2020
Clean Code
saves
money!
23.07.2020 (C) John Boyd-Rainey 31
Was hält uns vom Clean Code ab?
• Programmierer sind gewohnt,
– lange Methoden zu schreiben
– das Anti-Pattern "kopieren statt kapieren"
anzuwenden
– Code zu duplizieren
– aufzuhören, wenn es funktioniert
• Gewohnheiten brechen!
23.07.2020 (C) John Boyd-Rainey 32
1523.07.2020
Putzmittel
• Diagramme
– verworrenes Verständnis der Aufgabe oder des
Codes können wir so ans Licht bringen
– Kommunikation wird einfacher
• Seminare
• Reviews
• Coaching.
23.07.2020 (C) John Boyd-Rainey 33
Putzmittel: Die Zeit
Programmierer brauchen Zeit, um
sauber zu programmieren
ihren Arbeitsprozess
Alternative Code-Designs zu reviewen
aus zu probieren
alternative Arbeitsprozesse
über den Code zu reflektieren zu finden
den Code zu reviewen
… sonst werden wir nicht besser
Wir arbeiten kreativ. Das kann niemand erzwingen.
23.07.2020 (C) John Boyd-Rainey 34
1623.07.2020
Wie motivieren wir Programmierer?
Wir zeigen ihnen, dass Clean Code
• mehr Spaß macht
• einfacher ist:
– zu verstehen
– zu verändern.
• mehr Erfolg bringt
• professioneller ist
• zur Gewohnheit werden kann und muss
• eine Art Eigenschutz ist
– in 2 Wochen werden sie den Code verstehen müssen
• den Programmierern gleich hilft
Wir gehen mit gutem Beispiel voran.
23.07.2020 (C) John Boyd-Rainey 35
Wie motivieren wir Programmierer?
• Schmerzen bewusster machen
• Benennen
• Lösungen zeigen.
23.07.2020 (C) John Boyd-Rainey 36
1723.07.2020
Schulungen! es ist Eigenwerbung,
a.d.R
• Auch wenn das wie Eigenwerbung klingt: viele
Programmierer brauchen Schulungen in
– Clean Code
– Refactoring
– Design Patterns
– Verwendung ihrer Entwicklertools
– und einiges mehr
• Und "das Umfeld" braucht auch ein Training
– dieser Vortrag ist hoffentlich ein (erster?) Schritt
• On-the-job coaching.
23.07.2020 (C) John Boyd-Rainey 37
Was demotiviert Programmierer?
Oder: warum sind nicht alle sofort "Clean"?
• Anfängerbücher
• Deshalb sind kurze Methoden ungewohnt
• "Wir müssen ständig von einer Datei zu einer
anderen springen "
• "Kollegen tun es nicht, also lasse ich es auch".
23.07.2020 (C) John Boyd-Rainey 38
1823.07.2020
Broken windows
• Etwas heiles bleibt oft heil
• Wenn etwas ein bisschen kaputt aussieht, wird es
immer kaputter
• Entropie
• https://medium.com/@matryer/broken-
windows-theory-why-code-quality-and-simplistic-
design-are-non-negotiable-e37f8ce23dab
• Wir müssen Energie, Zeit und Geld investieren,
um den Code sauber zu halten
23.07.2020 (C) John Boyd-Rainey 39
Beratungsresistente Coder
• Idealerweise sieht ein Programmierer ein, dass er/sie sauberer
kodieren soll
– und das wird sie/er oft tun
• Falls nicht:
– Seminar
• ein Dritter erklärt es – d.h. kein (vielleicht jüngerer) Kollege
• “Problems cannot be solved with the same mind set that created them.”
Albert Einstein
– Zwang!
– Daumenschraube? (Ok, ok, ich bin manchmal ein bisschen altmodisch)
– Code kann nur eingecheckt werden, wenn Metriken erfüllt sind
– mit Tools wie SonarQube
• z.B. für kurze Methoden.
• Reviews.
23.07.2020 (C) John Boyd-Rainey 40
1923.07.2020
Die schwierige Folie
• Ein Programmierer, der dreckigen Code
hinterlässt, ist unprofessionell
• Ein "Chef", der nicht auf sauberen Code
besteht, handelt unprofessionell
• Er muss auf sauberem Code bestehen.
Robert ("Uncle Bob") Martin, The Clean Coder
23.07.2020 (C) John Boyd-Rainey 41
"Unprofessionelle" "Chefs"
"Chefs" (auch Kunden, Vertriebler usw.)
• sehen, dass die Software funktioniert
• geben uns gleich den nächsten Auftrag
• Die Programmierer haben keine Zeit zum Aufräumen
Ein Maler wird selbstverständlich die Zeit für die An- und Abreise, für
das Abdecken des Bodens und Wegräumen der Folien in Rechnung
stellen
Das müssen wir auch!
Unsere "Chefs" müssen das verstehen
"The Clean Coder" dem "Chef" schenken!
Wenn "Chefs" bei ihrer mangelnden Professionalität bleiben:
• müssen wir lügen
– sagt Martin Fowler
– sie haben nichts Besseres verdient.
23.07.2020 (C) John Boyd-Rainey 42
2023.07.2020
WIE motivieren wir unser Umfeld?
• "Kristallisationspunkt"?
– https://www.youtube.com/watch?v=lo0cp2uhxb0
• Wenn wir selbst coden: mit gutem Beispiel voran
– die Kollegen sehen, dass sie (nach etwas Schulung und
Übung) mit sauberem Code besser arbeiten können
• "Boy scout principle"
– wir räumen den Code immer ein bisschen auf
– "Kaizen" (Kontinuierliche Verbesserungs-Prozess) hat die
Produktivität der Japanischen Industrie revolutioniert…
– Wer ein sauberes Stück Code sieht, kann das als gutes
Beispiel nehmen, auch schön zu programmieren
23.07.2020 (C) John Boyd-Rainey 43
Produktivität / Zeit
Alte Art Professionell Clean Code
6 Refactoring
Agile
5 Tests
Patterns
Produktivität
4 Pair programming
Mob programming
3 CI
Crap
2
1 Houston,
we have a BIG
Problem
0
-1
tΩ Let's play
Zeit
"Whack-A-
Mole"!...
23.07.2020 (C) John Boyd-Rainey 44
2123.07.2020
Produktivität / Zeit
Alte Art Professionell Clean Code
6 Refactoring
Agile
5 Tests
Patterns
Produktivität
4 Pair programming
Mob programming
3 CI
Crap
2
1 Houston,
we have a BIG
Problem
0
-1
tΩ Let's play
Zeit
"Whack-A-
Mole"!...
23.07.2020 (C) John Boyd-Rainey 45
Alle brauchen…
• Disziplin
• Teamgeist
• den Willen, besser zu werden
• die Einsicht, dass Clean Code allen hilft
– und Spaß macht
– und zwingend erforderlich ist
– also nicht "nice-to-have"
• Disziplin
• Teamgeist
• den Willen besser zu…
23.07.2020 (C) John Boyd-Rainey 46
2223.07.2020
Woran könnte es scheitern?
• Clean-Coding ist ein "Metaskill"
• Wir sind an den Schmerzen gewöhnt
• Wir merken nicht, wenn wir es nicht
beherrschen
• Deswegen:
– mehr Reviews
– auch mit externen Coaches
– und Projekt-übergreifend.
23.07.2020 (C) John Boyd-Rainey 47
Ihre Aufgabe
Just do it!
Tipps aus dem Zeitmanagement
• Gleich nach diesem Vortrag bitte 3 Minuten lang
Argumente, Aktionen und Pläne aufschreiben,
diktieren oder tippen
– die Sie MORGEN umsetzen WERDEN
• Sprechen Sie morgen mit Ihrem Team
• Wer das nicht tut, handelt vielleicht unprofessionell?
23.07.2020 (C) John Boyd-Rainey 48
2323.07.2020
"Wie motivieren wir…?"
WIR diskutieren
• argumentieren
• machen
– mit gutem Beispiel voran.
23.07.2020 (C) John Boyd-Rainey 49
Zusammenfassung
• Lieber "Chef", denk bitte an
– den "Knäuel" mit deinem Workflow
– die Folie des Anstreichers auf dem Boden
• Lieber "Chef", ich bin der professioneller Software-Ingenieur
– Ich weiß, was ich tue
– Ich brauche diese Zeit zum aufräumen!
– Es wäre unprofessionell, wenn ich nicht aufräumen würde
• Clean Code spart Kosten und Ärger
• Alle Programmierer müssen davon überzeugt werden,
– dass Clean Code besser ist
• auch für sie selbst
– dass sie wissen, dass es einfach ist, Code auf zu räumen
– dass alle im Team mitmachen
• auch die "Chefs".
23.07.2020 (C) John Boyd-Rainey 50
2423.07.2020
Mein Angebot
• Ich coache auch Teams MIT ihren "Chefs" usw.
• Zur Not kaufe ich dafür eine Krawatte!
23.07.2020 (C) John Boyd-Rainey 51
Quellen
• Hunderte von Seminar-Teilnehmern mit ihren Fragen
und Erfahrungen
• Firmen, die ich nicht nennen darf
• Robert C. Martin
– Clean Code
– The Clean Coder
• Martin Fowler
– Refactoring
• Andrew Hunt & David Thomas
– The Pragmatic Programmer.
23.07.2020 (C) John Boyd-Rainey 52
2523.07.2020
Vielen Dank
• … an die Organisatoren der Konferenz, meine
Kollegen und Kursteilnehmer!
Es gibt wieder eine URL im Chat-Fenster mit einem Feedback-Formular,
damit ich weiß, ob Ihnen der Vortrag gefallen hat. Ich würde mich über jede
Reaktion freuen…
https://forms.gle/CG9zDNeP1cWnJSHX7
• Wenn Sie mehr Feedback geben möchten, oder
Sie weiteren Kommunikationsbedarf haben, freue
ich mich über Emails: john@boyd-rainey.de
23.07.2020 (C) John Boyd-Rainey 53
26Sie können auch lesen