Die Prinzipien #4 und #6 im agilen Manifest https://agilemanifesto.org/principles.html besagen:
- "Geschäftsleute und Entwickler müssen während des gesamten Projekts täglich zusammenarbeiten".
- "Die effizienteste und effektivste Methode, Informationen an ein Entwicklungsteam und innerhalb eines Teams zu übermitteln, ist das Gespräch von Angesicht zu Angesicht".
Eines der 4 agilen Grundprinzipien besagt "Individuen und Interaktionen vor Prozessen und Tools".
Mit der Globalisierung, den Fortschritten in der Technologie, der Fähigkeit, Talente/Fähigkeiten zu finden, und vor allem den Kostenfaktoren sind global verteilte Teams unverzichtbar. Wenn man verteilten Teams rät, die agile Methode anzuwenden, wird daraus das Distributed Agile Delivery Model.
Das Distributed Agile Delivery Model ist ein globales Agile Delivery Framework, das sich auf die Multi-Shore-Projektabwicklung konzentriert und sowohl verstreuten als auch dezentralen Teams die erfolgreiche Bereitstellung von Geschäftswerten ermöglicht.
Mit verteilter agiler Entwicklung ist es möglich, neue globale Märkte zu erschließen und globale Talente bestmöglich zu nutzen, während gleichzeitig die Kosten gesenkt werden können. Die Entscheidung, Ihr Projekt zu verteilen, sollte eine bewusste Entscheidung sein, und der Entscheidungsträger muss sich darüber im Klaren sein, dass er damit die Erfolgswahrscheinlichkeit des Projekts beeinträchtigt, die Lieferfrist verlängert, die Leistung des Teams verringert und seine Funktionsstörung erhöht. Bevor Sie sich für die Verteilung Ihrer Teams entscheiden, müssen Sie sich über das Verhältnis von Risiko und Nutzen im Klaren sein.
Die Verwendung der agilen Methodik bei der verteilten Softwareentwicklung bietet viele Vorteile. Sie hilft bei der Bewertung und Messung des Projektfortschritts, und Probleme im Projekt lassen sich leichter in einem frühen Stadium erkennen.
Agile Teams arbeiten an User Stories und nicht an den komponentenbasierten Aufgaben. Es sollten Anstrengungen unternommen werden, die Arbeit nach User Stories und nicht nach Komponenten zu verteilen. Agile Entwicklung ist schwierig und verteilte Entwicklung macht die Softwareentwicklung noch schwieriger. Das Team sollte jemanden haben, der es coacht und anleitet, damit es sich auf dem Weg der agilen Praktiken bewegt.
Daher können die modifizierten agilen Techniken, wenn sie bewusst eingesetzt werden, nützlich sein, um die Herausforderungen der verteilten Softwareentwicklung zu bewältigen. Die beiden Softwareentwicklungsmethoden, d.h. die agile und die verteilte Entwicklung, können kombiniert werden, um der Softwareindustrie durch den Einsatz optimierter Ressourcen im Vergleich zu den traditionellen Entwicklungsmodellen beträchtliche Vorteile in Bezug auf die Produktion von qualitativ hochwertiger Software zu bieten.
Wann funktioniert verteilte Agilität?
- Identifizieren Sie, was offshore gebaut werden kann, auch wenn es nicht für alle Arten von Projekten geeignet ist.
- Aufbau einer Partnerschaft mit dem Kunden bei der Durchführung der geografisch verteilten Projekte.
- Projektkontinuität und Wissenserhalt - Kenntnis der früheren Phase oder der Spezifikationen, falls vorhanden.
- Definierte Ergebnisse sind der wichtigste Faktor für eine erfolgreiche Lieferung. Wenn die zu liefernden Ergebnisse nicht klar sind, kann das Projekt sehr wohl in einen Strudel geraten.
Wir haben es geschafft, aber wie? - Verteilte Agilität ist nicht länger ein Oxymoron.
Einsatz von Technologie und innovativen Best Practices zur Überwindung der Grenzen der räumlichen Nähe.
Die Fortschritte in der modernen Kommunikation und die Verbreitung neuer Arbeitsformen, wie z.B. Remote- und verteiltes Arbeiten, zwangen uns dazu, neue Wege zu finden, um die Essenz der Agilität beizubehalten.
Kommunikation:
- Optimieren Sie die Kommunikation im Offshore-Team und die Entwicklungsinfrastruktur.
- Benötigen Sie gute Vermittler/Koordinatoren - um Kommunikationsprobleme aufgrund von sprachlichen und kulturellen Unterschieden zu lösen. Engagierte Offshore-Support-Mitarbeiter in jedem Team, um Fragerunden zu minimieren.
- Ein persönliches Treffen ist die einzige Möglichkeit, Vertrauen aufzubauen. Viele Reisen/Austausche - Es ist schwierig, mit jemandem zu arbeiten, den man nicht gesehen hat, und führt zu Missverständnissen.
- Verwenden Sie Software für Videogespräche wie Skype (für Unternehmen), Polycom, GoToMeeting und Zoom.
- Verwenden Sie ein Chat-basiertes System zur Teamzusammenarbeit wie HipChat oder Slack.
- Führen Sie ein Online-System zur Aufzeichnung von Informationen ein, z.B. ein Wiki oder ein Problemverfolgungssystem. Auf diese Weise hat jeder den gleichen Überblick über die Informationen. Eine Kombination aus Jira und confluence-ähnlichen Tools ist in diesem Bereich hilfreich.
- Sehen ist Glauben - Release Plan Walls - Story Card Walls - Iteration Management Walls - Retrospektiven - Bunte Postkarten - Build Tree etc.
Planung:
- Die gemeinsame Durchführung von Release-Planung, Sprint-Planung und täglichem Scrum durch das Team führt zu einer ähnlichen gemeinsamen Vision.
- Schätzungen - Lassen Sie die Entwickler ihre Aufgaben auswählen und schätzen. Lassen Sie die Entwickler ihre Schätzungen regelmäßig aktualisieren (z.B. jeden Tag bei Stand up).
- Teilen Sie Aktivitäten zwischen Onsite/Offshore - nicht nur Entwicklung, sondern auch Business Conception, Detailed Design, Testing, etc.
- Beziehen Sie das gesamte Team in die Release-Planung, Iterationsplanung, Überprüfung und Retrospektiven ein.
- Formalisierte Nachverfolgung - Genaue Dokumentation und kontinuierliche Nachverfolgung von Problemen/Ansätzen und Kommunikationssträngen.
- Erstellen Sie einen strengen Normierungs- und Chartering-Plan, um eine hohe Qualität zu erreichen.
- Definieren Sie konsensbasiertes Design, Coding-Standards, Code-Reviews, Scrum-of-Scrums, Pair Programming, Quellcode-Kontrollphilosophie, Mechanismen zur Fehlerverfolgung, Definition von "Fertig" und "Erledigt" und mehr.
Ausführung:
- Führen Sie die ersten 3-4 Sprints mit dem gesamten Team am lokalen Standort durch.
- Viel Disziplin - Der Aufbau muss gelingen! (erfordert die Entwicklung einer Build-Kultur)
- Etablieren Sie kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) mit hoher Testabdeckung in allen Teams (DevOps-Kultur).
- Idealerweise senden Sie funktionale Tests zusammen mit den Anwendungsfällen - Lassen Sie sie von einem separaten Team schreiben und automatisieren.
- Die meisten Hindernisse müssen im Kontext und im Umfeld des jeweiligen Unterteams bearbeitet werden.
- Verbessern Sie den Teamgeist/die Arbeitszufriedenheit - Ermöglichen Sie Offshore-Mitarbeitern den Aufstieg - Teilen Sie das globale Wissen und verbessern Sie so die Effizienz.



Verfasst von
Ganesh
Engineering Manager at coMakeIT
Unsere Ideen
Weitere Blogs
Contact



