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.
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.
From Kubernetes Patterns by @bibryam and @ro14nd!
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
- simple problem
- timeboxed
- starting from scratch
-
github.com/teamneusta/kata-quickstarter
(e.g. C#, PHP, JavaScript, Java, Kotlin)
-
- baby steps
- iterative, agile approach
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
- 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 with Gamification)
- Software Engineering (Ian Sommerville, Addison Wesley, 1987)
- Kubernetes Pattern (Bilgin Ibryam and Roland Huß)
[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.
- 594