Global denken, lokal programmieren: das Erfolgsgeheimnis von verteilten Teams

Verteilte Teams und Remoteniederlassungen gehören zum modernen Unternehmensumfeld. Aber können sie Teil einer erfolgreichen agilen Kultur sein? Wir glauben, ja.

Dan Radigan Von Dan Radigan
Themen durchsuchen

Die agile Entwicklung war ursprünglich für geschlossene Teams oder für Teams vorgesehen, die am gleichen Bürostandort arbeiten. Gemäß der Überzeugung, dass "die effizienteste und effektivste Methode für die Übermittlung von Informationen an und in einem Entwicklerteam das persönliche Gespräch ist", wurde bei den ersten agilen Teams davon ausgegangen, dass ihre Mitglieder in unmittelbarer Nähe arbeiten sollten.

Aber heute haben die meisten Unternehmen einige oder mehrere verteilte Teams. Das ist nicht nur ein Trend, sondern durchaus sinnvoll. Verteilte Teams können rund um die Uhr an Projekten arbeiten und vielversprechende Talente in weniger umkämpften Märkten finden. (Ganz zu schweigen davon, dass Talente leichter gebunden werden können, wenn sie am bevorzugten Ort arbeiten.) Aber die Vorteile verteilter Teams machen einige Kompromisse erforderlich. Für viele verteilte Teams ist es schwierig, die agilen Verfahren der persönlichen Interaktionen umzusetzen.

Verteilte Softwareteams stehen zudem vor den folgenden Herausforderungen:

  • Koordination über Zeitzonen hinweg
  • Aufbau von guten Beziehungen zwischen Teammitgliedern, die nicht im selben Büro arbeiten
  • Zusammenarbeit zwischen unterschiedlichen Entwicklungskulturen
  • Planung von Meetings oder informellen Besprechungen, wenn beide Teams nur für einige Stunden (oder weniger) gleichzeitig online sind

Das sind reale Probleme, die aber nicht unlösbar sind. Gehen wir einige der Strategien durch, die uns helfen, die Distanz zwischen lokalen und Remotebüros zu überbrücken. Außerdem erfährst du mehr über Ideen, die andere potenzielle Probleme abschwächen.

Strukturierung globaler Teams

Gute Softwarearchitektur macht modulares Design zwingend erforderlich, deshalb solltest du dein Team auf dieselbe Weise strukturieren. Jede Niederlassung sollte einzelne Technologieteile eigenständig entwickeln, sodass nur ein Minimum an Zusammenarbeit mit Teams in anderen Zeitzonen nötig ist und die Teams im Allgemeinen autonom arbeiten. Wenn bei einem Projekt Teams von verschiedenen Standorten zusammenarbeiten müssen, können sie sich auf ihre Integrationspunkte und APIs konzentrieren.

Code-Reviews spielen ebenfalls eine wichtige Rolle. Da die Teammitglieder zu verschiedenen Zeiten online sind, sorgt eine Verteilung des Codewissens zwischen den Büros dafür, dass Support und Wartung wesentlich einfacher werden. Wenn ein Produktionsproblem in der Zeit auftritt, in der das Team nicht online ist, kann ein anderes Büro einspringen und das Problem beheben – dank dem Know-how, das es aus team- oder standortübergreifenden Code-Reviews gewonnen hat.

Aufbau von Beziehungen

In jedem Programm, insbesondere in agilen Programmen, sind solide Beziehungen im gesamten Team von großer Bedeutung. Eine persönliche Verbindung sorgt für Vertrauen, minimiert falsche Erwartungen, erleichtert die selbstständige Organisation und steigert die Moral. Nimm dir in deinem Büro Zeit, alle Personen in deinem Team kennenzulernen. Und versuche das so weit wie möglich auch mit deinen Kollegen in Remotebüros. Persönliche Kontakte sind wichtig. Je enger diese werden, umso eher betrachtest du diese Kollegen nicht nur als entfernte Kollegen aus unbekannten Orten.

Profitipp:

Bei Atlassian postet jeder neue Mitarbeiter einen "Vorstellungs-Blog" auf unserer internen Confluence-Instanz, dem Content-Collaboration-Tool von Atlassian. In dem Blogpost stellt sich der neue Mitarbeiter sowohl mit beruflichen als auch privaten Details vor (Hobbys, Interessen, Familie usw.), was wirklich dazu beiträgt, Brücken zwischen den Büros zu schlagen. Je mehr wir voneinander als Menschen wissen, umso besser arbeiten wir als Team zusammen.

Aber in erster Linie geht nichts über ein persönliches Meeting. Teammitglieder in jedem Büro profitieren von regelmäßigen persönlichen Gesprächen, zu denen sowohl Videokonferenzen als auch Besuche in Remotebüros gehören.

Videokonferenztools wie Zoom sind sehr hilfreich, um Brücken zwischen Teams zu schlagen, insbesondere bei verteilten Agile-Teams. Teams, die sich auf Zoom verlassen, sollten jedoch bestimmte Einschränkungen bedenken.

  • Videokonferenzen ermöglichen oft nur ein sehr kurzes Zeitfenster für die Kommunikation, während das Arbeiten im selben Büro transparente Einblicke in die Welt des anderen ermöglicht: Herausforderungen, Erfolge und Chancen werden hautnah miterlebt.
  • Zoom hat einiges getan, um für zuverlässige Verbindungen zu sorgen. Trotzdem können Netzwerkprobleme zwischen den Büros Video- und Audioübertragungen abgehackt und schwer verständlich werden lassen.
  • Die meisten gehen immer noch davon aus, dass Videokonferenzen mit Zoom geplant werden müssen. Der Aufbau einer Kultur, in der Videochats für spontane, ungezwungene Gespräche verwendet werden, braucht Zeit. Für schnelle Nachfragen eignen sich zudem Instant-Messaging-Tools wie Slack besser.

Um einige der Probleme mit Videokonferenzen abzumildern, ermutige Teammitglieder, wöchentlich persönliche Chatsitzungen durchzuführen. Diese können weniger formal sein und ermöglichen, Wissen auf eine eher ungezwungene Art zu teilen. Teamkollegen können diese Gelegenheiten nutzen, um Beziehungen aufzubauen und besser zusammenzuarbeiten.

Denke daran, dass Ton, Stimme und Haltung in der Kommunikation eine wichtige Rolle spielen. Persönliche Gespräche tragen dazu bei, dass Teammitglieder ihre Remotekollegen genauer kennenlernen, was wiederum zukünftige Videokonferenzen effektiver macht.

Ob Haus oder Produkt, bei beidem musst du eine Vision definieren und die strategischen Themes skizzieren. Stelle dir Themes als unternehmensweite Schwerpunktbereiche vor. Worauf möchtest du dich im nächsten Vierteljahr/Halbjahr/Jahr konzentrieren? Worin möchtest du Zeit und Ressourcen investieren? Performance, User Experience, Sicherheit, neue wettbewerbsfähige Features (wie wäre es mit einem Whirlpool?) oder eine Kombination aus alledem?

Unsere Vorgehensweise:

Secondments sind vorübergehende Versetzungen in eine neue Rolle oder an einen anderen Standort, die von einigen Wochen bis zu einem Jahr dauern können. Sie sind nicht nur ein effektives Mittel, um Beziehungen aufzubauen und die Kultur im gesamten Team zu verbreiten, sondern auch eine großartige Möglichkeit für Mitarbeiter, eine andere Kultur zu erleben.

Aufbau einer vereinten Entwicklungskultur

Es gibt vier einfache Methoden, mit denen Teams die Arbeit in verschiedenen geografischen Regionen vereinfachen und eine gemeinsame Entwicklerkultur schaffen können:

  • Unbedingte Kommunikation von Entscheidungen über alle geografischen Regionen hinweg
  • Minimierung von Reibungen beim Einrichten der Entwicklungsumgebung
  • Klare Definition dessen, was "Erledigt" bedeutet
  • Erstellung von Richtlinien für das Einreichen effektiver Bug-Berichte

Gehen wir näher darauf ein.

Erstens wird die Kommunikation bei der Umstellung von einem Team im selben Büro zu einer verteilten Kultur deutlich schwieriger. Die erste Herausforderung besteht also darin, dem Team deutlich zu machen, dass Entscheidungen kommuniziert werden müssen. Das hört sich selbstverständlich an, wird aber oft vergessen! Oft werden wichtige Entscheidungen bei Gesprächen zwischen Tür und Angel, in informellen Teambesprechungen vor Ort oder von Einzelpersonen getroffen. Außerdem werden kleine Entscheidungen oft als unwichtig betrachtet.

Kommuniziere selbst winzige Details, bis die Teams ein gesundes Maß finden.

Wenn Entscheidungen getroffen werden, muss jeder in jedem Büro die Entscheidung und idealerweise auch die Begründung dafür verstehen. Kommuniziere nicht per E-Mail, denn dabei gehen oft wichtige Informationen verloren. Nutze ein Content-Management-System wie ein Wiki, das Teammitglieder leicht nach Updates für das gesamte Team durchsuchen können (und das bei Aktualisierungen Benachrichtigungen per E-Mail oder über das Gruppenchattool Slack versendet). Du kannst mit Slack auch Kanäle für einzelne Personen und Teams erstellen, um die Kommunikation und den Informationsaustausch besser zu organisieren. Verzögerungen, die dadurch verursacht werden, dass Teammitglieder mit veralteten Informationen arbeiten, auf ein Problem stoßen und dann Fragen stellen, kosten das Team deutlich mehr Zeit als der proaktive Austausch von Informationen.

Profitipp:

Bei Atlassian nutzen wir Atlas, um Updates zu Projekten und Zielen teamübergreifend auszutauschen. Wir werden über Updates per wöchentlicher Digest-E-Mail oder über Slack informiert. Unsere Teams können sich frei austauschen und haben immer den Gesamtkontext ihrer Arbeit im Blick, was die folgenden Fragen beantwortet:

  • Was machen wir?
  • Warum?
  • WER ARBEITET AN WAS?
  • Arbeitsfortschritt

Zweitens ermöglichen konsistente Entwicklungsumgebungen im gesamten Team eine einfachere Zusammenarbeit und Verfolgung von Vorgängen. Nimm dir die Zeit, eine einfache Anleitung für die ersten Schritte zu erstellen, und vermeide anfängliche Reibungen, indem du das Setup weitestgehend automatisierst.

Drittens erleichtern klare Standards für die Definition von "Erledigt" bei der Zusammenarbeit zwischen verschiedenen Büros den Umgang mit Erwartungen und den Aufbau von teamübergreifenden Beziehungen. Eine feststehende Definition von "Erledigt" vermeidet Unklarheit bei der Arbeit. Wenn beispielsweise ein Release ausgeliefert wird, an dem mehrere Teams gearbeitet haben, solltest du klarstellen, was "Erledigt" bedeutet: Der Code ist geschrieben, ein Pull-Request wurde erstellt und der Code wurde reviewt, getestet und in den entsprechenden Branch gemergt.

Und schließlich bedeutet eine Verteilung der Entwicklung, dass nicht jeder online ist, wenn Probleme auftreten. Mit klaren Richtlinien für Bug-Berichte und Anleitungen für das Troubleshooting kann jeder im Team ein Problem leichter nachvollziehen. Auch Code-Reviews und gute automatisierte Tests sorgen dafür, dass das ganze Team die Codebasis kennt. Damit kann das betroffene Team den Fehler beheben und sicherstellen, dass die Änderungen keine unerwarteten Begleiterscheinungen haben. So wird kein Team zu einem Blocker.

Maximieren der goldenen Stunde

Jeder Fotograf weiß, dass die "goldene Stunde" – die Zeit direkt nach Sonnenaufgang und vor Sonnenuntergang – die beste Zeit für großartige Landschaftsaufnahmen ist. Die goldene Stunde für verteilte Softwareteams ist der Zeitraum, in dem das lokale und die Remoteteams zur selben Uhrzeit im Büro anwesend sind. Diese Zeit ist perfekt für Stand-up-Meetings geeignet.

Teams, die in verschiedenen Zeitzonen zusammenarbeiten, können im Stand-up-Meeting die Verantwortung übergeben, damit das Team, das jetzt online geht, dort weitermachen kann, wo das andere aufgehört hat. In einem Stand-up-Meeting per Videokonferenz kann jeder Fragen stellen, sich über neue Entwicklungen informieren lassen und dann an die Arbeit gehen, sobald das Meeting vorbei ist.

Manchmal liegen Büros so weit auseinander, dass Meetings für eines der Teams eine Qual sein können. (Morgens um fünf aufstehen, weil ein Stand-up-Meeting mit dem anderen Team angesetzt ist? Äh ... nein danke!) Lass die Uhrzeiten für Meetings rotieren, damit die Belastung geteilt wird und nicht nur das Team in der Außenstelle ständig zu abwegigen Zeiten anwesend sein muss – was eine todsichere Methode ist, die Moral zu untergraben. Überwache das Engagement des gesamten Teams beim Stand-up-Meeting sorgfältig. Wenn es unnötigen Stress bedeutet oder einem Team nicht viel bringt, schweifen die Teammitglieder ab, hören nicht mehr zu oder geben keine Informationen weiter. Stand-up-Meetings müssen nicht unbedingt täglich stattfinden. Plane Meetings mit dem Team in der Außenstelle nur an einigen Wochentagen ein, und nutze die anderen Tage für Stand-up-Meetings vor Ort. Genauso müssen Stand-up-Meetings auch nicht unbedingt am Morgen stattfinden. Die ideale Tageszeit ist die Zeit, die für alle Beteiligten am besten geeignet ist.

Jedes Team ist verteilt

In einem verteilten Unternehmen ist jedes Team ein Remote-Team. Alle Teams müssen sich anpassen und lernen, wie sie Aufgaben zwischen Büros aufteilen, effektiv kommunizieren und eine konsistente Kultur über geografische Regionen hinweg aufbauen können. Die erfolgreichsten Teams achten darauf, dass sich das Remote-Büro nicht einfach an die Kultur des Hauptsitzes anpassen muss, weil sie wissen, dass jedes Büro etwas vom anderen lernen kann. Sie suchen und teilen erfolgreiche Verfahren an allen Standorten. Sie pflegen außerdem eine "Wir"- statt eine "Wir gegen die anderen"-Kultur.

Denn Tatsache ist, dass auch diese Teams von Zeit zu Zeit verteilt sind. Teammitglieder auf Geschäftsreise sind nicht im Büro anwesend, und gelegentliche Arbeit im Homeoffice unterstützt Mitarbeiter, eine bessere Balance zwischen Arbeit und Privatleben zu finden. Teams, die sowohl Struktur als auch Transparenz übernehmen, können effizienter erweitert werden. Wenn dein Projekt die Grenzen deines Büros sprengt, wird die Kultur auf natürliche Weise das Richtige tun.