GegenĂŒber „Enterprise Resource Planning Systems” (ERP-Systeme) habe ich gemischte GefĂŒhle. Sie sind einerseits allumfassende Schweizer Taschenmesser: MĂ€chtige Werkzeuge, um ProzessablĂ€ufe (teil-)automatisiert mit Software umzusetzen, ohne eine Armada an Softwareentwickler*innen zu beschĂ€ftigen. Auf der anderen Seite können grĂ¶ĂŸere eigene Anpassungen von ERP-Systemen zu immensen Kostenfaktoren ohne Nutzen und somit zu großen BĂŒrden werden: den gefĂŒrchteten „Legacy-Systemen”.

Einleitung

Ich möchte anhand einer (mehr oder weniger) fiktiven Geschichte erzÀhlen, wie ein Unternehmen in tiefen Schwierigkeiten mit seinem eingekauften ERP-System gerÀt. Dazu verwende ich die Werkzeuge Wardley Maps von Simon Wardley sowie die Core Domain Pattern (aus dem Bereich des strategischem Domain-driven Design) von Nick Tune, um die normalerweise nicht sichtbaren VorgÀnge und Herausforderungen auf einer strategischen Ebene darzustellen.

RudimentÀre Kenntnis von Wardley Maps wird empfohlen, ist jedoch zum GrundverstÀndnis des Blog-Artikels nicht zwingend notwendig.

Infos zu Wardley Maps

Wardley Maps sind evolvierende Strategielandkarten, welche ein kontextspezifisches Situationsbewusstsein fĂŒr die eigene IT-Landschaft schaffen.

Die y-Achse einer Wardley Map zeigt die Wertschöpfungskette ausgehend von den Stakeholder-BedĂŒrfnissen zu den betrachteten Komponenten, welche diese BedĂŒrfnisse befriedigen. Komponenten werden teils direkt von den Stakeholder wahrgenommen (wenn sie z. B. direkt genutzt werden) oder sind teils ĂŒberhaupt nicht mehr sichtbar (da sie z. B. technische Details sind).

Die x-Achse unterteilt die Evolution einer Komponente in vier aufeinanderfolgende Phasen: 1) Genesis: Es ist völlig unklar, wie man die Komponente herstellt oder ob sie ĂŒberhaupt jemand braucht. 2) Custom Built: Herstellungsprozesse sind noch sehr wacklig und wenig wiederholbar, es gibt aber schon einen ersten Bedarf. 3) Product: Das Hergestellte wird mit beherrschbaren Prozessen zuverlĂ€ssig erzeugt und der Markt nimmt es in großer StĂŒckzahl ab. 4) Utility: Der sichere Massenmarkt bezieht das Angebotene quasi direkt aus der Steckdose.

FĂŒr Wardley Maps gibt es ein hervorragendes 5-Minuten-Intro-Video, ein paar Einstiegsempfehlungen sowie ein kurzes Online-Video-Tutorial von mir.

Nachfolgend wechseln sich zudem die Visualisierungen und die zugehörige Terminologie zusammen mit erklÀrenden Texten ab.

Die Geschichte

Unsere Geschichte beginnt in den frĂŒhen 2000ern. Wir waren Softwareentwickler*innen in einem mittelstĂ€ndischen E-Commerce-Unternehmen. Das Unternehmen verkaufte Waren auf Online-MarktplĂ€tzen wie eBay oder Amazon. Kein anderes Unternehmen konnte APIs von verschiedenen MarktplĂ€tzen so integrieren wie wir. Wir waren die Stars unter den API-Integratoren. Die flexible API-Integrationen war unser KerngeschĂ€ft („core”). Als Vehikel verwendeten wir dazu ein brandneues ERP-System, das wir entsprechend den WĂŒnschen nach flexiblen API-Integrationen „gecustomized” hatten.

Visualisierung der Ausgangssituation des ERP-Systems mit einer Wardley Map
Visualisierung der Ausgangssituation des ERP-Systems mit einer Wardley Map

Das ERP-System wurde aber nicht nur fĂŒr die API-Integration allein eingefĂŒhrt, sondern auch fĂŒr all diese allgemeinen Dinge wie etwa fĂŒr die Rechnungsstellung, fĂŒr die wir natĂŒrlich keine eigene separate Anwendung erstellen wollten. Auch dafĂŒr nutzten wir die mitgelieferten ERP-Module (wir waren ja nicht dumm!).

Weitere, nicht-differenzierende Funktionen kommen hinzu
Weitere, nicht-differenzierende Funktionen kommen hinzu

Wie es eben so ist, kamen mit der Zeit immer spezielle Anforderungen von Vertriebler*innen zu uns ERP-Systementwickler*innen. Wir konnten (und wollten auch) dem Vertrieb einfach keinen Wunsch abschlagen. Dies hatte aber seinen Preis: Das ganze Customizing bei den API-Anbindungen war teuer und stark von den Interna des ERP-Systems abhĂ€ngig (ERP v1 base). Ja, es gab Dinge wie Schnittstellen und ein herstellerspezifisches Datenbankschema, aber wer scherte sich denn damals wirklich um die x-te Normalform, oder? Und die paar zusĂ€tzlichen Spalten in den vorhandenen Tabellen waren schnell gemacht. Niemand konnte das ERP-System so aufmotzen wie wir! Als technisch richtig fitte Entwickler*innen haben wir sogar das Basismodul unseres ERP-Systems (ERP v1', grĂŒn) angepasst.

Das urspĂŒngliche Basismodul wird eigenwillig angepasst, wodurch die QualitĂ€t leidet
Das urspĂŒngliche Basismodul wird eigenwillig angepasst, wodurch die QualitĂ€t leidet

Einige Jahre strichen ins Land und plötzlich (wer hĂ€tte das gedacht!): Eine GesetzesĂ€nderung in der Rechnungsstellung! Der Hersteller des ERP-Systems veröffentlichte eine neue Version (ERP v2, rot), die alle Updates fĂŒr Einhaltung der neuen gesetzlichen Vorschriften fĂŒr das Rechnungsmodul kostenlos mit sich brachte (ebenfalls rot). Wir wĂŒrden nur auf diese Version aktualisieren mĂŒssen und alles wĂ€re wieder in Ordnung.

Eine neue, weiterentwickelte ERP-Systemversion erscheint
Eine neue, weiterentwickelte ERP-Systemversion erscheint

Aber nicht so schnell! Vor einigen Jahren haben wir das ERP-Basismodul so stark verĂ€ndert, dass wir nicht auf neue ERP-Versionen aktualisieren konnten. Es war eine von uns ganz bewusst getroffene Entscheidung, das supercoole API-Integrationstool auf der BasisfunktionalitĂ€t des ERP-Systems umzusetzen, um schnell die BedĂŒrfnisse des Vertriebs befriedigen zu können. Damals war es auch völlig in Ordnung fĂŒr uns, dies so zu tun. Aber wir steckten damit auf einmal auch in der Vergangenheit fest, da wir die Interna des ERP-Systems massiv angepasst hatten. Dadurch entstand eine enorme TrĂ€gheit in der Weiterentwicklung des ERP-Systems (rote dicke Linien).

Eigene Änderungen am Basismodul verhindern ein ERP-Systemupdate
Eigene Änderungen am Basismodul verhindern ein ERP-Systemupdate

Wir hatten auch eine Menge Geld in die Anpassungen gesteckt. Wir wollten also nicht alle Investitionen einfach so von Bord werfen. Aber selbst, wenn wir bereit gewesen wĂ€ren, den Preis dafĂŒr zu zahlen, hĂ€tten wir nicht aktualisieren können: Alle Module in unserem System waren von einer undefinierten Masse an kundenspezifischem Code im Basismodul abhĂ€ngig. Das Risiko, all die wertvollen Mikrooptimierungen zu verlieren, war uns einfach zu hoch. Damit blieb uns nur eine Option ĂŒbrig: Wir mussten sicherstellen, dass die alte Version unseres Moduls fĂŒr die Rechnungsstellung den neuen gesetzlichen Bestimmungen entsprach. Wir programmierten unser eigenes ErgĂ€nzungsmodul fĂŒr die Rechnungserstellung (rot gefĂ€rbte Komponente unten links) – einer Funktion, welche uns keine Differenzierung gegenĂŒber dem Wettbewerb liefert („generic subdomain”). Oder anders ausgedrĂŒckt: Wir verbrannten Geld!

Eine windige Nachimplementierung eines neuen Rechnungsstellungsmoduls entsteht
Eine windige Nachimplementierung eines neuen Rechnungsstellungsmoduls entsteht

Aber es kam noch dicker: Mit dem neuen ERP-System gab es auch eine neue, supercoole API-Integration einfach „out of the box” (violett eingefĂ€rbt). Alle unsere Konkurrenten konnten nun auf das neuere System updaten. Unsere Differenzierung verschwand im Vergleich zu unseren Mitbewerbern völlig und ließ uns mit dem alten System zurĂŒck, weil wir diese Chance nicht nutzen konnten. Wir steckten in der Vergangenheit fest (violette dicke Linie)!

API-Integrationsmöglichkeiten kommen zu den Standardfunktionen des neuen ERP-Systems hinzu
API-Integrationsmöglichkeiten kommen zu den Standardfunktionen des neuen ERP-Systems hinzu

Wir stießen auf „Table Stakes Former Core” (sinngemĂ€ĂŸe Übersetzung etwa „Ballast des frĂŒheren Differenzierungsmerkmals”): Unser frĂŒheres Kernelement des Erfolgs wurde zu einer bloßen unterstĂŒtzenden Funktion degradiert und lastete schwer auf uns. Auf einmal standen wir komplett mit der bloßen Aufrechterhaltung gewöhnlicher Systemfunktionen („generic”, „supporting”) da. Kein neuer, differenzierender Wettbewerbsvorteil („core”), dafĂŒr aber ein Berg von Herausforderungen, um das alte System irgendwie am Laufen zu halten, weil wir kein Geld mehr hatten, aus diesem Schlamassel herauszukommen. Unser eigenes Customizing ist nun unser Legacy!

Die eigene ERP-Systemerweiterung zu der API-Integration ist nun eine BĂŒrde
Die eigene ERP-Systemerweiterung zu der API-Integration ist nun eine BĂŒrde

Das unglĂŒckliche Ende.

Und nun?

Was ist die Moral der Geschichte?

NatĂŒrlich ist diese Geschichte ĂŒberspitzt erzĂ€hlt worden. Was lief denn nun gut und was lief schlecht? Nun ja, niemand kann die Zukunft vorhersehen. Und manchmal lĂ€uft es auch einfach nur unglĂŒcklich. Es gibt immer wieder sehr verzwickte Lagen, in die wir auch ohne ERP-Systeme laufen können. Aber es gibt einige Dinge insbesondere beim Einsatz von ERP-Systemen zu beachten:

Wenn wir ein ERP-System verwenden, schlagen wir uns nicht mit der Anpassung des Basismoduls des ERP-Systems als Differenzierungselement herum. Dies fĂŒhrt frĂŒher oder spĂ€ter ansonsten nur zu Lasten einer fehlenden Updatemöglichkeit. Wir denken bei Erweiterungen auch immer daran, dass es AbhĂ€ngigkeiten zu Modulen anderer strategischer (Nicht-)Bedeutung gibt, die vom Basismodul abhĂ€ngen. Im schlimmsten Fall wendet sich hier auf einmal das Blatt und wir stehen mit der kostenintensiven Pflege von unterstĂŒtzenden und generischen Modulen dar, die keine Differenzierung gegenĂŒber dem Wettbewerb bietet.

Und auf der Metaebene hoffe ich, einen Beitrag dazu geleistet zu haben, wie solche Situationen mit Hilfe von Simon Wardleys „Wardley Maps” und Nick Tunes „Core Domain Patterns” aufgezeigt und analysiert werden können. Ich schĂ€tze beide Werkzeuge als großartige Hilfen fĂŒr mehr kontextspezifisches, strategisches Denken im IT-Bereich.


Hinweis: Diesen Blog-Post habe ich mit Àhnlichem Inhalt auch als englischsprachige Version (externe Seite) veröffentlicht.

Header-Bild von Ghinzo auf Pixabay