Develop Yourself

Ein Plädoyer für mehr
Software Handwerkskunst

Ole Rößner

About me

  • Ole Rößner
  • 38 Jahre
  • verheiratet, 1 Sohn
  • neusta GmbH (Bremen)
  • Entwickler & Coach
  • Symfony Enthusiast
  • Clean Code Evangelist
  • Krachmacher a.D.

 

        @djbasster

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.

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

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