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 1
23.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 2
23.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 3
23.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 4
23.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 5
23.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 6
23.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 7
23.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 8
23.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 9
23.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 10
23.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 11
23.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 12
23.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 13
23.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 14
23.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 15
23.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 16
23.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 17
23.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 18
23.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 19
23.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 20
23.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 21
23.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 22
23.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 23
23.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 24
23.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 25
23.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 26
Sie können auch lesen