Bei der Übernahme dieses Auftrags bestand das Einrichten der Software, lokal für die Entwicklung wie auch im Endprodukt, zu grossen Teilen aus manuellen Prozessen mit wenig Automatisierung.
Eine erste grosse Herausforderung war es, eine ausreichende Testabdeckung zu erreichen, ohne den Code mehr als nötig zu verändern. Die Schwierigkeit dabei war, dass der bestehende Code nicht aufgebaut war, um testbar zu sein. Wir setzten deshalb als erstes auf umfassendes End-to-End-Testing, um Regressionen zu vermeiden. Darauf aufbauend führten wir Refactorings durch, um die Software testbarer zu machen und erreichten mittels automatisierten Unit- und Integrationstests eine Testabdeckung von rund 90% der kritischen Komponenten.
Für das Projektsetup setzten wir auf den modernen Python Paket- und Dependency-Manager Poetry. Poetry ermöglicht es, reproduzierbare Python Umgebungen zu erstellen und hilft dabei, die Abhängigkeiten aktuell zu halten.
Die weitere Zusammenarbeit beinhaltet neben der Entwicklung auch viel Wissensvermittlung bezüglich Python, eine Programmiersprache, auf die wir seit mehreren Jahren im Zusammenhang mit Machine Learning setzen.
Was wir an diesem Projekt neben dem Software-Engineering besonders schätzen, ist die enge Zusammenarbeit mit Bühler, die trotz der Grösse des Konzerns, der komplexen Organisation und der Vielfalt der Tätigkeitsbereiche sehr unkompliziert und effizient ist.