Exportieren (0) Drucken
Alle erweitern

Agile Prozesse in der Offshore-Softwareentwicklung

Veröffentlicht: 29. Jan 2007
Von Andrew Filev

In der modernen Softwareentwicklung gibt es zwei Trends, die es ermöglichen, für weniger mehr zu bekommen: Agile Entwicklung und Outsourcing ins Ausland. Erfahren Sie, wie und wann Sie beides erfolgreich miteinander kombinieren können, um Ihr Unternehmen wettbewerbsfähiger zu machen.

Auf dieser Seite

Trends der agilen Softwareentwicklung Trends der agilen Softwareentwicklung
Kombinieren der Trends Kombinieren der Trends
Einsetzen der richtigen Methoden und Tools Einsetzen der richtigen Methoden und Tools
Kommunikation, Kommunikation, Kommunikation Kommunikation, Kommunikation, Kommunikation
Der Autor Der Autor
Ressourcen Ressourcen

In der Zeit nach der Dotcom-Blase wurden die IT-Budgets stark gekürzt, während die Nachfrage nach IT-Dienstleistungen nicht ganz so stark abnahm. Daher begannen die Manager, nach kosteneffizienteren Lösungen zu suchen. So entstand der Trend, die Softwareentwicklung in Länder mit aufstrebender Marktentwicklung auszulagern (Auslandsentwicklung). Die wirtschaftliche Motivation ist nicht die einzige Kraft, die diesen Trend begünstigte. Das rasche Wachstum der letzten Jahre, das durch eine verbesserte Kommunikationsinfrastruktur ausgelöst wurde, spielte ebenfalls eine wichtige Rolle.

Hinsichtlich der Arbeit in verteilten Teams im Allgemeinen und des Outsourcing ins Ausland im Besonderen haben leistungsfähige IP-Telefonie-Software (VoIP), Instant Messenger, E-Mail-Clients und Wikis die Online-Kommunikation einfacher gemacht. Darüber hinaus sind jetzt Online-Tools, wie z. B. Wikis, persönlichen Kommunikationen häufig vorzuziehen, weil diese Tools die Informationen nicht nur übertragen, sondern auch strukturieren und speichern. Diese Tools sind auch effektive Hilfsmittel zum Verteilen von Informationen an mehrere Empfänger.

Global verfügbare Highspeed-Internetverbindungen bilden die Grundlage für weitere Tools und geben daher diesem Trend noch mehr Auftrieb. Modelling-Tools helfen, die Dokumentation in verteilten Teams in höherem Maße ohne Erklärungen verständlich zu machen. Fehlerverfolger, Quellkontrollserver, Internetportale und Tools für Online-Zusammenarbeit helfen bei der Koordination der verteilten Projekte. Terminaldienste und virtuelle Computer erleichtern Remote-Prüfung und Remote-Verwaltung.

Das Internet hat auch Länder mit aufstrebenden Märkten auf das Gleis der Hochtechnologien gestellt. Weil das Internet politische Grenzen überwindet, erlernen Tausende junger Leute in sich derzeit entwickelnden Ländern wie z. B. Russland und China mithilfe des Internets die modernsten Technologien und verbessern ihre Kenntnisse der englischen Sprache. Diese neue Welle per Internet autodidaktisch gebildeter Softwareentwickler traf genau den Nerv der Zeit und verstärkte den Offshoring genannten Trend weiter.

Der in letzter Zeit entstandene Anstieg des Outsourcing ins Ausland hat ein derartiges Ausmaß erreicht, dass er bereits zum Ziel politischer Debatten geworden ist. Im Rahmen dieser Erörterung wollen wir davon ausgehen, dass die Softwareentwicklung im Ausland eine unbestrittene Tatsache ist, und uns darauf konzentrieren, aus diesen Outsourcing-Prozessen möglichst großen Nutzen zu ziehen. Wir werden die politischen Belange außer Acht lassen. Wir wollen aber die Forschungsergebnisse des McKinsey Global Institute zu Rate ziehen, die Zahlen liefern, anhand derer die Vorteile des Outsourcing für die Wirtschaft der USA messbar sind, und die einige Irrtümer und Mythen um dieses Thema berichtigen.

Trends der agilen Softwareentwicklung

Kehren wir wieder in die Heimat zurück. Hier werden die Herzen und Gemüter vieler Manager und Entwickler von einem anderen modernen Trend erobert: dem Trend der agilen Softwareentwicklung. Langsame, schwerfällige Methoden haben sich in der dynamischen Betriebsumgebung von heute nicht bewährt. Schlanke Budgets verlangen mehr Ergebnisse, während in Hinsicht auf die Anlagenrendite (ROI) die Bürokratie noch nie die richtige Lösung war. Die Vorzüge agiler Methoden liegen in Zusammenarbeit, Flexibilität und Konzentration auf den Geschäftswert der Software, wie dies in den Kernprinzipien des Manifests für agile Entwicklung auch klar zum Ausdruck gebracht wird: Individuen und Wechselwirkungen haben Vorrang vor Prozessen und Tools, die Arbeitssoftware hat Vorrang vor umfassender Dokumentation, Kundenzusammenarbeit hat Vorrang vor Vertragsaushandlung und die Reaktion auf Änderungen hat Vorrang vor dem Einhalten eines Plans (siehe Ressourcen).

Agile Methoden kommen der neuen Welle frischer Kräfte aus dem Internet, die oft als Web 2.0 bezeichnet wird, sehr entgegen. Die agile Softwareentwicklung ermöglicht es einigen dieser Neuankömmlinge, für weniger Aufwand mehr zu erreichen und bedeutende Projekte mit kleinen Teams und winzigen Budgets abzuwickeln. Die kurzen Iterationen und die Prinzipien der Arbeitssoftware schlagen sich in einer Methode nieder, die als Constant Beta bezeichnet wird, seitdem bei verschiedenen Google-Produkten das Wort „Beta“ in das Logo aufgenommen wurde.

Für agile Methoden gilt jedoch keineswegs, dass dieselbe Größe jedem passt. Sie funktionieren gut bei kleinen, in direkter Nachbarschaft arbeitenden Teams, die mit sich schnell ändernden Bedingungen konfrontiert werden.

Abbildung 1: Punkt-zu-Punkt- und Dienstbusintegration (klicken Sie auf das Bild, um es zu vergrößern)
Abbildung 1: Punkt-zu-Punkt- und Dienstbusintegration (klicken Sie auf das Bild, um es zu vergrößern)

Während es Fälle gibt, in denen die Anwendbarkeit der agilen Softwareentwicklung fragwürdig ist (z. B. bei der verteilten Entwicklung mit Outsourcing ins Ausland), beweisen meine Erfahrungen aus fünf Jahren der erfolgreichen Anwendung der Prinzipien der agilen Entwicklung in verteilten Teams, dass sie realisierbar ist und bei richtigem Einsatz große Vorteile bringt.

Abbildung 2: Drei Integrationsschichten (klicken Sie auf das Bild, um es zu vergrößern)
Abbildung 2: Drei Integrationsschichten (klicken Sie auf das Bild, um es zu vergrößern)

Es gibt andere Szenarien, in denen die Anwendung von Prozessen der agilen Softwareentwicklung weiterhin fragwürdig bleibt. Beispiele hierfür sind Szenarien mit großen Entwicklungsteams (mit mehr als 20 Mitarbeitern, die an einem einzigen unabhängigen Projekt arbeiten), Szenarien mit Systemen, in denen die Voraussagbarkeit von größter Bedeutung ist (extrem wichtige Anwendungen) sowie Szenarien mit bürokratischer Umgebung. Solche Szenarien werden wir hier nicht betrachten. Darüber hinaus werden wir von einem Unternehmen mit einer Firmenkultur ausgehen, die einer agilen Entwicklung entgegenkommt und das Absicht hat, die hier vorgestellten Ideen auf Softwareteams von weniger als 20 Mitarbeitern (nicht 20 Mitarbeiter im gesamten Entwicklungsteam, sondern 20 Mitarbeiter pro Einzelteam bzw. pro Projekt) anzuwenden. Wir werden stattdessen die Anwendung agiler Methoden auf die verteilte Entwicklung im Allgemeinen und das Outsourcing ins Ausland im Besonderen betrachten.

Kombinieren der Trends

Geschäfte zur Softwareentwicklung im Ausland umfassen eine ganze Palette unterschiedlicher Engagements, angefangen von der Einstellung eines Entwicklers im Ausland über rentacoder.com bis hin zu Milliardenverträgen mit US-amerikanischen Unternehmen, die Zweigniederlassungen im Ausland besitzen. Einige dieser Vereinbarungen sind derart angelegt, dass die Unternehmen selbst dann daran gehindert werden, einen Prozess der agilen Softwareentwicklung zu nutzen, wenn einer der Geschäftspartner dies wünscht.

Um einen agilen Prozess zu implementieren, sollte das ausgewählte Outsourcing-Modell zu Kommunikation und Zusammenarbeit ermutigen, Flexibilität akzeptieren und ein häufiges Veröffentlichen rechtfertigen. Obwohl auf Outsourcing-Vereinbarungen Dutzende von Kriterien angelegt werden können, sind nur wenige von ihnen für unsere weitere Erörterung so wichtig wie das Preisberechnungsmodell. Die Zuordnung der häufigsten Preisberechnungsschemata können Sie Abbildung 1 entnehmen.

Vorhersagbare Ergebnisse implizieren vorhersagbare Prozesse. In Abbildung 2 können Sie Gruppen der Entwicklungsprozesse sehen, die auf der Skala zwischen Vorhersagbarkeit und Annpassbarkeit angeordnet wurden. Differenzieren wir zwischen Vorhersagbarkeit und Anpassbarkeit, so erfordern vorhersagbare Schemata, die dichter am linken Ende der Skala liegen (siehe Abbildung 1), vom Softwareentwicklungsprozess eine höhere Vorhersagbarkeit, wohingegen Prozesse agiler Entwicklung auf der entgegen gesetzten Seite des Kontinuums der Softwareentwicklungsprozesse angesiedelt sind.

Der Vorhersagbarkeitsfaktor spielt insbesondere bei Vereinbarungen mit festem Umfang und festem Preis eine Rolle. Wenn für eine Outsourcing-Vereinbarung ein Vertrag dieser Art geschlossen wird, sind der Kunde und der Anbieter natürlich an vorhersagbare Prozesse der Softwareentwicklung und ihre Folgen gebunden. Deshalb ist ein Vertrag dieser Art für die agile Softwareentwicklung nicht sehr gut geeignet. Denken Sie beim Ausarbeiten einer Outsourcing-Vereinbarung daran, dass die Fähigkeit, auf Änderungen zu reagieren, dazu ermutigt, Preisberechnungsmodelle wie Zeit und Material zu verwenden, wodurch sowohl der Kunde als auch der Anbieter Flexibilität erhalten und die agile Entwicklung gefördert wird.

Bedenken Sie beim Entwerfen der Vereinbarung, welche Auswirkungen das ausgewählte Schema auf Kommunikation und Zusammenarbeit haben wird. Ein Prozess agiler Entwicklung erfordert eine offene Umgebung, dichte Integration innerhalb des Teams, gemeinsame Ziele, ein klares Verständnis des Geschäftswerts und häufige Kommunikation. Je mehr Barrieren zwischen Entwicklern, Kunden, Benutzern, Managern und anderen Beteiligten bestehen, desto schwerer ist es, eine Basis für eine agile Softwareentwicklung zu schaffen, weshalb die Zahl der Mittelsmänner reduziert werden muss, um eine maximale Transparenz und Integration zwischen den Teams zu ermöglichen.

Große Unternehmen bewerkstelligen dies, indem sie eigene Niederlassungen in anderen Ländern einrichten, was in wirtschaftlicher Hinsicht sinnvoll ist, wenn ein Unternehmen mehr als 100 Entwickler in seinem Entwicklungszentrum in Übersee beschäftigen will. Die genaue Zahl hängt stark von dem Zielland und von anderen Faktoren ab, etwa wie leicht das Unternehmen dort talentierte Leute anwerben kann.

Wenn Sie diese Alternative in Betracht ziehen, dann wiederholen Sie nicht die Fehler einiger kleiner und mittlerer Unternehmen, die dabei die versteckten Unkosten durch Verwaltungszeitaufwand, Reisekosten, Honorare für lokale Rechtsanwälte und Notare sowie andere Kosten unterschätzt haben. Darüber hinaus entsteht in Ländern, die sich entwickeln, durch das rasche Wachstum ein Mangel an Fachkräften, der kleinen ausländischen Neuankömmlingen das Leben nicht gerade erleichtert. Während lokale Unternehmen in ihrer lokalen Gemeinschaft besser vernetzt sind, können Niederlassungen großer Unternehmen dies durch bekannte Marken, größere Gehälter und bessere Sozialleistungen ausgleichen.

Über derartige gute Möglichkeiten verfügen kleine Unternehmen, die in Übersee vielleicht nur 15 Mitarbeiter beschäftigen wollen, in den meisten Fällen nicht. Erfolgreiche kleine und mittlere Unternehmen bewältigen die Kosten für die Einrichtung von Auslandsbüros mithilfe eigens dafür abgestellter Entwicklungsteams, Auslandentwicklungszentren (ODCs), von BOT-Modellen (Build-Operate-Transfer, Einrichten-Betreiben-Übertragen), virtueller Büros, virtueller Teams und so weiter. Unabhängig von den jeweiligen Namen und Details ist diesen Modellen eines gemeinsam: Der Anbieter im Ausland konzentriert sich mehr auf die Bereitstellung einer physischen und gesetzlichen Infrastruktur sowie einer IT- und HR-Infrastruktur als auf die Beteiligung am Entwicklungsprozess. Die Verantwortung für die Projekterfüllung wird bei solchen Vereinbarungen vom Kunden und Anbieter gemeinsam getragen.

Um bei solchen Vereinbarungen die vollen Vorteile genießen zu können, müssen die Entwickler einem einzigen Kunden zugeteilt werden. Zudem müssen in beiden Unternehmen die Teamerhaltungsraten solide sein. Der Anbieter muss dem Kunden auf jeder Ebene transparente Kommunikation bieten, einschließlich einer transparenten Kommunikation von Entwickler zu Entwickler. Man muss eine gemeinsame Sprache sprechen, ohne einen Dolmetscher zu benötigen.

Bei erfolgreichen Vereinbarungen ist gelegentlich zu erkennen, dass die Mitarbeiter in Auslandsbüros engere Kontakte zum Kunden pflegen und die Werte und die Unternehmenskultur beider Unternehmen annehmen, obwohl sie ihr Gehalt vom Anbieter beziehen.

Einsetzen der richtigen Methoden und Tools

Es gibt einige bekannte Methoden, die von erfolgreichen Softwareentwicklungsteams verwendet werden: gemeinsame Kodierungsstandards, ein Quellkontrollserver, mit einem einzigen Mausklick erstellte und bereitgestellte Skripts, kontinuierliche Integration, Einheitenprüfung, Fehlerverfolgung, Entwurfsmuster und Anwendungsblöcke. Diese Methoden müssen auf verteilte Teams strenger angewendet werden als auf lokale Teams.

Denken Sie beispielsweise an die kontinuierliche Integration. Es könnte äußert frustrierend sein, zur Arbeit zu kommen und vom Quellkontrollserver eine funktionsunfähige Buildversion zu erhalten, während die Person, die dafür zuständig ist, mehrere tausend Kilometer weit entfernt ist und in diesem Moment wahrscheinlich gerade im Reich der Träume weilt. Dasselbe Problem ist möglicherweise nicht besonders schlimm, wenn die zuständige Person im nächsten Büro arbeitet. In einem verteilten Szenario aber könnte es sich zu einem großen Problem entwicklen, das sich schädlich auf die Produktivität und die Kommunikation auswirkt. Sie können solche Risiken auf einem möglichst niedrigen Niveau halten, indem Sie im gesamten Team Methoden der kontinuierlichen Integration einhalten und den entsprechenden Server installieren (z. B. Microsoft Team Foundation Server, CruiseControl.NET und CruiseControl).

Teams, die mit der Microsoft .NET-Plattform arbeiten, sind durch die Funktionen von Microsoft Visual Studio Team System in dieser Hinsicht bestens gerüstet. Sie erhalten das normierende Microsoft Solutions Framework for Agile Software Development sowie unterstützende Tools. Dieses Produkt ist für Teams, die für die agile Entwicklung in verteilten Umgebungen mehr Führung benötigen, äußerst hilfreich. Für erfahrene Teams ist es eine integrierte Lösung, die eine hohe Anlagenrendite (ROI) bietet.

Ein anderes Microsoft-Produkt, das für verteilte Teams einen hohen Wert hat, ist Windows SharePoint Services (WSS). Wikis sind für die agile Entwicklung in verteilten Teams wie geschaffen. Für die nächste Version von WSS sind Wikis bereits als eine der neuen Erweiterungen vorgesehen. WSS ist auch eng mit Visual Studio Team System verknüpft, wodurch es für das Internetportal des Teams optimal geeignet ist.

Hinsichtlich der IT-Infrastruktur empfehle ich, ein virtuelles privates Netzwerk (VPN) zu verwenden, um den Teams gleichen Zugriff auf gemeinsam genutzte Ressourcen zu geben. Die VPN-Umgebung ist weniger streng als ein öffentliches Netzwerk und ermöglicht die Verwendung von Funktionen wie beispielsweise der Anwendungsfreigabe von Windows Live Messenger, Video- und Sprachtelefonie, Fernunterstützung und Whiteboard.

Kommunikation, Kommunikation, Kommunikation

Wenn von einem entfernten Standort aus gearbeitet wird, werden aus kleinen Missverständnissen schnell größere Probleme. In verteilten Entwicklungsteams müssen die Manager auf die Kommunikationsmethoden achten, die sie bei einer lokalen Entwicklung gelegentlich ohne negative Folgen außer Acht lassen. Diese Aufmerksamkeit umfasst regelmäßige (tägliche/wöchentliche) Berichte und Statusaktualisierungsversammlungen, die es den Teammitgliedern ermöglichen, ihre Arbeit zu synchronisieren, Leistungen zu besprechen und Probleme aufzudecken. Die Manager sollten auch versuchen, durch Einführungsversammlungen, Standortbesuche, Teamaufbauaktivitäten und andere Methoden zwischenmenschliche Beziehungen in den Teams zu fördern.

Bei Vereinbarungen für das Outsourcing ins Ausland müssen sich die Entwicklungsmanager der Sprach-, Kultur- und Zeitzonenbarrieren bewusst sein und Wege finden, um diese Hindernisse zu überwinden. Die Globalisierung löscht in professionellen Umgebungen langsam, aber beständig die kulturellen Unterschiede aus. Es gibt aber weiterhin Fälle, in denen durch kulturelle Unterschiede Verwirrung entsteht. In diesem Zusammenhang könnten zahlreiche länderspezifische Probleme angeführt werden, doch dies würde den Rahmen dieser Erörterung sprengen. Sprachprobleme sind leichter zu erkennen, aber dies bedeutet nicht, dass sie auch leichter zu überwinden sind. Wenn in Unternehmen eine Sprachbarriere besteht, ist es üblich und äußerst ratsam, für die Mitarbeiter Sprachkurse auf Unternehmenskosten bereitzustellen. In den meisten aufstrebenden Ländern sind die Fachleute motiviert, die englische Sprache zu erlernen, deswegen sind Sprachkurse an solchen Standorten sehr üblich.

Vor allem Unterschiede in den Zeitzonen gestalten den Prozess schwieriger. Es hat sich allerdings herausgestellt, dass in Ländern mit entwickelten Outsourcing-Industrien die Softwareentwickler in der Regel bereit sind, ihren Arbeitszeitplan anzupassen, um mit ihren Partnern in Übersee zusammenarbeiten zu können. Es gibt zwei Verfahren, mit Zeitzonenunterschieden umzugehen. Beim ersten Verfahren werden die Teams nach Aktivität aufgeteilt, sodass beispielsweise das Team der Qualitätssicherung und das Team der Produktmanager vor Ort arbeiten und das Team der Entwickler in Übersee arbeitet. Diese Strukturierung ermöglicht es, einen Zyklus einzurichten, in dem die Entwickler Problembehebungen und neue Anforderungen implementieren, während ihre Partner schlafen, und umgekehrt. Selbstverständlich sollten die Arbeitszeitpläne auch zeitliche Überschneidungen enthalten (am Anfang/Ende eines Arbeitstags). Beim zweiten Verfahren wird das Projekt in Blöcke unterteilt und versucht, jeden Block einem bestimmten Standort zuzuweisen und dabei auf diesen Standort möglichst viele Funktionen zu übertragen. Das zweite Verfahren bringt zwangsläufig eine bessere Kommunikation mit sich und fördert daher die agile Entwicklung stärker. Aber beide Verfahren funktionieren, und manchmal steht nur eines dieser Verfahren zur Wahl.

Die Auswahl des richtigen Modells ist ebenfalls sehr wichtig, stellt aber keine Erfolgsgarantie dar. Es wird dringend empfohlen, dass mindestens einer der Vertragspartner über Erfahrungen mit agiler Entwicklung (vorzugsweise in einer verteilten Umgebung) verfügen sollte. Der Mangel an direkter persönlicher Kommunikation sowie die zeitlichen, kulturellen und sprachlichen Unterschiede erfordern eine besondere Aufmerksamkeit und zusätzliche Anstrengungen, um die gewünschten Ergebnisse zu erhalten. Die Vorteile eines guten Auslandspartners (Kostenersparnisse, Personalaufstockung auf Nachfrage sowie Aufgaben in Bezug auf die Outsourcing-Infrastruktur) überwiegen die Investitionen, die zum Aufbau produktiver Beziehungen notwendig sind, bei weitem. Dieses positive Gleichgewicht wäre ohne moderne Tools, die durch die großartige Kommunikationsinfrastruktur möglich werden und heute global verfügbar sind, nicht denkbar.

Der Autor

Andrew Filev (MCA, MVP) ist für Auslandsgeschäfte zuständiger Vizepräsident von Murano Software. Er richtet Auslandsentwicklungszentren ein und leitet und motiviert Teams. Als exzellenter Kommunikator überbrückt er die Lücken zwischen den verschiedenen Kulturen und baut dauerhafte Partnerschaften mit Kunden auf.

Ressourcen

Exploding the Myths of Offshoring“ (Sprengen der Mythen des Offshorings) von Martin N. Baily und Diana Farrell, The McKinsey Quarterly (McKinsey & Company, 2004) (Hinweis: Registrierung erforderlich)

Manifesto for Agile Development (Manifest für agile Entwicklung)


Anzeigen:
© 2015 Microsoft