La compilation sauvera-t-elle les supply chains?

Par compilation, j’entends l’art de concevoir des compilateurs, c’est-à-dire des programmes informatiques qui traduisent le code source dans un autre langage. Peu de personnes en dehors des rangs de programmeurs savent ce qu’un compilateur fait, et peu de programmeurs savent comment un compilateur est conçu. Au début, les préoccupations de compilation semblent, pour le moins, éloignées de celles de la supply chain. Pourtant, de nos jours, chez Lokad, ce sont les techniques de compilation qui sauvent la situation, projet supply chain après projet supply chain.
Autopromotion sans complexe : les ingénieurs logiciels possédant des compétences en compilation ne poussent pas sur les arbres, et nous recrutons. Vous voulez travailler sur des projets qui comptent ? Eh bien, la prochaine fois que votre avion sera en retard parce qu’une pièce manquait, ou la prochaine fois que le médicament que vous recherchez sera en rupture de stock, souvenez-vous que vous auriez pu faire la différence en rejoignant Lokad :-)
Les supply chains sont complexes, incroyablement complexes. La mondialisation a multiplié les opportunités d’approvisionnement, mais les délais sont plus longs et plus erratiques que jamais. Les canaux de vente se multiplient également : il existe des magasins physiques, des boutiques en ligne, des marketplaces, des revendeurs, des grossistes, … Et maintenant, grâce à Amazon, chacun, partout, s’attend à ce que tout soit commandé et reçu en une nuit. Les attentes supply chain sont plus élevées que jamais.
Aborder les problèmes de supply chain avec moins que l’expressivité complète d’un langage de programmation ne fonctionne pas. Tout comme la programmation Lego n’arrivera jamais, les défis de la supply chain ne se réduiront pas à de simples cases à cocher et menus déroulants. Cela n’empêche en rien les fournisseurs de logiciels d’essayer, soit dit en passant. Les solutions incluant plus de 1000 tables, chacune comportant en moyenne environ 100 champs, sont malheureusement trop courantes. Et tandis que l’entreprise cliente n’utilise qu’environ 1 % de l’ensemble des fonctionnalités de la solution, elle doit quand même composer avec sa complexité omniprésente.
La compilation sauve la situation car elle offre un vaste corpus de connaissances et de savoir-faire en matière de création d’abstractions de haute qualité conçues comme des outils puissants pour résoudre des problèmes statistiques et combinatoires (et bien plus encore, en réalité). Et la plupart des défis de la supply chain se révèlent être précisément de nature statistique et combinatoire. Par exemple, chez Lokad, en introduisant une algèbre des distributions, nous avons réussi à venir à bout de problèmes complexes de lead time qui résistaient à nos approches plus directes via des fonctionnalités logicielles préemballées.
Ce qui distingue les fonctionnalités du langage des fonctionnalités d’application habituelles (wysiwyg), c’est que les premières sont bien moins sensibles aux spécificités d’un défi donné que leurs homologues d’application. Par exemple, considérons une situation dans laquelle votre logique de détection de rupture de stock se retourne contre vous dans le cas particulier de produits ultra-saisonniers. Si la fonctionnalité est mise en œuvre via une construction du langage, alors vous pouvez toujours restreindre le périmètre des données jusqu’à ce qu’elle fonctionne exactement là où elle est censée agir ; éventuellement en ajustant dynamiquement ce périmètre par le biais d’une analyse numérique ad hoc. En revanche, avec une fonctionnalité d’application, vous êtes coincé avec les options de filtrage qui y ont été intégrées. Les fonctionnalités d’application ne conviennent que si vos problèmes sont restreints et bien définis, ce qui est en réalité très éloigné de l’optimisation de la supply chain.
En supply chain, la programmabilité brille parce que :
- Les problèmes sont à la fois très numériques et très structurés
- Les supply chains sont modulaires et cette modularité doit être exploitée
- Le nombre de variables est conséquent mais pas accablant
- Ajuster la solution à la forme précise des problèmes est essentiel
Il est légèrement amusant de constater combien de fournisseurs de logiciels ont tendance à réinventer progressivement la programmabilité. À mesure que l’interface utilisateur gagne en profondeur et en complexité, avec la possibilité d’ajouter des filtres, des options, des hooks de pré- ou post-traitement, des alertes préconfigurées, des indicateurs de performance (KPI), l’interface utilisateur devient progressivement programmable, et atteint le point où seul un programmeur peut réellement la comprendre (précisément grâce à ses compétences en programmation déjà acquises). Programmable, oui, mais de manière très convolutée.
La compilation est l’art d’amplifier les compétences en ingénierie : il faut créer des abstractions et des constructions de langage qui facilitent la réflexion lors de la résolution de problèmes. Comme Brian Kernighan l’a fameusement écrit : Tout le monde sait que le débogage est deux fois plus difficile que l’écriture d’un programme dès le départ. Alors, si vous faites preuve de toute votre ingéniosité en l’écrivant, comment diable allez-vous le déboguer ? La même logique s’applique à l’optimisation de la supply chain, car c’est essentiellement la même chose que d’écrire du code. Eh bien, chez Lokad, c’est littéralement la même chose.
La sagesse conventionnelle en informatique affirme qu’il faut automatiser d’abord les parties simples, laissant aux experts humains le soin de gérer les éléments plus complexes. Pourtant, dans la supply chain, cette approche se retourne systématiquement contre nous. Les parties les plus complexes de la supply chain sont presque toujours les plus coûteuses, celles qui nécessitent une attention urgente. Les parties simples peuvent se gérer d’elles-mêmes grâce au min/max de stocks ou au Kanban. Tout comme vous ne construiriez pas un logiciel pour des voitures autonomes en raffinant un logiciel destiné aux opérations automatiques de trains, vous ne pouvez pas résoudre de difficiles problèmes de supply chain en adaptant un logiciel initialement conçu pour relever des défis simples.
Naturellement, la compilation à elle seule ne suffit pas pour faire face aux défis de la supply chain. Machine learning, le traitement des données massives et une quantité considérable de compétences humaines méritent également d’être mentionnés. Cependant, dans tous les cas, disposer d’abstractions de haute qualité minutieusement élaborées aide considérablement. Le machine learning est infiniment plus simple lorsque les données d’entrée sont bien préparées. Le traitement des données massives est aussi beaucoup plus simple lorsque les calculs se prêtent aisément à un haut degré de parallélisation.