Die Zusammenarbeit mit einem Software-Partner
Drei Zusammenarbeitsmodelle für ein konstruktives Miteinander bei der Softwareentwicklung mit einem Partner
Software-Systeme zu entwickeln, ist eine zeit- und ressourcenintensive Angelegenheit. Die heutigen Systeme werden immer komplexer und umfangreicher. In vielen Fällen ist es nicht mehr möglich, ohne zusätzliche Unterstützung durch einen Software-Partner, solche Systeme zu entwickeln.
In diesem Beitrag erfahren Sie:
- in welchen Situationen eine Zusammenarbeit mit Software-Partner sinnvoll ist und warum der Austausch über die Art der Zusammenarbeit wichtig ist,
- welche Herausforderungen die Zusammenarbeit mit einem Software-Partner stellt und
- welche Erfolgsfaktoren eine effiziente und effektive Zusammenarbeit gewährleisten.
In welchen Situationen ist eine Zusammenarbeit mit einem Software-Partner sinnvoll?
Eine klare Vorstellung über die Gründe und Ziele einer Zusammenarbeit mit einem Software-Partner ist sehr wichtig, um gezielt den passenden Partner zu finden und von Anfang an das richtige Set-up zu wählen. Vielleicht denken Sie, dass der Software-Partner bereits weiß, wie die Zusammenarbeit optimal gestaltet werden sollte. Warum also sollten Sie sich selbst intensiv Gedanken darüber machen?
Zwar bringt ein erfahrener Software-Partner in der Regel eine Vorstellung von der Zusammenarbeit mit, jedoch verfolgt er möglicherweise eigene Ziele und hat eine andere Perspektive darauf, wie die Zusammenarbeit idealerweise aussehen sollte. Deshalb ist es essenziell, im Vorfeld Ihre eigenen Beweggründe und Ziele klar zu definieren.
Einige mögliche Gründe und Zielsetzungen für eine Partnerschaft können sein:
- Sie benötigen kurzfristig und temporär zusätzliche Manpower für Ihr Entwicklungsteam.
- Sie möchten ein vollständiges System oder Teilsysteme extern entwickeln lassen, da Sie entweder keine eigene Softwareentwicklung haben oder Ihre Kapazitäten ausgelastet sind.
- Sie benötigen Expertenwissen zu einem spezifischen Thema, das Sie intern nicht selbst aufbauen können oder möchten.
- Sie planen eine langfristige Erweiterung Ihrer Entwicklungsressourcen und suchen dafür einen externen Partner, um flexibler auf Schwankungen in der Auslastung zu reagieren oder von den Kostenvorteilen einer Nearshore- oder Offshore-Entwicklung zu profitieren.
Diese Liste ist keineswegs abschließend – es gibt zahlreiche weitere gute Gründe für eine Partnerschaft. Wichtig ist, dass in solchen Fällen eine Zusammenarbeit sorgfältig geprüft und professionell aufgesetzt wird; andernfalls sind Probleme nahezu unvermeidlich.
Herausforderungen und Grundsätze einer Zusammenarbeit
Eine Zusammenarbeit mit einem Software-Partner bringt oft verschiedene Herausforderungen mit sich. Nicht selten tauchen solche Stolpersteine auf:
- Reibungsverluste durch mangelnde Koordination und Abstimmung.
- Missverständnisse bei Anforderungen, Schnittstellen und anderen Spezifikationen.
- Fehlende konzeptionelle Integrität in der Software – ähnliche Aufgaben werden mit unterschiedlichen Konzepten gelöst.
- Uneinheitlicher Code, der die Wartung erschwert.
- Integrationsprobleme mit anderen Subsystemen.
- Ineffizienzen durch die Notwendigkeit von Unterstützung, Reviews und Kontrolle externer Arbeiten.
- Mangelnde Kenntnisse oder unzureichende Dokumentation, was die Übernahme externer Artefakte erschwert.
Um solche und ähnliche Herausforderungen zu vermeiden, ist es entscheidend, die Zusammenarbeit von Beginn an klar zu definieren und professionell aufzusetzen. Hier bieten sich zwei Grundsätze an:
Grundsatz 1: Vermeiden Sie unnötige Komplexität durch die Zusammenarbeit mit externen Partner.
Eine externe Zusammenarbeit darf die Entwicklungsprozesse nicht unnötig verkomplizieren. Leider ist dies in der Praxis häufig der Fall, was den gewünschten Unterstützungseffekt verpuffen lässt. Sie können dies daran erkennen, dass der Nutzen der externen Hilfe infrage gestellt wird – etwa durch Aussagen wie „Dieser Partner bringt uns nichts“ oder „Mit diesen Externen sind wir sogar langsamer“.
Solche Probleme treten meist dann auf, wenn das Set-up nicht stimmt oder die Zusammenarbeit nicht ausreichend klar definiert wurde.
Grundsatz 2: Sorgen Sie dafür, dass die Ergebnisse des Software-Partners auch nach dessen Einsatz weiter genutzt und weiterentwickelt werden können.
Ob Sie später die Entwicklung wieder internalisieren möchten, den Partner wechseln wollen oder auch einfach, um sich nicht in eine unnötige Abhängigkeit zu manövrieren – Sie sollten in jedem Fall zu den folgenden Fragen Klarheit haben:
- Hat der Software-Partner Ihre internen Entwicklungsrichtlinien, wie etwa Kodierrichtlinien, eingehalten?
- Mit welchen Tools wurden die Ergebnisse erstellt, und können diese mit Ihren eigenen Tools weiterverarbeitet werden?
- Wie wurden die Ergebnisse versioniert? Haben Sie Zugriff auf die Historie?
- Wie wurden Architektur- und Designentscheidungen dokumentiert?
- Sind die erstellten Tests in Ihre Testumgebung integrierbar?
Ein klares Verständnis dieser Aspekte ist unverzichtbar, um die Zusammenarbeit langfristig erfolgreich zu gestalten.
Modelle für die Zusammenarbeit mit externen Software-Partnern
Werfen wir nun einen Blick auf die drei häufigsten Modelle für die Zusammenarbeit mit externen Partnern. Wo liegen die Unterschiede zwischen den Modellen und welche Faktoren beeinflussen eine effiziente und effektive Entwicklung mit Software-Partnern?
Starten wir mit dem einfachsten Modell:
Skalierung
Dieses Modell ist dann zu verwenden, wenn Sie Ihre bestehende Entwicklung verstärken müssen. Die folgende Darstellung zeigt, wie dieses Modell grundsätzlich funktioniert.
Abbildung 1: Zusammenarbeitsmodell „Skalierung“
Wichtig bei dieser Art der Zusammenarbeit ist, dass durch die externe Unterstützung wenig zusätzliche Komplexität in die Entwicklung hineinkommt. Das heißt, die externen Mitarbeiter sollten wie interne Mitarbeiter behandelt werden und die gleichen Prozesse und Standards befolgen. In einem agilen Set-up bedeutet das, dass die zusätzlichen Entwickler bspw. Teil des bestehenden Scrum-Teams werden.
Die Erfolgsfaktoren in einem solchen Set-up sind:
- definierte Anforderungen (auch in Form von User Storys möglich),
- vorhandene und dokumentierte Coding- und Development-Guidelines,
- Architektur-Definitionen und Dokumentationen,
- Guidelines und Checklisten für das Aufsetzen der Entwicklungsinfrastruktur, sowie
- Guidelines und Checklisten für Berechtigungen und Accounts von externen Mitarbeitern.
Um die Zusammenarbeit zu reflektieren und gegebenenfalls zu optimieren, empfiehlt es sich, ein regelmäßiges Steuerungs-Meeting mit dem Verantwortlichen des Software-Partners aufzusetzen.
Damit kommen wir zum zweiten Modell:
Expertise
Dieses Modell sollten Sie dann nutzen, wenn Sie zu einem bestimmten Thema keine eigene Expertise haben und sich diese deshalb von extern holen müssen. Im Gegensatz zum Modell „Skalierung“ macht es hier keinen Sinn, den oder ide Experten ins Team zu integrieren. Meine Empfehlung ist hier, falls es sich nicht nur um einen Experten handelt, einen „Single Point of Contact (SPOC)“ zu installieren, der die Zusammenarbeit mit den Experten koordiniert. Dieser SPOC sollte mit den Experten eine auftragsbasierte Zusammenarbeit aufsetzen und unterhalten. Das Resultat, d. h. die Lösung oder das erforderliche Know-how, ist vorab zu definieren, damit eine effektive Zusammenarbeit möglich ist. Die Einbindung des Resultats geschieht dann wieder im Entwicklungsteam.
Das folgende Schaubild veranschaulicht dieses Modell:
Abbildung 2: Zusammenarbeitsmodell „Expertise“
In diesem Modell sind die folgenden beiden Faktoren essenziell:
- Klare Auftragsdefinition zu dem bzw. den Experten, die sämtliche relevanten Aspekte umfassen sollte. Zum Beispiel funktionelle Anforderungen, Qualitätsanforderungen oder Vorgehensprozesse.
- Definition eines „Single Point of Contact“, welcher die effiziente und effektive Zusammenarbeit mit dem bzw. den Experten sicherstellt.
Und damit zum dritten Modell:
Auslagerung von Paketen, Teil- oder Gesamtsystemen
Dieses Modell kommt dann zum Einsatz, wenn Sie definierte Aufgabenpakete, Teilsysteme oder Gesamtsysteme extern umsetzen lassen möchten. Hierfür gibt es üblicherweise verschiedene Gründe:
- Sie haben einen enormen Skalierungsbedarf in Ihrer Entwicklung und benötigten daher ein Team oder vielleicht sogar mehre Teams.
- Sie möchten von den reduzierten Stunden- oder Tagessätzen einer Near- oder Offshore-Entwicklung profitieren.
- Sie möchten Teilsysteme oder ganze Systeme extern entwickeln lassen, für die Sie nicht das notwendige Know-how intern haben.
- Sie haben gar keine eigene Softwareentwicklung und möchten deshalb die Erstellung Ihres Systems extern durchführen lassen.
Bei diesem Modell ist es essenziell, dass die Koordination über Anforderungen beziehungsweise in einem agilen Set-up über User Storys läuft. Die Anforderungen für das externe Team müssen selektiert und zur Verfügung gestellt werden. Wie genau das externe Team entwickelt, ist nicht relevant. Wichtig ist jedoch, dass neben den inhaltlichen (fachlichen) Anforderungen auch Qualitäts- und Lieferanforderungen definiert und abgestimmt werden. Dies geschieht im Idealfall über einen SPOC des Software-Partners, der sicherstellt, dass die entsprechenden Anforderungen auch erfüllt werden.
Die Integration oder, falls ein ganzes System vom Software-Partner entwickelt wird, die Verifikation und Validierung der Lieferobjekte des Partners sollten intern erfolgen, um sicherzustellen, dass die Kundenerwartungen auch wirklich erfüllt werden.
Auch hier wieder die Veranschaulichung in einer Abbildung:
Abbildung 3: Zusammenarbeitsmodell „Pakete, Teil- oder Gesamtsystem“
Die Erfolgsfaktoren in einem solchen Set-up sind:
- Definierte Anforderungen (z. B. in Form von User Storys)
- Definition von Qualitäts-, Prozess- und Lieferanforderungen bzw. Vorgaben für dem Software-Partner. Dieser Punkt umfasst alles, was für die spätere Weiterarbeit wichtig ist.
- Single Point of Contact (SPOC) auf Seite des Software-Partners, der sicherstellt, dass die Anforderungen und Vorgaben eingehalten werden.
- Bei Teilsystemen und Paketen klare und eindeutige Schnittstellen-Definitionen, um die Integration ins Gesamtsystem sicherzustellen.
Fazit
Eine erfolgreiche Zusammenarbeit mit einem Software-Partner erfordert mehr als die bloße Auswahl eines kompetenten Dienstleisters – sie erfordert eine bewusste und strategische Herangehensweise. Nur so können die Vorteile externer Unterstützung voll ausgeschöpft und gleichzeitig typische Herausforderungen minimiert werden.
Zunächst ist es entscheidend, Ihre Ziele und Erwartungen klar zu definieren. Was möchten Sie durch die Zusammenarbeit erreichen? Benötigen Sie kurzfristige Unterstützung, spezifisches Fachwissen oder möchten Sie ganze Entwicklungsprojekte auslagern? Die Antwort auf diese Fragen ist die Grundlage für die Auswahl des geeigneten Partners und des passenden Zusammenarbeitsmodells.
Darüber hinaus ist es unerlässlich, die Zusammenarbeit sorgfältig zu strukturieren. Klare Anforderungen, definierte Prozesse, transparente Kommunikationswege und die Einhaltung gemeinsamer Standards sind dabei entscheidende Erfolgsfaktoren. Versäumnisse in diesen Bereichen können schnell zu Reibungsverlusten, Missverständnissen und ineffizienten Prozessen führen.
Auch die Nachhaltigkeit der Ergebnisse sollte von Anfang an im Fokus stehen. Es ist wichtig sicherzustellen, dass die Ergebnisse des Software-Partners problemlos weiterverwendet, weiterentwickelt oder in Ihre internen Prozesse integriert werden können. Dies erfordert klare Vorgaben hinsichtlich Dokumentation, Tools, Richtlinien und der Verfügbarkeit von Informationen.
Schließlich sollten Sie die Zusammenarbeit regelmäßig evaluieren. Sind die definierten Ziele noch aktuell? Werden die vereinbarten Standards eingehalten? Gibt es Möglichkeiten, die Zusammenarbeit weiter zu optimieren? Eine kontinuierliche Reflexion und Anpassung ist essenziell, um langfristig erfolgreich mit externen Partnern zusammenzuarbeiten.
Zusammengefasst: Eine erfolgreiche Partnerschaft basiert auf klaren Zielen, einer sorgfältigen Planung, strukturierten Prozessen und einer nachhaltigen Ergebnisorientierung. Mit einer solchen Herangehensweise können Sie nicht nur von der Expertise und den Ressourcen eines Software-Partners profitieren, sondern auch Ihre eigenen Entwicklungsziele effizient und effektiv erreichen.
Hinweise:
Mit steigender Vielfalt, Dynamik und Vernetzung nimmt die Komplexität von Projekten insbesondere Projekte mit Software immer weiter zu. Mitarbeiter mit unterschiedlichsten Voraussetzungen müssen effektiv zusammenarbeiten, um die Projektziele zu erreichen. Es wird zunehmend schwieriger, die Übersicht zu behalten. Matthias Künzi unterstützt Sie gerne dabei, Struktur, Systematik und Methodik in Ihre Vorhaben zu bringen. Sprechen Sie ihn bei Interesse einfach an. Und wenn Sie für reibungslose Softwareentwicklung und gut konstruierte Software interessieren, dann lohnt sich auch ein Blick in den Blog von visuellklar.
Wenn Ihnen der Beitrag gefällt oder Sie darüber diskutieren wollen, teilen Sie ihn gerne in Ihrem Netzwerk.
Matthias Künzi hat im t2informatik Blog einen weiteren Artikel veröffentlicht:
Matthias Künzi
Matthias Künzi (Dipl. El. Ing. HTL, Dipl. Software Ing. FH, Systemischer Coach) hat in den letzten 30 Jahren als Softwareentwickler, Software- und Systemarchitekt sowie als Führungskraft viel Erfahrung in der Entwicklung und Organisation von Softwaresystemen im Embedded- und kommerziellen Umfeld gesammelt. Mit seiner Firma „visuellklar“ unterstützt er Softwareunternehmen bei der Optimierung ihrer Organisation und Produktentwicklung. Sein Ziel ist es, Komplexität zu beherrschen und Unternehmen systematisch zu einer reibungslosen Softwareentwicklungsmaschinerie zu entwickeln.