und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI •...

38
Coding Dojos im Unternehmen ...und es lohnt sich doch 05.06.2013 06.05.2013 Entwicklertag 2013 1 CoDeSo - Ralf Schoch Karlsruher Entwicklertag 2013

Transcript of und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI •...

Page 1: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Coding Dojos im Unternehmen...und es lohnt sich doch

05.06.2013

06.05.2013 Entwicklertag 2013 1CoDeSo - Ralf Schoch

Karlsruher Entwicklertag 2013

Page 2: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Agenda

• Vorstellung

• Vorgeschichte

• Basics

• Beginn

• Clean Code & TDD

• Fazit

06.05.2013 Entwicklertag 2013 2CoDeSo - Ralf Schoch

Page 3: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Ralf Schoch – Zur Person

• Freiberuflicher IT-Consultant

• Diplom-Betriebswirt (WI)

• Certified Scrum Product Owner (CSPO)

• Projektmanagement, Coach, Entwickler

• Softwareentwicklung seit 1992 (IBM3090)

• MS Technologie (Web/PC/...) seit 1998

• Schwerpunkt: .Net, C#, Scrum, CCD

• .Net Open Space Süd, .NET User Group Karlsruhe, Karlsruher Coding Dojo, VKSI

• Karate Trainer

06.05.2013 Entwicklertag 2013 3CoDeSo - Ralf Schoch

Page 4: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Agenda

� Vorstellung

• Vorgeschichte

• Basics

• Beginn

• Clean Code & TDD

• Fazit

06.05.2013 Entwicklertag 2013 4CoDeSo - Ralf Schoch

Page 5: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Test Driven Development – First Contact

• 2009 auf dem Open Space in Leipzig beim Coding Dojo mit Ralf Westphal und Stefan Lieser

• Januar 2010 - Erstes Coding Dojo bei der .Net User Group Karlsruhe

• Mai 2010 – April 2012 als Entwickler in einem Scrum Team mit TDD & Pair Programming

• Wöchentliches Coding Dojo im Team

• Monatliches Coding Dojo in der User Group Karlsruhe

06.05.2013 Entwicklertag 2013 5CoDeSo - Ralf Schoch

Page 6: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Clean Code – First Contact

• Ende 2008 als Projektmanager in einem Projekt mit „schlechter“ Code Qualität

• Vortrag von Stefan Lieser bei der .Net User Group Karlsruhe im April 2009

– „Clean Code“ Buch von Robert C. Martin (Uncle Bob)

– Professioneller Softwareentwickler

– Prinzipien

– Praktiken

– „Clean Code Developer“ Armbänder

– Bewusstsein

06.05.2013 Entwicklertag 2013 6CoDeSo - Ralf Schoch

Page 7: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Vorgeschichte

• Neues Projekt

– Projektmanager statt Entwickler �

– Ziel Schadensbegrenzung

– Erster Kontakt mit SCRUM

– Viel hilft viel: Teamgröße 2 -> 10

– Grundproblem: Schlechte Code Qualität

• Clean-Code-Developer Vortrag (Stefan Lieser)

– Erster Kontakt mit Clean Code

06.05.2013 Entwicklertag 2013 7CoDeSo - Ralf Schoch

Page 8: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Vorgeschichte

• .Net Open Space Leipzig

– Erstes Coding Dojo (Ralf Westphal, Stefan Lieser)

– 150 Teilnehmer

– Chaotischer Eindruck

• .Net User Group Karlsruhe

– Reine Vorträge sind zu theoretisch

– Wunsch nach mehr coden

– Erstes Coding Dojo in der User Group

– Später monatliche Dojos

06.05.2013 Entwicklertag 2013 8CoDeSo - Ralf Schoch

Page 9: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Vorgeschichte

• Neues Projekt

– Als „normaler“ Entwickler in einem Scrum Team

– Auf der grünen Wiese anfangen (Alt-SW ablösen)

– Scrum konsequent umgesetzt

– Agile Entwicklunsmethoden

• Pair Programming

• Test Driven Development

– Wöchentliche Coding Dojos

– 2 Jahre lang

06.05.2013 Entwicklertag 2013 9CoDeSo - Ralf Schoch

Page 10: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Vorgeschichte

• Angebot: Altes Projekt, neue Rolle

– Entwicklungsleiter

– Alte Codebasis (~4 Jahre)

– Bestehendes Team, aber alles Einzelkämpfer

• Code Ownership (Module)

• Individueller Stil

• Jedes Modul anderst

• Unterschiedliche Auffassung von Qualität

• Mehrere Mitarbeiter haben Projekt verlassen

• Aufwändige Weiterentwicklung

• Viele Bugs, etc.

06.05.2013 Entwicklertag 2013 10CoDeSo - Ralf Schoch

Page 11: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Vorgeschichte

• Ziele

– Qualität verbessern

– Weniger Bugs

– Bessere Skalierung im Team

– Ausfallsicherheit

– Wissenstransfer

– Gemeinsames Codeverständnis

• Wie umsetzen?

– Ein Mittel: Coding Dojos

06.05.2013 Entwicklertag 2013 11CoDeSo - Ralf Schoch

Page 12: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Agenda

� Vorstellung

� Vorgeschichte

• Basics

• Beginn

• Clean Code & TDD

• Fazit

06.05.2013 Entwicklertag 2013 12CoDeSo - Ralf Schoch

Page 13: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Basics

• Warum wollen wir denn überhaupt ein Coding Dojo

machen?

• Was ist ein Dojo?

• Was ist eine Kata?

06.05.2013 Entwicklertag 2013 13CoDeSo - Ralf Schoch

Page 14: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Warum Dojos?

• Teambildung.

• Gemeinsames lernen.

• Gemeinsames erfahren.

• Miteinander kommunizieren.

06.05.2013 Entwicklertag 2013 14CoDeSo - Ralf Schoch

Page 15: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Was ist ein Dojo?

• Trainingsraum.

• Kommt aus den japanischen Kampfsportarten.

• Raum zum Lernen und Lehren.

• Schutz vor äußeren Einflüssen.

• Aneignen von neuen Praktiken.

• Eigene Fähigkeiten verbessern.

• Coding Dojo

06.05.2013 Entwicklertag 2013 15CoDeSo - Ralf Schoch

Page 16: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Was ist eine Kata?

• Kommt aus den japanischen

Kampfsportarten.

• Klar definierte Aufgabe.

• Interpretationsspielraum bei

Umsetzung.

• Wiederholbar.

• Man spricht über das gleiche.

• Coding Kata

06.05.2013 Entwicklertag 2013 16CoDeSo - Ralf Schoch

Page 17: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Agenda

� Vorstellung

� Vorgeschichte

� Basics

• Beginn

• Clean Code & TDD

• Fazit

06.05.2013 Entwicklertag 2013 17CoDeSo - Ralf Schoch

Page 18: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Wie beginnen ...

• Nicht anfangen über die Vorteile zu diskutieren!

• Kleine, überschaubare Aufgabe zum Lösen geben.

• Selbst diese Aufgabe systematisch & reproduzierbar

mit Babysteps lösen.

Danach

• Das Ergebnis für sich sprechen lassen.

• Anhand der konkreten Beispiele Vor- und Nachteile

diskutieren.

06.05.2013 Entwicklertag 2013 18CoDeSo - Ralf Schoch

Page 19: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Überzeugungsarbeit

• Kleines Experiment

• 2-3 Entwickler

• Dauer ca. 2 Stunden

– 1. Stunde

– Jeder darf entwickeln wie er möchte

– Ergebnis vergleichen

– 2. Stunde

– Gemeinsam mit Test Driven Development (TDD)

• Bsp.: Kata Prime Factors

06.05.2013 Entwicklertag 2013 19CoDeSo - Ralf Schoch

Page 20: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Ergebnis

• Code ist sehr unterschiedlich.

• Code ist umfangreich (Klassen, Methoden, Umfang).

• Code ist (teilweise) komplex.

• Es ist schwierig den Code der anderen zu verstehen.

• ...

06.05.2013 Entwicklertag 2013 20CoDeSo - Ralf Schoch

Page 21: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Akzeptanz Probleme?

• Unser Management erlaubt uns kein TDD!

• TDD kostet mehr Zeit.

• Dojos & Katas haben nicht mit der Realität zu tun.

• Das funktioniert nicht mit unserem Code.

• Falsche Erwartungshaltung (Der Weg ist das Ziel).

• ...

06.05.2013 Entwicklertag 2013 21CoDeSo - Ralf Schoch

Page 22: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Agenda

� Vorstellung

� Vorgeschichte

� Basics

� Beginn

• Clean Code & TDD

• Fazit

06.05.2013 Entwicklertag 2013 22CoDeSo - Ralf Schoch

Page 23: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Coding Dojo - Modi

06.05.2013 Entwicklertag 2013 23CoDeSo - Ralf Schoch

Klassiker:

• Prepari Modus

– Code Monkey

• Randori Modus

– Pilot / Co-Pilot

Wie wir es machen:

• Kaeshi-Ippon (aka Ping-Pong)

– TDD-Zyklus

Page 24: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

TDD - Test Driven Development ...

TDD Mantra (Red-Green-Refactor)

06.05.2013 Entwicklertag 2013 24CoDeSo - Ralf Schoch

Page 25: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

TDD - Test Driven Development ...

Merkmale von TDD

• Erst Test, dann Code

– Keine Zeile Produktive-Code ohne Test

– Für jeden Code muss es eine Begründung in Form eines Tests geben

– Code ist immer testbar

– Code wird in ausführbarer Weise dokumentiert

– Tests dokumentieren die Verwendung des Codes

• Fehler mit Test dokumentieren, dann beheben

– Änderung im Test dokumentieren Fehler oder geänderte Anforderungen

– Änderungen an Anforderungen werden eingecheckt

06.05.2013 Entwicklertag 2013 25CoDeSo - Ralf Schoch

Page 26: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

TDD - Test Driven Development ...

Auswirkungen von TDD

• Entwickler denken mehr über Anforderungen nach

• Nicht-Kunden Anforderungen werden dokumentiert

• Entwickler Doku passt immer zum Code

• Refactoren ist tägliche Praxis

• Code wird leichter erweiterbar

• Losere Kopplung von Komponenten

• Fehler/Unstimmigkeiten werden früher entdeckt

06.05.2013 Entwicklertag 2013 26CoDeSo - Ralf Schoch

Page 27: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

... oder Test Driven Design?

Änderung der Perspektive

• Top-Down-Ansatz

• Kundenlösung steht im Vordergrund

• Lösungs-, nicht Technikorientiert

• KISS

• Ergänzt Scrum Prozess

06.05.2013 Entwicklertag 2013 27CoDeSo - Ralf Schoch

Page 28: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Clean Code Developer (CCD)

06.05.2013 Entwicklertag 2013 28CoDeSo - Ralf Schoch

Page 29: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

CCD - Prinzipien

06.05.2013 Entwicklertag 2013 29CoDeSo - Ralf Schoch

Beispiele

• Don‘t Repeat Yourself (DRY)

• Keep It Simple, Stupid (KISS)

• Single Level of Abstraction (SLA)

• You ain‘t gonna need it (YAGNI)

• Open Closed Principle (OCP)

Page 30: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

CCD - Praktiken

06.05.2013 Entwicklertag 2013 30CoDeSo - Ralf Schoch

Beispiele

• Pfadfinderregel

• Versionskontrolle

• Täglich reflektieren

• Lesen, Lesen, Lesen

• Automatische Unittests

• Test First

Page 31: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Agenda

� Vorstellung

� Vorgeschichte

� Basics

� Beginn

� Clean Code & TDD

• Fazit

06.05.2013 Entwicklertag 2013 31CoDeSo - Ralf Schoch

Page 32: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Fazit

Was hat sich für das Team verändert?

• Team kommuniziert heute auf einem anderen Level

• Die Performance ist ungefähr gleich geblieben, obwohl inzwischen zwei Personen weniger

• Keine Einzelkämpfer mehr

• Entwickeln ist entspannter geworden

• Der neue Code ist einfacher geworden

• Er ist leichter erweiterbar geworden

• Es werden mehr Tests geschrieben

• Mehr Zeit für Weiterbildung

06.05.2013 Entwicklertag 2013 32CoDeSo - Ralf Schoch

Page 33: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Fazit

Clean Code

• Fundament

• Lebenslanges Lernen

• Stetiger Verbesserungsprozess

Test Driven Development

• Ein Rahmen für Entwickler

• Praktische Umsetzung

• Sicherstellung von Qualität

06.05.2013 Entwicklertag 2013 33CoDeSo - Ralf Schoch

Page 34: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Fazit

Coding Dojos

• Rahmen zum Lernen

• Wissenstransfer

• Kommunikation

• Gemeinsames Verständnis

• Klare Zielsetzung für Übung

• Immer Reflektieren (Retrospektive)

• Regelmässiges trainieren

• Gelerntes fliesst in Praxis ein. Nicht erzwingen!

06.05.2013 Entwicklertag 2013 34CoDeSo - Ralf Schoch

Page 35: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Quellen

Coding Dojo

http://www.codingdojo.org/

06.05.2013 Entwicklertag 2013 35CoDeSo - Ralf Schoch

Page 36: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Literatur

Clean Code Developer

http://www.clean-code-developer.de/

Clean Code – Robert C. Martin

ISBN 0132350882

The Clean Coder – Robert C. Martin

ISBN 0137081073

06.05.2013 Entwicklertag 2013 36CoDeSo - Ralf Schoch

Page 37: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Fragen

06.05.2013 Entwicklertag 2013 37CoDeSo - Ralf Schoch

Page 38: und es lohnt sich doch 05.06 - Entwicklertag · 2016-01-11 · Karlsruher Coding Dojo, VKSI • Karate Trainer 06.05.2013 Entwicklertag 2013 CoDeSo -Ralf Schoch 3. Agenda Vorstellung

Werbung

.Net Open Space Süd (6.-7. Juli 2013 )

http://karlsruhe.netopenspace.de/2013/

.Net User Group Karlsruhe

http://www.dotnet-ka.de/

Kontakt: Ralf Schoch

mail [email protected]

xing https://www.xing.com/profile/Ralf_Schoch

06.05.2013 Entwicklertag 2013 38CoDeSo - Ralf Schoch