Agile Developer Training (Ruby)
Beschreibung
In diesem Training kannst du agile Praktiken, wie Test Driven Development, Continuous Integration, Refactoring und Pair Programming an einem praktischen Beispiel erleben. Das Training besteht zu zwei Drittel aus Hands-on-Übungen. In 12 Sprints zu je 90 Minuten entwickeln wir eine fertige Applikation. Deine „Take-aways“ werden also Wissen, praktische Erfahrung, eine- neue Sicht der Dinge, und eine kollaborativ erstellte Beispielapplikation sein.
Nach dem Training wirst du ein tiefes Verständnis davon haben was wir unter „agil entwickeln“ verstehen. Du wirst dir ein Bild darüber machen können, ob das für dich und dein Team der richtige Weg ist. Wenn du dich dafür entscheidest, wirst du mit mehr Freude, mit besseren Produkten und mit kürzeren Entwicklungszeiten belohnt.
Entwicklungstools
Ruby on Rails in der jeweils aktuellen stabilen Version,
Cucumber, RSpec, Selenium, Test::Unit
Voraussetzungen
Erfahrung in der Entwicklung von Ruby on Rails Applikationen,
Scrum for Teams Training oder vergleichbare Kennnisse
Zielgruppe
Entwickler, Tester und Analytiker mit Entwickler-Skills
Inhalte
- Agile Architektur und Design
- Test Driven Development
- Behavior Driven Development
- Continuous Integration und Deployment
- Agile Team Collaboration
- Clean Code und Refactoring
Das erste Feature
Inhalt
- Scrum Framework und Agile/XP Methoden
- Vorteile von TDD
- Vorstellung des Beispiel-Backlogs
- Arbeitsgruppe installieren
Ziel
- Auffrischen der Scrum-Methodologie
- Grundlegendes Verständnis von Agilen/XP Methoden und der Synthese mit Scrum
- Verständnis: Was bringt TDD?
- Verständnis des Beispiel-Backlogs
- Selbstorganisation der Gruppe als Grundlage für den Kurs
- Erlebnis von Pair Programming und internem Coaching
Behaviour Driven Development: Von der Story zum Code
Inhalt
- Gute User Stories
- Was ist BDD?
Ziel
- Schreiben von guten User Stories
- Einführung in BDD
- Schreiben von Features, Scenarios und Verhalten (Behaviour)
Test Driven Development
Inhalt
- Einführung in TDD
- Stunde, Minute, Sekunde: XP Zyklen und vergleichbare Testzyklen
- Rot-Grün-Sauber: Der Testzyklus in der Praxis
- Automatisiertes Testen
Ziel
- Übersicht über TDD und Fachbegriffe
- Verschiedene Arten von Tests (Unit Tests, Funktionale Tests, Integrationstests)
- Unterschiede und Integration von BDD
- Schreiben eines Unit Tests
- Automatisieren des Testzyklus
- Implementierung des notwendigen Codes
- Verstehen von BDD und TDD als Dokumentation und Arbeitsgrundlage
- Refactoring
Mocks and Stubs
Inhalte
- Unit Test Paradigma: „Do not touch the wire!“
- Abgrenzung des „System Under Test“ von anderen Systemen
- Fixtures vs. Factories vs. Stubs
- Alternativen zu Mocks und Stubs
Ziel
- Abgrenzung von Unit Tests gegenüber Functional und Integration Tests
- Verstehen des Unterschiedes zwischen Mocks und Stubs
- Verstehen des SUT, Grenzen
- Vermittlung von Wissen über Fixtures, Factories und Stubs
- Vermittlung von Wissen über Alternativen
- Implementation eines Unit Tests mit Stubs und Mocks
- Implementation eines Unit Tests mit Fixtures/Factories
Gute Tests
Inhalte
- Welcher Test wird wann gebraucht?
- Was bedeutet Test Coverage? Wie wenig ist vertretbar?
- Wie erkenne ich „Test Smells“?
- Wie testet man vorhandene Systeme?
Ziel
- Klare Differenzierung zwischen verschiedenen Arten von Tests und deren Einsatz
- Test Coverage als internes Tool zur Veranschaulichung von Effizienz der Tests
- Verstehen von Zusammenhängen zwischen Test Coverage und Qualität
- Erkennen von schlechten Tests und Ungereimtheiten
- Grundlegende Einsicht in Testen vorhandener Systeme
- Refactoring der eigenen Tests im Hinblick auf gerade erworbenes Wissen
Architektur und Design
Inhalte
- Macht Agile Planen überflüssig?
- Wann machen wir Architektur? Wer ist verantwortlich?
- Best Practices in Action: Definition of Done
- Unbekanntes Land betreten mit „XP Spikes“
- Planen und Schätzen
Ziel
- Schaffen der Grundlagen für eine „Definition of Done“
- Erweitern des Verständnisses über Architektur in Agilen Projekten
- Erforschen von unbekannten Technologien mittels Spikes
- Integration von möglichst allen Faktoren in Planung und Schätzen
- Diskussion/Workshop über Agiles Planen
Continuous Integration
Inhalte
- Was ist Continuous Integration (CI)?
- Welche Werkzeuge braucht das Team für funktionierende CI?
- Welche Technologien gibt es?
- Welche Risiken ergeben sich durch „Weglassen“ von CI?
Ziel
- Vermittlung der Grundlagen von CI
- Übersicht über Werkzeugunterstützung und Mindestanforderungen
- Übersicht über vorhandene CI-Tools
- Verständnis von CI als integraler Bestandteil des Entwicklungszyklus
Refactoring und Continuous Deployment
Inhalte
- TDD ohne Refactoring: Geht denn das?
- Keine Angst vor Änderungen – wie helfen meine Tests mit Refactoring?
- Refactoring als Grundlage Agiler Prinzipien
- Continuous Deployment – Risiko oder Fortschritt?
Ziel
- Verstehen des Begriffes „Refactoring“
- Verstehen des Einflusses auf Entwicklungszyklen und Codequalität
- Einsatz von Tests und Source Code Management für angstfreies Entwickeln
- Verstehen von Refactoring und CI als Grundlage für CD und deren Auswirkungen
- Durchspielen von diversen CI- und Refactoring-Szenarien
Clean Code Development
Inhalte
- „Code Smells“ oder: Was riecht hier so unanständig?
- Wartbarkeit und schnelle Entwicklung: Ein Widerspruch?
- DRY oder „Das kenne ich doch schon?“
- Warum sich Pfadfinder das Leben leichter machen.
Ziel
- Grundlegendes Verständnis von „Sauberem Code“
- Wissen über die wichtigsten Indikatoren von gutem Code.
- Praktische Beispiele: Wie verbessere ich Code?
Even Cleaner Code
Inhalt
- Wie viel Dokumentation brauche ich wo?
- KISS Prinzip
- Optimieren?
- Komposition über Vererbung
- Root Cause Analysis
- SLA, SRP und SoC
- Reviews
- SOLID Prinzipien: Interface Segregation, Dependency Inversion, Liskov Substitution
- Erweiterte Prinzipien: OCP, „Tell, don't ask“, Information Hiding, Law of Demeter, IoC
- YAGNI, KomponentenarchitekturZiel
- Wissen über sinnvollen Einsatz von Dokumentation
- Wissen über vorgestellte Prinzipien und deren praktische Umsetzung
- Testen des erworbenen Wissens anhand der Entwicklung der vergangenen Tage
- Diskussion oder Workshop über Bekanntheitsgrad und Einsatz von Prinzipien
Trainer |

Anton Bangratz
|