Jak wygląda praca Software System Engineera w intralogistyce?

geek.justjoin.it 8 miesięcy temu

Intralogistyka to specyficzna branża, gdyż skupia w sobie obszary z różnych dziedzin okołoprogramistycznych, na przykład automatykę. Dla kogo jest praca w intralogistyce? Jakie technologie warto znać? O kulisach pracy na stanowisku Software System Engineera opowiada nam Mateusz Łysień z Beumer Group.

Cześć! Pracujesz jako Software System Engineer. Opowiesz coś więcej o tym stanowisku?

Nazwa Software System Engineer brzmi dość zagadkowo i może na pierwszy rzut oka trochę ogólnie. Natomiast w kontekście intralogistyki dość dobrze oddaje to, czym się zajmuję na co dzień w pracy. Jednak zanim o tym, to może na początek wyjaśnię, skąd się tutaj wziąłem. Nie od razu zacząłem pracę na tym stanowisku, choć z perspektywy czasu, gdy się nad tym bardziej zastanowię, to kroki, które stawiałem na swojej pracy zawodowej, w sposób naturalny doprowadziły mnie do tego miejsca.

Jakie więc były początki Twojej kariery?

Wiadomo, każdy kiedyś rozpoczynał od stażu. Nie inaczej było w moim przypadku. Pierwsze kroki stawiałem w firmie z branży automatyki i robotyki, gdzie z wykorzystaniem platformy .NET oraz frameworka Xamarin budowaliśmy aplikację mobilną. Pracowałem wtedy jako programista C# na platformie .NET. Język spodobał mi się na tyle, iż postanowiłem kontynuować jego naukę i związać z nim swoją dalszą programistyczną przyszłość.

Kolejne lata mojej pracy spędziłem w firmach związanych z branżą e-commerce. Był to owocny czas pod względem zarówno rozwoju umiejętności programistycznych, jak i adaptacji do pracy w zespołach wykorzystujących metodykę Agile. Poznałem wielu specjalistów oraz sposoby zarządzania projektami. Technologicznie ciągle pracowałem z wykorzystaniem platformy .NET i języka C#. W branży e-commerce zacząłem od pracy w dziale integracji. Praca polegała na rozwijaniu aplikacji desktopowej w dość starej technologii, jaką jest WinForms.

Kolejny etap to praca już jako fullstack developer. Przeniesienie się z technologii desktopowych platformy .NET na pracę z wykorzystaniem .NET Core wraz z EntityFramework było dużym skokiem w moim rozwoju. Co prawda JavaScript na froncie trochę napsuł krwi, ale i tak to był krok we adekwatnym kierunku, tym bardziej iż w tej chwili prawie wszystko jest aplikacją internetową. Rozwijanie systemu CRM oraz API sklepu internetowego przynosiło dużo wyzwań, ale też dużo w tamtym czasie się nauczyłem jeżeli chodzi o podejście do tworzenia aplikacji webowych.

A jak znalazłeś się w branży intralogistycznej?

Z pobierania zamówień z systemu e-commerce i tworzeniu odpowiednich dokumentów magazynowych w systemie ERP, następnie przez tworzenie API sklepu, znalazłem się po drugiej stronie — obsługi tych zamówień na magazynie. W Beumer Group trafiłem do międzynarodowego zespołu produktowego, który tworzy Pouch System, czyli system do automatyzacji obsługi zamówień i zwrotów z wykorzystaniem sakw, które następnie są odpowiednio łączone w zamówienia, sortowane i na koniec rozładowywane w specjalnych stacjach rozładunkowych i dalej już lecą do klientów.

Czym jest intralogistyka? Jak odnalazłeś się w tej branży?

Intralogistyka to, ogólnie mówiąc, transport wewnątrzzakładowy. Zwykle mówiąc o intralogistyce mamy na myśli procesy/systemy przepływu materiałów wewnątrz przedsiębiorstwa. Intralogistyka i wszelkie systemy intralogistyczne mają na celu usprawnienie procesów wewnętrznych firmy.

Na prawidłowe działanie tych systemów składa się wiele komponentów, począwszy od konstrukcji mechanicznej całego systemu, poprzez warstwę elektryczną, automatykę a skończywszy na warstwie softu, który na co dzień rozwijam. Początki są zawsze trudne, jednak przy tak rozbudowanym systemie, wdrożenie bywa czasochłonne i wymaga specjalnego okresu onboardingu, podczas którego eksperci domenowi tłumaczą architekturę całego systemu.

Dla osób bez backgroundu z dziedziny automatyki i robotyki, wszystko jest nowe i zrozumienie tego, jak działa cały system, wymaga czasu. Praca odbywa się z wykorzystaniem Agile, a także w związku z tym, iż jest to międzynarodowy zespół, codzienna komunikacja musi odbywać się w języku angielskim.

Skomplikowanie systemu to jedno, druga sprawa to zdobycie umiejętności w nowym języku programowania, jakim jest Kotlin. Oprogramowanie części systemu, do którego trafiłem, zostało napisane w tym języku. Moje dotychczasowe doświadczenie bazowało na C#, wejście w świat Kotlina przyjmowałem ze sceptycyzmem. Jednak po kilku tygodniach i kilku rozwiązanych zadaniach, Kotlin przestał być już taki straszny jak na początku. Mówiłem wcześniej, iż nazwa stanowiska dobrze oddaje to, na czym polega praca. Po przestawieniu się na Kotlina zrozumiałem, iż tak naprawdę od pracy inżyniera systemów wymaga się, aby te systemy działały i były rozwijane. Język to tylko narzędzie, którym w danym projekcie się posługujemy. Wiem, iż to banalnie brzmi, ale wtedy nabrało do dla mnie większego znaczenia.

W jakich technologiach pracujesz na co dzień?

Praca przy tak dużym systemie skupia wiele technologii. Są miejsca, w których wykorzystywany jest C#, są miejsca, gdzie wykorzystywane są protokoły gRPC, cały proces CI/CD również jest skonfigurowany. Wszystko ze sobą współgra i razem tworzy działający system.

Na co dzień w swojej pracy wykorzystuję wspomnianego wcześniej Kotlina, oraz gdy specyfika zadania tego wymaga i należy coś zrobić w innej części systemu, to zdarza się również praca z C#. Projekt, w którym pracuję, posiada również warstwę wizualną, na froncie korzystamy z Angulara.

Co Ci się podoba w obecnej pracy?

To, z czego na pewno jestem bardzo zadowolony, to z podejścia jakie stosowane do wytwarzania oprogramowania. Wielki nacisk kładziony jest na pisanie testów jednostkowych. To ważne przy tak dużym systemie. Testy jednostkowe pozwalają na uniknięcie niespodziewanych błędów, które mogą się pojawić podczas prac uruchomieniowych. Dają również możliwość symulowania pewnych krytycznych ścieżek, które realizuje konkretny moduł.

Testy, oprócz solidnego zabezpieczenia logiki biznesowej przed wprowadzeniem niepożądanych zmian w kodzie, dają również wielkie źródło wiedzy o całym flow systemu. Czytając opisy testów oraz same testy dużo szybciej można przyswoić sobie wiedzę techniczną. Śmiało mogę stwierdzić, iż testy jednostkowe są najlepszą dokumentacją projektu.

Bardzo ważna jest również dokumentacja architektury i modułów systemu, bez której nowe osoby wchodzące do tak dużego systemu byłyby trochę zagubione.

Jakby testów było mało, to warto wspomnieć, iż wykorzystywane jest również specjalistyczne wewnętrzne oprogramowanie do przeprowadzania emulacji systemu. Emulacja przynosi bardzo dużo informacji, ponieważ w pewnym stopniu oddaje działanie całego systemu, wraz z warstwą automatyki, dzięki czemu możemy sprawdzić działanie systemu w określonych warunkach emulacji i wyłapać ewentualne błędy. Jak widać, nacisk na testowanie jest duży, a to dlatego, aby podczas uruchomienia u klienta było jak najmniej niespodzianek.

A jak wygląda wspomniany proces uruchomienia?

Intralogistyczne systemy mają to do siebie, iż ich złożoność proporcjonalnie wpływa na sposób i długość uruchomienia. To obszerny proces angażujący wiele osób na poszczególnych etapach. Wszystko musi być zaplanowane wraz z klientem. Moja działka, czyli software jest zwykle wisienką na torcie i uruchomienie go następuje wtedy, kiedy cała hala jest już mechanicznie i elektrycznie gotowa. Wgranie systemu na serwery produkcyjne klienta, stworzenie odpowiedniej infrastruktury sieciowej, aby komunikacja z warstwami niższego poziomu — PLC — była możliwa, a na sam koniec kolejny raz testowanie, ale tym razem na żywym organizmie. Testy przeprowadzane są wraz z klientem, tworzone są różne scenariusze testowe, sprawdzane jest zachowanie systemu pod kątem założeń biznesowych.

Uruchomienia produkcyjne w początkowej fazie polegają głównie na testowaniu, cross-contextowe zespoły inżynierów pojawiają się na miejscu i wspólnie na bieżąco poprawiają pojawiające się problemy. Takie uruchomienie wiąże się z wyjazdem do klienta na miejsce na czas kilku tygodni. Okres uruchomienia angażuje cały zespół, ci, którzy nie są na miejscu, starają się supportować ludzi na hali i na bieżąco analizować i rozwiązywać pojawiające się błędy. Podczas prac uruchomieniowych, oprócz testów systemu prowadzone są również szkolenia dla personelu klienta, wszystko po to, aby osoby, które na co dzień będą obsługiwać system, były już zaznajomione ze wszystkim, kiedy projekt zostanie finalnie oddany klientowi.

Czy intralogistyka to przyszłościowy kierunek w karierze? Jak uważasz?

Systemy intralogistyczne mają głównie służyć automatyzacji i optymalizacji procesów wewnątrz magazynów klientów. Nowości technologiczne, które aktualnie stają się coraz bardziej popularne takie jak AI, również zaczynają się pojawiać nie tylko w koncepcjach, ale również w realnych projektach. Wykorzystanie sztucznej inteligencji będzie na pewno dalszym kierunkiem rozwoju systemów intralogistycznych.

Nacisk kładziony będzie również na zwiększenie automatyzacji, na zmniejszenie miejsc w systemie, w których wymagany jest czynnik ludzki, np. taki ładowanie czy rozładowywanie produktów. Specjaliści od automatyki i sztucznej inteligencji na pewno będą mieli co robić.

Jak zacząć w takiej branży, jak intralogistyka?

Nie ma jednej konkretnej ścieżki, wiadomo, o ile ktoś studiował Automatykę i Robotykę, to zdecydowanie łatwiej jest wejść do tego świata, ale może właśnie bardziej jako automatyk. jeżeli chodzi o programowanie, to nie ma jednej określonej ścieżki, powiedziałbym nawet, iż jest ich bardzo dużo, ponieważ projekty są bardzo złożone, rozwijane w różnych technologiach. Eksperci z każdej dziedziny, od Scrum Mastera przez programistę aż po DevOpsa, na pewno będą mieli co robić.

Warto też zaznaczyć, iż praca w intralogistyce też nie będzie odpowiednia dla wszystkich. Zdarzają się wyjazdy służbowe na kilka tygodni, parę razy w roku. Sama specyfika pracy też jest inna, gdyż skupia w sobie obszary z różnych dziedzin okołoprogramistycznych, np. automatykę. Nie trzeba znać się perfekcyjnie na automatyce, ale na pewno wejście w ten świat jest trudniejsze dla osób bez backgroundu stricte hardware’owego. Jednak mnogość technologii, liczba projektów na pewno mocno zwiększają doświadczenie programistów. Wiele się można nauczyć i nie jest tak łatwo popaść w rutynę, zadania są mocno zróżnicowane, czasem też wymagają zapoznania się z nowym frameworkiem czy protokołem.

Mateusz Łysień. Absolwent Politechniki Śląskiej w Gliwicach. Od blisko 8 lat debugguje i programuje. w tej chwili Software System Engineer w Beumer Group, gdzie na co dzień rozwija technologie Pouch Sorterów. Prywatnie fan świętego spokoju, gotowania i nowości technologicznych. Autor bloga homeverest.

Idź do oryginalnego materiału