Distributed Software Development: Softwareentwicklung an mehreren Standorten
Obwohl Erfahrungen zeigen, dass das Zusammenführen der Teammitglieder im Allgemeinen ein entscheidender Erfolgsfaktor für jedes Projekt ist, gibt es auch verschiedene Gründe für die über mehrere Standorte verteilte Softwareentwicklung. Dazu gehören: ein Mangel an spezifischen Ressourcen oder Kenntnissen, Anforderungen der lokalen Behörden, 7x24-Stunden „Rund-um die-Uhr“-Wartungszyklen und vieles mehr. Die Erfolge vieler komplexer Open Source-Projekte mit weltweit verteilten Teams haben gezeigt, dass geographische Distanzen via Internet überwindbar sind. Trotzdem ist es wichtig zu verstehen, dass die verteilte Entwicklung gewisse Einschränkungen für Software-Engineering- und Managementprozesse bedeutet.
Für Projekte, die große, global verteilte Teams erfordern, hat Exigen Services eine Methode entwickelt, die maximale Produktivität bei minimalen Risiken und Overhead sichert. Wir führen solche Projekte seit acht Jahren durch und werden von Analysten und Marktexperten als Leader bei der Anwendung von Agile Methodologien für verteilte Softwareentwicklung bestätigt. Die wichtigsten Elemente der verteilten Softwareentwicklung sind:
Teambildung
In einer verteilten Entwicklungsumgebung ist es besonders wichtig, das Gefühl eines gemeinsamen Teams mit einem gemeinsamen Ziel über alle Standorte hinweg zu schaffen und zu kultivieren. Es ist bekannt, wie leicht verschiedene Teams in eine „wir gegen sie“-Rivalität verfallen, insbesondere, wenn unterschiedliche Kulturen involviert sind. Regelmäßige gegenseitige Besuche aller Standorte, insbesondere am Anfang des Projekts und während des Wissenstransfers, fördern eine gute teaminterne Kooperation, da sich die Teammitglieder auch persönlich kennenlernen.
Im Gegensatz zu den üblichen Vorstellungen haben wir gelernt, dass die Zuteilung der vollen Verantwortung für eine Systemkomponente an einen Standort nicht so gut funktioniert, wie die Bildung geographisch verteilter Teams – auch für einzelne Aufgaben. Am Anfang des Projekts erfordert die Abstimmung eines produktiven Prozesses für den Wissenstransfer der Teammitgliedern unterschiedlicher Standorte zwar eine gewisse Zeit, später jedoch reduziert diese Methode den Aufwand für die Integration erheblich.
Kommunikation
Üblicherweise müssen verteilte Entwicklerteams nicht nur die geographischen Entfernungen, sondern auch die Zeitunterschiede überwinden. Wenn sich alle Teams in Europa befinden, ist es relativ einfach, die Arbeitszeiten so zu verschieben, dass alle Teams simultan arbeiten. Die Entwicklungszentren von Exigen Services arbeiten in den GMT+2 (Riga, Lettland und Vilnius, Litauen) und GMT+3 (St. Petersburg und weitere Standorte in Russland und Ukraine) Zonen. Dies ermöglicht die Nutzung moderner Kommunikationsmittel, wie IM, Telefon- und Videokonferenzen, die – im Gegensatz zu Mailinglisten – ohne Verzögerung funktionieren. Wichtig ist auch die Definition einer Art von SLAs für den Zugang zu Kompetenzträgern in allen relevanten Bereichen. Denn sogar kurze Verzögerungen können ein anderes Team viele Arbeitsstunden kosten.
Information
Das letzte, aber nicht weniger wichtige Element, ist die Verfügbarkeit von Information. Um Zugang zu einem einheitlichen Repository des Quellcodes sowie einem Projekt-Tracking- oder Collaboration-Tool für die Zusammenarbeit aller beteiligen Teams aufzubauen, ist oft eine VPN-Kommunikation notwendig. Da bei manchen Unternehmen die Klärung der damit verbundenen Sicherheitsfragen Monate dauern kann, sollten solche Infrastrukturaktivitäten ganz am Anfang des Projekts angestoßen werden.
Das Fehlen der persönlichen Kommunikation der verteilten Team in einigen Bereichen, sollte durch eine aktuelle Dokumentation kompensiert werden. Dabei sollte der Fokus auf den für das Team wirklich nützlichen Dokumente oder Wiki-Artikel gelegt werden. Diese müssen für alle Beteiligten, entsprechend der sich ändernden Projektumgebung, leicht zugänglich und änderbar sein.
