Develop Yourself
Ein Plädoyer für mehr
Software Handwerkskunst
Ole Rößner
About me
- Ole Rößner
- 36 Jahre
- verheiratet, 1 Sohn
- neusta GmbH (Bremen)
- Entwickler & Coach
- Symfony Enthusiast
- Clean Code Evangelist
- Krachmacher a.D.
Join the family!
Meine Symfony Story
- 2009: Erstes Projekt in der Hochschule mit sf1.4.
- 2011: Erstes Kundenprojekt mit Symfony 2.0.
- 2014: Meine erste SymfonyLive besucht.
- 2017: Meine erste Core Contribution.
- heute: Bin ich hier! 😍
Quiz Time!
Was macht einen guten Musiker aus?
Üben
Üben
Üben
Was macht einen guten Sportler aus?
Üben
Üben
Üben
Softwareentwickler?
Der typische Entwickler?
Kreativität & Handwerk
Handwerk?
Der Elektriker
Ein Vergleich
Die Kabel müssen nachvollziehbar verlegt und ausreichend dimensioniert sein für zukünftig zu erwartende Energiebedarfe.
Die Absicherung muss ordnungsgemäß ausgeführt sein, Elektroherd und Durchlauferhitzer sollen gleichzeitig betrieben werden können und darüber hinaus sollen Steckdosen in ausreichender Anzahl und an den richtigen Plätzen vorhanden sein.
Der Elektriker kennt aktuelle Technologien und berät den Auftraggeber kompetent.
Unter Umständen muss er dem Kunden aber auch unmissverständlich klarmachen, dass preisgünstigere Vorschläge (z. B. Kabel diagonal zu verlegen, um Kupfer zu sparen, oder weniger Absicherungen einzubauen) keine gangbare Lösung darstellen.
Bingo?!
Ein gutes Programm hat ein sauberes Layout, verwendet sinnvolle Namen,
[...], dass maximale Robustheit und Lesbarkeit des Programms erreicht
werden. Die Erstellung [...] erfordert vom
Programmierer Sorgfalt, Disziplin und ein gutes Stück handwerklichen Stolz.
Ian Sommerville, „Software Engineering“, Addison-Wesley 1987
Softwarehandwerk?
Manifest für Softwarehandwerkskunst
Manifest
Als engagierte Software-Handwerker heben wir die Messlatte für professionelle Softwareentwicklung an, indem wir üben und anderen dabei helfen, das Handwerk zu erlernen.
Durch diese Tätigkeit haben wir diese Werte schätzen gelernt:
Manifest
- Nicht nur funktionierende Software,
sondern auch gut gefertigte Software - Nicht nur auf Veränderung zu reagieren,
sondern stets Mehrwert zu schaffen - Nicht nur Individuen und Interaktionen,
sondern auch eine Gemeinschaft aus Experten - Nicht nur Zusammenarbeit mit dem Kunden,
sondern auch produktive Partnerschaften
At the lowest code level, every variable you define, every method you create, every class you decide to instantiate will play a role in the long term maintenance overhead of the application. [...] So it is important to have developers who strive to write clean code, have good amount of automated tests, refactor constantly to improve code quality, and generally are software craftsman by heart in the first place.
From Kubernetes Patterns by @bibryam and @ro14nd!
Wie werde ich Softwarehandwerker?
Know your tools!
- Editor
- Tastatur
- Ökosystem
Know your material!
- Programmiersprachen
- Libraries
- Muster
- Phantasie
Euer Editor
Shortcuts!
Customize!
Wozu das alles?
Komplexität erfordert Übung
Bedienung automatisieren
- Reflex
- Muscle Memory
Muscle memory [...] is a form of procedural memory that involves consolidating a specific motor task into memory through repetition. When a movement is repeated over time, a long-term muscle memory is created for that task, eventually allowing it to be performed without conscious effort.
Make it yours!
Training
Kata
- Konzept kommt aus dem Kampfsport
- Weitergabe von Wissen
- Bewegungsabläufe automatisieren bis zur Perfektion
- Wiederholung
- Sicheres Terrain
Randori
- Kata mit mehreren
Dojo
- Der Trainingsraum
Code Kata
- Simples Problem
- Timeboxed
- ...von der grünen Wiese
-
github.com/teamneusta/kata-quickstarter
(z.B. C#, PHP, JavaScript, Java, Kotlin)
-
- Baby Steps
- Iteratives, agiles Vorgehen
Kata Workflow
- Entferne ablenkende Faktoren
- Öffne deine Entwicklungsumgebung
- Stelle dir den Wecker
- Beginne zu Coden
- immer TDD (red, green, refactor)!
- Stop @ Timebox
- Rekapituliere
Randori Workflow
- "Come red - Go red"
- Mini Schritte
- Person A: red, green, refactor, red
- Person B: red, green, refactor, red
- Person (C|A): red, green, refactor, red
- usw.
Aber immer das Gleiche, wird das nicht langweilig?
- Sucht euch Themen
- SOLID, Pattern, No-Mouse, No Test Framework, Merciless Refactoring, No-If, On-the-Project Refactoring
- Selbstreflektion
- Es trainiert
- Probiert mal neue Sprachen aus
Kata Projekte?
Einstiegs-Katas
FizzBuzz
interface FizzBuzzInterface {
public function process(int $input) : string
}
$input | process($input) |
---|---|
1 | "1" |
2 | "2" |
3 | "Fizz" |
5 | "Buzz" |
6 | "Fizz" |
10 | "Buzz" |
15 | "FizzBuzz" |
30 | "FizzBuzz" |
OMG, Live Coding!
Zusammenfassung
- TDD unter optimalen Bedingungen
- Refactoring
- YAGNI
- Evaluierung
Was macht einen guten Musiker Softwareentwickler aus?
Üben!
Üben!
Üben!
Fragen?
Fragen!
Vielen Dank!
Quellen
- Building better developers (Rowan Merewood)
- Codekata.com (Dave Thomas)
- Manifest für Software-Handwerkskunst
- The Ultimate Code Kata (Jeff Atwood)
- So wird ein Coding Dojo zu einer... (Martin Ruprecht)
- CodeWars (Online Coding Dojo mit Gamification)
- Software Engineering (Ian Sommerville, Addison Wesley, 1987)
- Kubernetes Pattern (Bilgin Ibryam and Roland Huß)