Agile Developer Skills: Agenda

Ziele der Schulung

  • Wie konvertiert das Team eine Anzahl von User Stories in ein potentiell auslieferbares Inkrement des Produkts?
  • Wie erkennt das Team, wie die User Story umgesetzt wird, welche Arbeitsschritte (Tasks) daraus abgeleitet werden müssen?
  • Wie bestimmt man, wann eine User Story fertig ist („done“)?
  • Wie entwickelt und dokumentiert ein Scrum-Team Richtlinien und Standards für „done“ (Team Charter)?
  • Wie vermeidet man „technische Schulden“ (technical debt) und was sind die Auswirkungen solcher Schulden?
  • Wie wird bestimmt, wer welche Aufgaben bei der Realisierung des Produkt-Inkrements übernimmt; welche Rollen gibt es im Team?
  • Welche Arten von Tests gibt es in der agilen Entwicklung, welche Rolle haben sie, wie und wann werden sie entwickelt und eingesetzt?
  • Wie setzt man eine kontinuierliche Integration mit automatisierten Unit- und Akzeptanztests auf und hält sie am Laufen?
  • Testgetriebene Entwicklung (TDD)
  • Akzeptanztest-getriebene Entwicklung (ATDD)
  • Pair-Programming-Techniken im Team
  • Refactoring, Patterns und integrierte Nutzung im TDD-Zyklus
  • Emergente Architektur und ihr Nutzen für eine inkrementelle Entwicklung
  • Reporting und Messung von Geschwindigkeit (velocity) des Teams
  • Hindernisse und Beseitigung derselben

Lehrmethoden

  • Die agilen Praktiken stehen nicht in einem luftleeren Raum. Sie sind in die Entwicklung eines Produktes eingebettet. Als Mitglied eines Teams absolvieren die Teilnehmer fünf Sprints.
  • Kurze konzeptionelle Abschnitte, die sofort um eigene Erfahrungen ergänzt werden
  • Vertiefung der Konzepte und Praktiken nach Bedarf und Neigung der Teilnehmer
  • Keine Kompromisse: die besten agilen Praktiken werden konsequent angewendet.

Inhaltsblock: Architektur und Design

Lernziele

  • Untersuchung von Architektur und Design mit dem primären Fokus auf den Prinzipien, die eine bessere Testbarkeit und einfacheres Refactoring ermöglichen
  • Prinzipien von Architektur in einer agilen Umgebung
  • Design-Praktiken in einem agilen Team
  • Prinzipien und Vorgehensweisen, die eine bessere Testbarkeit und einfacheres Refactoring ermöglichen
  • Anti-Patterns

Schritte

  • Emergente Architektur Live als Teil der Aufgabenstellung
  • Clean code

Inhaltsblock: Zusammenarbeit

Lernziele

  • Ein umfassendes Verständnis zur Art, wie agile Teams zusammenarbeiten. Das umfasst u.a.:

    • Zusammenarbeit als ein Team
    • Einbeziehen des Kunden in den Prozess
    • Pair Programming

Schritte

  • Diskussion and Reflexion über das Wesen der Zusammenarbeiten bei agilen Methoden
  • Jeder Teilnehmer arbeitet als Mitglied eines Scrum Teams während des gesamten Kurses
  • Wir raten dringend zur Nutzung von Pair Programming während des Kurses.
  • Wir veranstalten „Programmier-Dojos“ am ersten und zweiten Abend
  • Wir führen nach jedem der fünf Sprints im Kurs eine Retrospektive durch.
  • Backlog-Workshops mit dem Product Owner
  • Gemeinsame Erarbeitung von Akzeptanzkriterien

Inhaltsblock: Testgetriebene Entwicklung

Lernziele

  • Testgetriebene Entwicklung (TDD) als Design-Aktivität
  • Der TDD-Zyklus: rot, grün, Refactoring
  • Unit-Testen: Prinzipien, Praktiken, Vorgehensmuster
  • Was macht einen guten Test aus?

Schritte

  • Eine Coding Kata pro Tag – TDD-Üben als integraler Bestandteil der täglichen Arbeit
  • Coding Dojo
  • TDD als durchgängige Praktik beim Entwickeln
  • TDD als Treiber für Design-Veränderungen

Inhaltsblock: Refactoring

Lernziele

  • Wann soll man refaktorisieren?
  • Refactoring-Ziele: Wartbarkeit und Verständlichkeit
  • Problemzonen im Code (Code Smells)

Schritte

  • Refaktorisieren von schlechtem Code
  • Sauberer Code als Teil der Definition of Done

Inhaltsblock: Kontinuierliche Integration

Lernziele

  • Kontinuierliche Integration reduziert Integrationsrisiken und verbessert Lieferfähigkeit.
  • Bauen und Testen der Software mit einem einzelnen Kommando(„single command build“)
  • Erstellen von automatisierten, selbst-testenden und schnellen Builds
  • Verbessern der Transparenz und Sichtbarkeit durch automatisches Deployment

Schritte

  • Automatischer Build umfasst Kompilat, Unit-Tests und Story-Tests
  • Integration als Teil der Definition of Done