Ja. In einem bemerkenswerten Maße. Und ich hätte vor fast einem Jahrzehnt, als ich Lokad gründete, niemals gewagt, diese Meinung zu äußern.

Mit Kompilierung meine ich die Kunst des Erstellens von Compilern, also von Computerprogrammen, die Quellcode in eine andere Sprache übersetzen. Wenige Menschen außerhalb der Programmierer wissen, was ein Compiler tut, und wenige Menschen innerhalb der Programmierer wissen, wie ein Compiler entworfen wird. Zunächst scheinen Kompilierungsfragen (um es vorsichtig auszudrücken) mit Lieferkettenfragen nichts zu tun zu haben. Doch heutzutage ist es bei Lokad die Kompilierung, die den Tag rettet; ein Lieferkettenprojekt nach dem anderen.

Schamlose Eigenwerbung: Softwareingenieure mit Kompilierungskenntnissen wachsen nicht auf Bäumen, und wir stellen ein. Möchten Sie an Dingen arbeiten, die wichtig sind? Nun, das nächste Mal, wenn Ihr Flugzeug Verspätung hat, weil ein Teil fehlt, oder das nächste Mal, wenn das von Ihnen gesuchte Medikament nicht vorrätig ist, denken Sie daran, dass Sie einen Unterschied hätten machen können, indem Sie sich Lokad anschließen :-)

Lieferketten sind komplex, wahnsinnig komplex. Die Globalisierung hat die Beschaffungsmöglichkeiten vervielfacht, aber die Verzögerungen sind länger und unregelmäßiger als je zuvor. Vertriebskanäle werden ebenfalls vervielfacht: Es gibt physische Geschäfte, Online-Shops, Marktplätze, Wiederverkäufer, Großhändler, … Und jetzt erwartet dank Amazon jeder überall, dass alles über Nacht bestellt und geliefert wird. Die Erwartungen an die Lieferkette sind höher als je zuvor.

Die Lösung von Lieferkettenproblemen mit weniger als der vollen Ausdruckskraft einer Programmiersprache funktioniert nicht. Genauso wenig wie Lego-Programmierung möglich ist, passen Lieferkettenherausforderungen nicht in Kontrollkästchen und Dropdown-Menüs. Das hindert Softwareanbieter jedoch nicht daran, es zu versuchen. Lösungen, die mehr als 1000 Tabellen enthalten, wobei jede Tabelle im Durchschnitt etwa 100 Felder enthält, sind allzu häufig. Und während das Kundenunternehmen nur etwa 1% des Funktionsbereichs der Lösung nutzt, muss es dennoch mit ihrer allgegenwärtigen Komplexität zurechtkommen.

Kompilierung rettet den Tag, weil sie eine große Menge an Wissen und Know-how bietet, wenn es darum geht, hochwertige Abstraktionen als Werkzeuge zur Lösung statistischer und kombinatorischer Probleme (und noch viel mehr) zu entwickeln. Und die meisten Lieferkettenherausforderungen sind genau statistischer und kombinatorischer Natur. Bei Lokad haben wir beispielsweise durch die Einführung einer Algebra der Verteilungen komplexe Durchlaufzeit-Probleme “gelöst”, die unseren direkteren Ansätzen durch vorgefertigte Softwarefunktionen widerstanden haben.

Was Sprachfunktionen von den üblichen App-Funktionen (WYSIWYG) unterscheidet, ist, dass Sprachfunktionen viel weniger empfindlich für die Besonderheiten einer bestimmten Herausforderung sind als ihre App-Funktionsgegenstücke. Betrachten wir zum Beispiel eine Situation, in der Ihre Bestandsausfallerkennungslogik im speziellen Fall von ultrajahreszeitlichen Produkten fehlschlägt. Wenn die Funktion durch ein Sprachkonstrukt bereitgestellt wird, können Sie den Datenbereich immer so einschränken, dass die Funktion genau dort funktioniert, wo sie beabsichtigt ist; möglicherweise den Bereich dynamisch durch eine ad-hoc numerische Analyse anpassen. Im Gegensatz dazu sind Sie bei einer App-Funktion auf die Filteroptionen beschränkt, die in diese Funktion eingebaut wurden. App-Funktionen passen nur dann gut, wenn Ihre Probleme eng und klar definiert sind, was bei der Optimierung von Lieferketten tatsächlich sehr untypisch ist.

In der Lieferkette glänzt die Programmierbarkeit, weil:

  • Probleme sowohl hoch numerisch als auch sehr strukturiert sind
  • Lieferketten modular sind und diese Modularität genutzt werden muss
  • Die Anzahl der Variablen signifikant, aber nicht überwältigend ist
  • Die genaue Form der Probleme entscheidend ist

Es ist etwas amüsant zu sehen, wie viele Softwareanbieter dazu neigen, die Programmierbarkeit allmählich neu zu erfinden. Wenn die Benutzeroberfläche in Tiefe und Komplexität wächst, mit der Möglichkeit, Filter, Optionen, Vorverarbeitungs- oder Nachverarbeitungshooks, Vorlagenbenachrichtigungen, KPI-Monitore hinzuzufügen, wird die Benutzeroberfläche allmählich zu einer programmierbaren Sache, und erreicht den Punkt, an dem nur ein Programmierer tatsächlich Sinn daraus machen kann (genau dank seiner oder ihrer vorhandenen Programmierkenntnisse). Programmierbar ja, aber auf eine sehr verworrene Weise.

Die Kompilierung ist die Kunst, Ingenieurkenntnisse zu verstärken: Man muss Abstraktionen und Sprachkonstrukte entwickeln, die das Denken bei der Lösung von Problemen vereinfachen. Wie Brian Kernighan berühmt schrieb: Jeder weiß, dass das Debuggen doppelt so schwer ist wie das Schreiben eines Programms. Wenn du also so clever bist, wie du sein kannst, wenn du es schreibst, wie wirst du es jemals debuggen? Die gleiche Logik gilt für die Optimierung der Lieferkette, denn im Grunde genommen ist es dasselbe wie das Schreiben von Code. Nun, bei Lokad ist es buchstäblich dasselbe.

Die konventionelle IT-Weisheit besagt, dass man zuerst die einfachen Teile automatisieren sollte und menschliche Experten mit den komplexeren Elementen zurechtkommen lässt. Doch in der Lieferkette scheitert dieser Ansatz jedes einzelne Mal kläglich. Die komplexesten Teile der Lieferkette sind fast immer die kostspieligsten, diejenigen, die dringend Aufmerksamkeit benötigen. Die einfachen Teile können sich selbst durch Min/Max Bestände oder Kanban kümmern. Genauso wie man Software für autonome Autos nicht entwickeln würde, indem man Software für den automatischen Zugbetrieb verfeinert, kann man schwierige Probleme in der Lieferkette nicht angehen, indem man Software verfeinert, die ursprünglich entwickelt wurde, um einfache Herausforderungen zu lösen.

Natürlich reicht allein die Kompilierung nicht aus, um den Herausforderungen der Lieferkette gerecht zu werden. Auch maschinelles Lernen, die Verarbeitung großer Datenmengen und eine beträchtliche Menge an menschlichen Fähigkeiten sind erwähnenswert. In allen Fällen hilft es jedoch erheblich, sorgfältig hochwertige Abstraktionen zu entwickeln. Das maschinelle Lernen ist wesentlich einfacher, wenn die Eingangsdaten gut vorbereitet sind. Die Verarbeitung großer Datenmengen ist auch viel einfacher, wenn Berechnungen sich leicht für einen hohen Grad an Parallelisierung eignen.