Termine‎ > ‎

Coding Dojo

Wir planen ca. alle 4 Wochen einen Coding-Dojo durchzuführen. 

Wann findet der Coding-Dojo statt?

Am besten mal bei uns im Kalender nachschauen.

Hintergrund

Wie wird man ein guter Musiker?
Es ist hilfreich theoretische Wissen wie beispielsweise Noten zu kennen oder sein Instrument sehr gut zu kennen. Es ist hilfreich ein gehöriges Stück Talent mitzubringen. Aber das Ultimative, die größten Fähigkeiten, kommen aus der Praxis.
Übung, Übung, Übung der Theorie - immer und immer wieder mit einem reflektierenden Blick sowie Feedback von außen lässt einen Stück um Stück zu einem besseren Entwickler werden.

Wie wird man ein guter Sportler?
Sicher, eine gute Fitness und das Talent hilft, aber große Athleten trainieren Stunde um Stunde, Tag um Tag - Praktisch!

Was tun Softwareentwickler?
Wir arbeiten ständig in Projekten. Wir schulen unser Wissen, oft ohne das nötige Maß an Reflektion und Feedback. Wie arbeiten häufig an kleinen Teilen der Gesamtlösung. Wir trainieren nicht, wir produzieren! Wie können wir mehr trainieren, um unsere Fähigkeiten optimal auszubauen? Der erste Schritt ist Trennung von Softwareproduktion und Training. Wir benötigen praktische Trainingseinheiten!

Was ist eine gute Trainingseinheit?

Die Code-Kata! Code-Katas bringen diese praktischen Elemente in die Softwareentwicklung. Eine Kata ist eine Übung aus dem Karate in der bestimmte Aufgaben immer und immer wieder ausgeführt werden, um seine Fähigkeiten Schritt für Schritt auszubauen.

Du benötigst Zeit und eine simple Anforderung die Du trainieren kannst. Du benötigst die Möglichkeit auf einem komfortablen Weg Fehler machen zu können und durch viele Versuche einen guten Weg zu finden. Du benötigst die Möglichkeit der Selbstreflektion und des Feedbacks von außen, um Deine Arbeit zu Optimieren. Und das ganze ohne Projektdruck!

Dies sind die entscheidenden Gründe, warum wir separate Trainingseinheiten benötigen und nicht im Projekt trainieren sollten. Selbstverständlich solltest du zu Beginn des Trainings immer ein gutes Thema wählen, um keine Dinge zu tun, die du kannst, sondern Dinge die du noch nicht kannst.

Die Intention hinter Code Katas ist sehr einfach. Jedes Training ist eine kurze Einheit von 30 Minuten bis 2 Stunden in der eine Lösung für ein einfaches Problem gesucht wird. Nach dem Training muss eine Lösung präsentiert werden können. Es gibt verschiedene Lösungsansätze und Lösungsmöglichkeiten. Die Lösungsmöglichkeiten sind bewusst offen, manche  sollen das Nachdenken über die Programmierung fördern und Raum für Architektur- bzw. Designentscheidung geben, bei anderen ist eine gute Abstimmung oder Anforderungspriorisierung nötig. Es gibt keine Musterlösung!

Was ist das Coding Dojo?

Ein Coding Dojo ist ein Treffen von Entwicklern um eine Programmieraufgabe, die Code-Kata, zu lösen. Das Ziel des Treffens ist es, in einer gelösten, lockeren Atmosphäre gemeinsam neues zu erlernen und seine Fähigkeiten mit Hilfe von Übungen in einer geschlossenen und sicheren Umgebung sukzessive zu verbessern.
  • Nicht konkurrenzbetont, Gemeinschafts- und Spassorientiert
  • Alle Wissensgrade sind Willkommen (vom Einsteiger bis zum erfahrenen Softwareentwickler)
  • Ein sicherer Ort um Ideen zu testen und Gedanken zu kommunizieren
  • Lösungen in einem Team zu erarbeiten, gemeinsam umzusetzen und zu präsentieren

Möglicher Ablauf

(Wir experimentieren mit anderen Abläufen, zum Beispiel einem Präsentationsteil am Anfang.  )

Ein Dojo-Organisator stellt Katas vor und morderiert das Treffen
  1. Retrospektive des letzten Treffen. Was hat gut funktioniert? Was war spannend? Was war frustrierend? Was lässt sich verbessern? 20 Minuten Timebox
  2. Code-Katas Katalog für das aktuelle Treffen vorstellen 20 Minuten Timebox
  3. Die Runde entscheidet sich für eine Trainingsaufgabe und legt einen Zeitrahmen von maximal 90 Minuten fest
  4. Umsetzung der Code-Kata 
  5. 15 Minuten Pause
  6. Umsetzung der Code-Kata
  7. Präsentation/Review/Retrospektive der Code-Kata Lösung. Was hat gut funktioniert? Was war spannend? Was war frustrierend? Was lässt sich verbessern? ~20 Minuten

Ein Entwickler erklärt sich bereit, den vorgeschlagenen Lösungs-Code einzutippen

  • Ein Entwickler, tauschen ist möglich, tippt ausschließlich das ihm diktierte ein (Driver)
  • Der "Driver" braucht sich nicht aktiv an der Lösung beteiligen
  • Alle anderen Anwesenden arbeiten aktiv an den Lösungen und diktieren den notwendigen Code und die nächsten Schritte

Vorbereitete-Kata

  • Ein Entwickler zeigt die Lösung für eine Problemstellung von "Scratch", in kleinen Schritten
  • Jeder Schritt sollte für alle beteiligten Sinn machen
  • Jeder der einen Schritt nicht 100% nachvollziehen kann sollte unterbrechen

Randori-Kata

  • Die Problemstellung wird von einem Entwickler-Duo gelöst (Driver und Copilot)
  • Jeder ist eingeladen sich an der Lösung zu beteiligen
  • Jedes Entwicklerduo hat 5 (oder 7 Minuten) Zeit, um die Lösung voranzutreiben

Sparring-Kumites

  • Die selbe Aufgabe wird von 2 Teams parallel gelöst
  • Das Vorgehen  gleicht dem der Randori-Kata
  • Die Lösung wird sich gegenseitig präsentiert

Coding-Dojo Ergebnisse

  • 31.03.2010 - Coding-Dojo I
    Umsetzung der FizzBuzzKata
  • 04.05.2010 - Coding-Dojo II
    Umsetzung der LOCCounterKata

Quellen

Die Beste Anlaufstelle zum Thema is: http://codingdojo.org/, von hier haben wir die meisten Informationen.
CodeKata-Blog von Dave Thomas (Pragmatic Programmer) http://codekata.pragprog.com/.