Agile Softwareentwicklung ermöglicht uns, wenn sie funktioniert:
- Als Organisation flexibler auf geänderte Marktanforderungen und Innovationen der Konkurrenz zu reagieren
- Als Entwickler mehr Verantwortung und Gestaltungsmöglichkeiten zu haben
- Deployments, Fehlerbehebung und Betrieb stressfreier zu gestalten
- Keine großen Releases mit Überstunden und Death-Marches mehr zu haben
- Mit weniger Aufwand mehr Wert zu liefern und damit früher Returns für die investierte Zeit und Resourcen zu bekommen
Video Transkript
Mob Programming—oder, wie ich es lieber nenne, Ensemble Programming—ist effizienter, als wenn jeder für sich arbeitet! #NoEstimates gibt uns bessere Vorhersagbarkeit als Schätzungen!
Du glaubst mir nicht? Das ist OK. Diese Aussagen stimmen auch nicht immer. Aber können sie wenigstens manchmal zutreffen? Und wenn ja, unter welchen Voraussetzungen?
Im Umfeld der agilen Softwareentwicklung sind in den letzten Jahren viele Praktiken entstanden, die wir unter Agile Engineering zusammenfassen können; Wie zum Beispiel Pair Programming, Continuous Integration, Test-Driven Development und auch, wie vorher erwähnt, Ensmble Programming oder #NoEstimates.
Manche davon sind mittlerweile weit verbreitet, andere sind sehr umstritten, wie zum Beispiel Pair Programming: Ist es nun effizient oder Zeitverschwendung?
Um das beantworten zu können, müssen wir uns darüber klar werden, welche Ziele die agile Softwareentwicklung verfolgt, welche Vor- und Nachteile gewisse Praktiken haben und wann sie sinnvoll eingesetzt werden können.
Mein Name ist David Tanzer und ich helfe seit fast zwei Jahrzehnten Entwicklungsteams dabei, bessere Software in höherer Qualität schneller zu liefern. In dieser Serie, "Quick Glance At: Agile Engineering", erkläre ich agile Engineering-Praktiken, wie man sie erlernen kann und was notwendig ist, um sie sinnvoll und effektiv einzusetzen.
Um das zu erreichen, müssen wir frühzeitig und regelmäßig funktionierende Ergebnisse liefern. Diese führen wir echten Benutzern, Kunden und anderen Stakeholdern vor, um schnelles und gutes Feedback zu bekommen. Und wir müssen unsere Ergebnisse so gestalten, dass wir flexibel und schnell unsere Pläne ändern können.
Und das alles ist nicht einfach. Wir brauchen Architekturen und Softwaredesigns, die so einfach sind, dass wir schnell liefern können, und die wir trotzdem jederzeit ändern können. Wir müssen höchste Qualität produzieren, um jederzeit funktionierende Software vorzeigen zu können. Und wir müssen Abläufe in der Entwicklung, beim Deployment und im Betrieb automatisieren, damit wir dieses Tempo halten können.

"Agile Engineering" beschreibt verschiedene Vorgehensweisen, Techniken und Praktiken, die uns dabei helfen, "agil" Software zu entwicklen. In den folgenden Kapiteln erkläre ich,
- Welche Praktiken und Vorgehensweisen es gibt
- Wie diese deinem Team helfen, besser und effizienter Software zu entwicklen
- Welche Fallstricke und Abwägungen ihr beachten solltet
- Wie ihr diese Praktik im Team einführen könnt
Dieser Kurs ist für dich...
- wenn du Teil eines Entwicklungsteams bist
- wenn du wissen willst, was Agile Engineering genau ist
- wenn du dich für Test-Driven Development, Pair Programming, Continuous Delivery, etc. interessierst
- wenn du bessere Software schneller und auch nachhaltiger entwickeln willst
Kapitel 1: Warum Agile Engineering?
Um die Vorteile von agilen Vorgehensweisen wirklich realisieren zu können, brauchen wir eine Engineering-Kultur, die ganz verschieden ist davon, wie man früher Software gebaut hat. Und die nur in wenigen Organisationen durchgängig vorherrscht.
In diesem und den folgenden Teilen des Kapitels "Warum Agile Engineering?" erkläre ich, warum es eine eigene Kultur und spezielle Vorgehensweisen und Praktiken in der Entwicklung braucht, um Agilität erreichen zu können.