Der Einsatz von Offshore Development Teams ist für Schweizer IT-Dienstleister nach wie vor ein grosses Thema. Dabei geht es längst nicht mehr darum möglichst günstig zu produzieren, sondern in einen Arbeitsmarkt einzutreten, in dem das Bedürfnis von qualifizierten Arbeitskräften abgedeckt wird.
Doch wie kann diese Ressource «Offshoring» möglichst effizient genutzt werden? Wie kann eine reibungslose Zusammenarbeit mit den Teams trotz unterschiedlichen Zeitzonen funktionieren? Wie können Missverständnisse und Kommunikationsprobleme verhindert werden? Mit diesen Fragen werde ich in meinem Umfeld oft konfrontiert und ich glaube dafür ein paar Antworten zu haben.
In meiner Position als Scrum Product Owner einer Web-Applikation arbeite ich nun seit über 2 Jahren mit mehreren agilen Development Teams in Vietnam zusammen. Die Zusammenarbeit beruht auf einer Partnerschaft mit einem Schweizer Offshore Development- und Testing-Center in Vietnam. Nebenbei bemerkt gehört Vietnam zu den schnellsten wachsenden Volkswirtschaften der Welt und gerade der IT-Arbeitsmarkt spielt dabei eine entscheidende Rolle.
Nachfolgend teile ich mit dir meine top 5 Tipps wie man auf täglicher Basis effektiv und effizient mit agilen «Offshore» Teams zusammenarbeitet, damit am Ende eines Sprints oder eines Entwicklungszyklus auch das erwartete Ergebnis erzielt wird.
1. Nutze die richtigen Collaboration-Tools!
Für eine reibungslose Zusammenarbeit am gleichen Software-Projekt ist es essenziell die richtigen Tools zu verwenden und so als Auftraggeber die Entwicklung mit den richtigen Werkzeugen auszustatten. Die Entwickler müssen in der Lage sein, gemeinsam und transparent am Source-Code zu arbeiten und diesen in ein Repository einzuchecken, sodass am Ende auch ein Produkt Inkrement paketiert und ausgeliefert werden kann.
In meinem Unternehmen nutzen wir den Azure DevOps Server um den gesamten Product-Backlog und die aktuelle Arbeit der Entwicklung an einem Ort sichtbar zu machen. Die Entwicklung schreibt und ändert den Code mit Hilfe von Microsoft Visual Studio. Durch die Integration von Git können so die Änderungen am Code gezielt verwaltet und versioniert werden.
Der Integration von weiteren Collaboration-Tools ist beinahe keine Grenzen gesetzt. Zusätzlich nutzen wir weitere Tools wie z.B Confluence um Prozesse, Arbeits-Schritte sowie auch Feature-Beschreibungen und Development-Guidelines der Applikation für alle Beteiligten einheitlich und sichtbar zu Dokumentieren. Auch GitLab bietet weitere nützliche Tipps bezüglich Collaboration-Tools und Remote-Management.
Aus meiner Sicht ist es vor allem wichtig, dass in den Teams Klarheit herrscht, welche Tools eingesetzt werden. Zugleich sollten alle Lizenzen am gleichen Ort (im besten Fall beim Auftraggeber) zentral verwaltet werden. Nur so herrscht auch Transparenz bezüglich der Kosten.
2. Verzichte auf Mikro-Management aus der Ferne!
Ohne das nötige Vertrauen funktioniert es nicht! Die Teams sollten in der Lage sein, sich selbst zu organisieren. Dies gehört zum Grundgedanken der Agilität. Das Team soll, wenn möglich, selbst technische Lösungen für die Umsetzung der vorgegeben Akzeptanzkriterien finden. Dabei kommt Mikro-Management, speziell aus der Ferne, und zu viel Kontrolle mit übertriebener Detailorientierung generell sehr schlecht an und wirkt demotivierend.
Ich gebe den Teams viel Freiheit, um ihre Arbeit für den Sprint-Backlog anhand der Akzeptanzkriterien selbst zu schätzen und einzuteilen. Stets im Sinne der Erreichung des Sprint-Goals. Trotzdem ist es wichtig eine gewisse Kontrolle darüber zu haben was umgesetzt wird sodass auch frühzeitig Einfluss genommen werden kann, sollte etwas in die falsche Richtung laufen. Klare und einfache Ausdrucksweise in Wort und Schrift ist dabei sehr entscheidend. Man darf nicht davon ausgehen, dass etwas nicht erklärt werden muss, nur weil es für einen selbst klar und logisch ist.
Die Priorisierung der anstehenden Arbeiten soll stets über das Product Backlog vom Product Owner (top/down) vorgegeben werden. Dabei ist es enorm wichtig, dass die Stories für das anstehende Inkrement im Backlog termingerecht und verständlich beschrieben sind. Nur über einen aktuellen und gepflegten Backlog kann eine nahtlose Abarbeitung der Items erfolgen. Pro Team ist bestenfalls ein Teamleader für die fristgerechte Erreichung des Sprint-Goals des jeweiligen Teams verantwortlich. Um die Arbeiten in den Teams innerhalb eines Sprints sichtbar zu machen empfiehlt sich pro Team ein Kanban-Board. Die Gestaltung des Kanban-Boards ist dabei jedem Team selbst überlassen.
Ich tausche mich täglich mit den Teamleadern über Zoom für ca. 15min aus, um den Stand der Arbeit einzuholen und allfällige Probleme, Unklarheiten, Eskalationen oder Impediments zusammen zu besprechen und konkrete Massnahmen zu beschliessen. Dabei soll das Team stets auch die Möglichkeiten erhalten, um Fragen zu stellen und diese Möglichkeit soll auch konsequent genutzt werden. Ich merke jeweils sehr schnell, dass etwas nicht klar ist, wenn von den Teams keine Fragen gestellt werden. Um dem vorzubeugen verlange ich oft, dass neue Features innert geeigneter Frist im Team besprochen und analysiert werden. Anschliessend setze ich ein Remote-Meeting auf, um die aufgetauchten Fragen zu beantworten. Nur so kann ich sicherstellen, dass mich am Ende eines Sprints im Review keine Überraschungen erwarten.
Grundsätzlich pflege ich eine stets offene und transparente Kommunikation und begrüsse es, dass alle Team-Mitglieder mich bei Fragen und Unklarheiten direkt kontaktieren. Dies fördert den Austausch und wird von allen Team-Mitgliedern sehr geschätzt. So kann man sich auf gleicher Augenhöhe begegnen kann und die Team-Mitglieder können zugleich auch ihre Englisch-Skills gebrauchen und verbessern.
3. Teile Deine Produkt-Vision!
Wenn immer möglich sollte die Produkt Vision sowie die Planung der nächsten Produkt Inkremente und Releases mit dem Team geteilt und besprochen werden. Jedes Team-Mitglied soll verstehen, wohin die Reise geht. Ich persönlich finde es enorm wichtig, dass jeder den grundliegenden Business Nutzen für den Anwender des Produktes versteht und es ist meine Aufgabe als Product Owner dies verständlich zu vermitteln. Nur so hat auch jedes Team-Mitglied die Möglichkeit bei der Umsetzung mit zu denken oder mir auch bessere Optionen und Lösungen vorzuschlagen, welche ich vielleicht gar nicht bedacht habe. Ich persönlich bevorzuge es anhand einer visuellen Roadmap oder anhand einem Big-Picture die Produkt-Vision zu vermitteln. Es fördert das Verständnis und die Motivation für das gemeinsame Ziel am Horizont. Zugleich werden zukünftige Features so automatisch in die Überlegung von gegenwärtiger Umsetzung miteinbezogen und so kann vorgebeugt werden, sodass nichts «verbaut» wird.
4. Nutze die unterschiedliche Zeitzone zum Vorteil!
Zugegeben ist es mit der Zeitverschiebung nicht immer ganz einfach. Jedoch bietet es auch gewisse Vorteile. Zum Beispiel können dringende Bugs jeweils bereits zu Schweizer Zeit über Nacht von Vietnam behoben werden oder auch Support kann zu einer grösseren Zeitspanne abgedeckt werden. Wichtig jedoch ist, dass man genügend überlappende Arbeitszeiten mit den Teams hat und diese auch effizient nutzt. Vietnam ist der Schweiz 5 Stunden voraus. Das heisst, unsere gemeinsamen Meetings und der Austausch findet zu Schweizer Zeit immer jeweils vormittags statt. So kann ich mich am Nachmittag jeweils voll und ganz den Projektarbeiten in der Schweiz kümmern. Gewiss sind die Teams in Vietnam auch oft bereit ihre Arbeitszeiten ein wenig anzupassen, wenn die Umstände mal etwas ausserordentlich sind.
5. Tauche in die „fremde“ Kultur ein!
Meine Grundeinstellung gegenüber anderen Kulturen lautet: Je unterschiedlicher, desto mehr kann man voneinander profitieren! Da die Kulturunterschiede zwischen Vietnam und der Schweiz ziemlich gross sind, empfinde ich die Zusammenarbeit mit den Offshore-Teams als eine grosse gegenseitige Bereicherung, die sich positiv auf meine Arbeit auswirkt. Falls sich die Möglichkeit ergibt, empfehle ich die Teams unbedingt auch physisch vor Ort zu besuchen. Durch die Planung und Durchführung von Workshops und Einzelgesprächen vor Ort erfährt man meistens sehr viel mehr und blickt hinter die Kulissen. Ich persönlich war nach meinem ersten Vietnam Besuch sehr positiv überwältigt. Mittlerweile besuche ich die Teams 3-4 mal pro Jahr. Neben der Arbeit nehme ich mir auch Zeit um die Kultur in Vietnam besser kennen zu lernen. Dabei unternehme ich so viel mit den Teams wie möglich. Sei es durch Team-Events nach der Arbeit, Freizeitaktivitäten und Strandausflüge an den Wochenenden, das ausprobieren von verschiednen kulinarischen Spezialitäten oder auch mal einen Abend im Karaoke Restaurant. Langweilig wird es nie! Dabei sollte man sich auch nicht immer zu ernst nehmen. Die Aktivitäten mit den Teams neben der Arbeit dienen als „Eisbrecher“ und man lernt sich noch besser kennen und zu verstehen.