Die größten (vermeidbaren) Komplexitätsfallen bei Software-Projekten
Immer wieder treten diese Probleme dabei an ähnlichen und dafür prädestinierten Punkten auf. Gut, wer diese bereits kennt und vorausahnend umschiffen kann:
Komplexitätsfalle Nr. 1: Integrationen werden zu spät angegangen
Die Systemintegration ist wahrscheinlich der ressourcenintensivste Teil der Implementierung eines Plattformprojekts. Sehr selten kommt man dazu, auf der metaphorischen „grünen Wiese“ etwas von Grund auf neu aufzubauen. Heutige Organisationen verfügen über bestehende technologische Infrastrukturen und laufende Systeme, die mit der neuen Plattform verbunden werden müssen. Die Systemintegration birgt dabei einige Risiken, denn Probleme werden oft erst sichtbar, wenn man unter die Haube schaut. Das ausführende Team hat wenig bis gar keinen Einfluss auf die bestehende IT-Landschaft.
Die zutiefst menschliche, aber für das Projekt zumeist fatale Reaktion: Die Integration wird bis ganz ans Projektende verschoben. Wenn jedoch erst zum Schluss grundlegende Defizite für die Anbindung an die bestehenden Systeme klar werden, ist es bereits zu spät. Um das zu vermeiden, sollte die Integration als größter technologischer Komplexitätstreiber so früh wie möglich angegangen werden.
Komplexitätsfalle Nr. 2: Das Projekt wird nicht vom Ende her gedacht
Aus dem ersten Punkt lässt sich bereits schließen, dass die Reihenfolge der einzelnen Schritte eines Software-Projekts keinesfalls beliebig ist. Der Trend vom klar definierten Ablauf des Wasserfall-Modells hin zum agilen Projektmanagement hat bei manchen Product-Ownern jedoch zu der falschen Annahme geführt, sich komplett vom linearen Denken des Projektverlaufs verabschieden zu können. Agilität heißt jedoch nicht, den bewährten Ablauf bestimmter Meilensteine komplett über den Haufen zu werfen. Auch und gerade hier sollte das Projekt gut geplant und vor allem von hinten her gedacht werden. Nur innerhalb der einzelnen Phasen kommen dann die Vorteile der Agilität zum Tragen.
Komplexitätsfalle Nr. 3: Zu viel Controlling-Anteil im produzierenden Team
Das ständige Aufschieben der Integration wird nicht nur von zu viel Freiheit in der Projektgestaltung begünstigt – es ist ebenso ein gutes Beispiel für den problematischen Umgang mit kognitiver Dissonanz. Wenn der Mensch sich mit einer schwierigen Situation konfrontiert sieht, verhilft er sich unbewusst dadurch, dass er bestimmte Aspekte der Realität nicht wahrnimmt oder leugnet. Beim Software-Projekt ist vor allem das umsetzende Team davon betroffen. Denn unter dem ständigen Eskalationsdruck läuft es schnell Gefahr, Probleme, die sich eigentlich bereits klar abzeichnen, nicht wahrhaben zu wollen und aktiv zu übersehen. Daher sollte das Controlling unbedingt ausgelagert und von Personen übernommen werden, die nicht selber am Projekt mitarbeiten.
Als „Auftraggeber auf Agenturseite“ bringen sie die nötige Distanz mit, um anhand der Zahlen und Ergebnisse des Teams einen objektiven Überblick zu behalten und sowohl frühzeitig als auch schonungslos auf Probleme hinweisen zu können, bevor sie zu komplex werden.
Komplexitätsfalle Nr. 4: Fehlendes Release-Management
Während des Projektverlaufs müssen ständig Änderungen an der IT-Infrastruktur durchgeführt werden. Hierbei entsteht häufig das Problem einer zu niedrigen Frequenz bei den regelmäßigen Deployments. Ist das jedoch der Fall, können Abhängigkeiten von nicht deploytem Code entstehen und Entwickler, die zur gleichen Zeit an unterschiedlichen, aber miteinander verlinkten Modulen arbeiten, geraten schnell in eine Sackgasse. Vor allem bei größeren Projekten, an dem viele Entwickler arbeiten, entsteht dann häufig das Problem, dass wie bei einem zusammengebauten Möbelstück zum Schluss eigentlich alles zusammenpasst, aber eine Schraube wackelt und niemand mehr sagen kann, welche das genau ist.
Mit einem guten Release-Management und hochfrequenten Deployments lässt sich das vermeiden und die Änderungen so sicher, effektiv und nachvollziehbar wie möglich umsetzen.
Komplexitätsfalle Nr. 5: Unbekannte Kultur und Entscheidungsstrukturen des Auftraggebers
Unnötige Komplexität kann nicht nur bei der Planung und Abstimmung innerhalb des Development-Teams entstehen, sondern ebenfalls bei der Zusammenarbeit mit dem Auftraggeber. Hier ist mitunter viel Kommunikationsarbeit zu leisten. Die ist jedoch von vornherein zum Scheitern verurteilt, wenn nicht von Anfang an eine allseitige Transparenz über Kultur und Entscheidungsstrukturen hergestellt wird. Denn letztlich kann die Agentur noch so gute Ergebnisse erzielen und regelmäßig klare Informationen zum Projektstand liefern – wenn die Hauptansprechperson diese nicht richtig weiterleitet, sind früher oder später Abstimmungsprobleme und Komplexitätssteigerung vorprogrammiert.
Fazit
Wie es der Name schon andeutet: Komplexe Projekte sind nun mal kompliziert. Die entsprechenden und wichtigsten Eskalationsfallen zu umgehen, ist letztlich jedoch kein Hexenwerk. Mit einem guten Management, das das Projekt vom Ende her denkt, das Controlling aus dem umsetzenden Team auslagert und regelmäßiges und hochfrequentes Deployment sowie eine transparente Kommunikation mit dem Auftraggeber sicherstellt, lässt sich jedes noch so komplexe Software-Projekt meistern und erfolgreich abschließen.