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