Moja kariera w branży maszyn drukarskich nie potrwała długo. A i sama branża chyba wiele dłużej nie pociągnie.
Teraz dokładniej: Miałem zlecenie w firmie manroland sheetfed w Offenbachu produkującej maszyny drukarskie. Była to firma z bardzo długimi tradycjami, jej historia rozpoczęła się już w roku 1871, kiedy to Louis Faber und Adolf Schleicher założyli w tym miejscu firmę produkującą - jakże by inaczej - maszyny drukarskie.
Nie będę omawiał kolejnych konstrukcji, bo - nie będę ukrywał - na tej branży znam się słabo. W każdym razie firma przez długi czas była innowacyjna i robiła dobre rzeczy. Jeżeli dobrze interpretuję, to od 1911 nazywali oni swoje maszyny Roland. Dla ustalenia uwagi: oni nie mieli nic wspólnego z popularnymi w latach dziewięćdziesiątych plotterami Roland.
W roku 1979 fabryka Faber & Schleicher została przejęta przez koncern MAN, pewnie dlatego że miała problemy. Ale nie jestem gotowy na dyskusję o historii MAN i o tych problemach. Fabryka funkcjonowała od tego czasu jako MAN Roland Druckmaschinen AG.
W 2011 firma zbankrutowała i w 2012 została wykupiona przez brytyjski Langley Holdings. W ramach uzdrawiania firmy zrobiono wtedy parę istotnych posunięć:
- Zrezygnowano z produkcji małych maszyn drukarskich, zostawiono tylko duże. Z grubsza w tym samym czasie największy konkurent firmy - Heidelberger Druckmaschinen - stał przed podobnym wyborem i oni zrezygnowali z maszyn małych. Czas pokazał, że Offenbach podjął lepszą decyzję, i później Heidelberg sprzedawał również maszyny z Offenbachu pod swoją marką.
- Opracowano nowe wersje dużych maszyn, zostało przy dwóch modelach.
- Opracowano nowe oprogramowanie.
Problem polegał na tym, że te posunięcia były niezłe, ale firma spoczęła na laurach. Ja zostałem najęty do zaktualizowania programu w rodzaju SCADA (chociaż oni nie używali tego terminu) służącego do sterowania zadaniami druku, robieniem statystyk, analiz i raportów. No i w tym programie:
- Ostatnie istotne zmiany były robione 10+ lat temu.
- Rzecz była napisana w Javie 8. A Javie 8 właśnie kończy się support, więc trzeba by zrobić upgrade na jakąś nowszą wersję.
- Do tego upgradu nawet się tam parę razy zabierali, ale sobie nie poradzili. Nie dziwię się, bo:
- Program klienta komunikował się z serwerem między innymi przy użyciu technologii CORBA. W Javie 8 ta CORBA była zintegrowana, ale już w wersji 9 wyleciała na stałe. Podłożyć jakiejś biblioteki zastępczej nie umieli, a zmiana technologii to by było bardzo poważne zadanie, więc zawsze było odsuwane na później.
- Program klienta był startowany przy użyciu Java Web Start, również części Javy 8, tak samo usuniętej w następnych wersjach. Zastąpić czymś innym nie umieli.
- Mnóstwo JARów było przestarzałe.
- Jak przeszedłem na nowsze wersje Javy okazało się, że program po stronie serwera komunikuje się przez JNI z częściami napisanymi w C++. Tyle że to C++ było skompilowane na 32 bity, a nowsze Javy są wszystkie 64-bitowe. W Windowsach nie ma możliwości żeby aplikacja 64-bitowa wciągnęła 32-bitowy DLL. Nie ma i już. Cały serwer musieli przekładać na 64 bity, co też nie było trywialne.
- Część programu była napisana przez firmę zewnętrzną i dostarczona jako JARy. Teoretycznie były też źródła, ale jak je obejrzałem okazało się, że są niekompletne. Parę kawałków musiałem dekompilować z JARów, bo inaczej nic by z tego nie było.
- O innych problemach mógłbym długo, zrobiłem mój pełny program "code quality" i poznajdowałem trochę ewidentnych błędów.
- Jak dali program firmie zajmującej się testami penetracyjnymi to zgodnie z oczekiwaniami wyszło, że security w nim praktycznie nie istnieje. Na przykład po dekompilacji JARów z łatwością znaleźli wpisane tam na stałe hasło do serwera. A tymczasem wchodzi Cyber Resilience Act i klienci czegoś takiego nie będą akceptować.
Podobnie było w innych kawałkach oprogramowania i sprzętu, za poprawianie tego wszystkiego wzięli się dopiero w zeszłym roku. Jedną z przyczyn było z pewnością to, że większość pracowników odnośnych działów to ludzie w wieku przedemerytalnym, którzy zaczynali swoją karierę zawodową od tej firmy i nigdy nie widzieli nic innego.
No i wyszło tak, że w lutym byłem gotowy do integracji mojej części z przerobionym na 64 bity serwerem. Serwer miał być gotowy w początku marca. A tu we wtorek trzeciego marca o 12 zwołano załogę na zebranie, na którym ogłoszono że w sobotę 28 lutego zarząd złożył wniosek o upadłość w trybie "z parasolem ochronnym". Ten "parasol" polega na tym, że przez trzy miesiące płace pracowników płaci państwo.
Teraz idą jakieś rozmowy z potencjalnymi inwestorami, jednym z nich jest Heidelberger Druckmaschinen. Ale i oni cienko przędą, ostatnio pojawiły się informacje że będą składać drony dla wojska. Zobaczymy co będzie. W każdym razie jeżeli produkcja maszyn miała by być kontynuowana, to będą musieli do mnie przyjść, bo to poszło tak szybko że nawet nie zdążyłem wszystkiego zacheckinować, nie mówiąc o dokumentacji.
Teraz podsumowanie: Dlaczego właściwie tak się stało, że padło:
- Oczywiście że branża się zwija i wielkiej prosperity nie należy się spodziewać. Ale ich maszyny nie były do druku książek i gazet, tylko raczej do opakowań z kartonu, blachy i plastiku. Na to zapotrzebowanie nadal istnieje.
- Jeżeli branża się zwija, tym bardziej trzeba się starać. A oni spoczęli na laurach.
- Nie obniżali kosztów które mogli by obniżyć - oni mieli wystrugane własne sterowniki, sami robili do nich płytki, lutowali elementy, robili oprogramowanie... Ma to swoje plusy, ale kosztuje ładnie. Za zmianę na coś normalnego zabrali się dopiero w zeszłym roku.
- Jeżeli rynek w branży się zwija, to należało by poszerzyć asortyment na inne branże? Jak te drony na przykład?
Czyli: Upadłość była w 100% zawiniona przez samą firmę.
Tu miałem zamiar dopisać parę uwag o niemieckim automotive, ale zrobię o tym osobną notkę.