Develop Yourself

A Plea for more
Software Craftsmanship

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!

What makes a good musician?

Practice

Practice

Practice

What makes a good athlete?

Practice

Practice

Practice

Softwaredeveloper?

The typical developer?

Creativity & Craftmanship

Craftmanship?

The electrician

a comparison

The cables must be routed in a traceable manner and be

sufficiently dimensioned for the energy
requirements to be expected in the future.

The power fuse must be properly implemented, the electric stove and instantaneous water heater should be able to be operated at the same time and, in addition, sockets should be available in sufficient numbers and in the right places.

The electrician knows current technologies and advises the client competently.

Under certain circumstances, however, he must also make it absolutely clear to the customer that cheaper suggestions (e.g. laying cables diagonally to save copper or installing fewer fuses) do not represent a viable solution.

Bingo?!

A good program has a clean layout, uses meaningful names,
[...] that achieves maximum robustness and readability of the program
will. The creation [...] requires from
programmer care, discipline and a good deal of pride in craftsmanship.

Ian Sommerville, „Software Engineering“, Addison-Wesley 1987

Softwarecraftmanship?

Manifesto for Softwarecraftmanship

Manifesto

As dedicated software craftsmen, we raise the bar for professional software development by practicing and helping others learn the craft.

 

Through this activity we have learned to appreciate these values:

Manifesto

  • Not only working software,
                                 but well crafted software
  • Not only reacting to changes,
                                 but to create value
  • Not only indiviuals and interactions,
                                 but a community of experts
  • Not only cooperation with customers,
                                 but productive partnership

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.

How to become a softwarecraftsman?

Know your tools!

  • editor
  • keyboard
  • ecosystem

Know your material!

  • programming languages
  • libraries
  • patterns
  • imagination

Your editor

Shortcuts!

Customize!

What is it good for?

Complexety needs practice!

Automate operation

  • 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

  • Conzept comes from martial arts
  • transfer of knowledge
  • automate motion sequences to perfection
  • repeat!
  • save habour

Randori

  • Kata with more then one

Dojo

  • The training room

Coding Kata

Kata Workflow

  • Remove destructing factors
  • Open your IDE
  • Set the alarm clock
  • Start Coding
    • always TDD (red, green, refactor)!
  • stop @ timebox
  • recap

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.

But always the same,

doesn't that get boring?

  • look out for topics
    • SOLID principles, patterns, no-mouse, no test framework, merciless refactoring, no-if, on-the-project refactoring
  • self reflection
  • it is practicing
  • try out a new language

Kata projects?

Katas for beginners

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!

Summary

  • TDD in optimized environment
  • refactoring
  • YAGNI
  • evaluation

What makes a good musician softwaredeveloper?

Practice!

Practice!

Practice!

Questions?

Questions!

Thank you!

Sources

[eng] [wip] Develop Yourself - unKonf 2020

By neusta Coaching-Team

[eng] [wip] Develop Yourself - unKonf 2020

Softwareentwicklung ist mehr als stumpfes Code runter schreiben. Es vereint logisches Denken, Kreativität und handwerkliches Können. Handwerklich? Unter dem Leitgedanken der Software Craftmanship Bewegung beleuchten wir den handwerklichen Teil der Softwareentwicklung, die Importanz bestimmter Tools und das regelmäßige Training in Form von Code Katas.

  • 436