Praca w branży automotive jest prawdziwym marzeniem programistów fascynujących się motoryzacją. W rozmowie z Krzysztofem Kmiotkiem Senior Software Engineerem w intive rozmawialiśmy o codziennej pracy programisty automotive, drodze do uzyskania takiego stanowiska oraz emocjach towarzyszących tworzeniu systemów umieszczanych w prawdziwych samochodach.
Jaka była Twoja ścieżka do aktualnego stanowiska? Co robiłeś przed podjęciem pracy w intive?
Jestem absolwentem AGH kierunku Automatyka i Robotyka. Do połowy studiów byłem przekonany, iż moim marzeniem jest praca z robotami w fabryce. Byłem pewien, iż chcę je programować oraz projektować cale linie produkcyjne. Życie zweryfikowało moje marzenia po 2-miesięcznej wegetacji w fabryce, przy utrzymaniu ruchu. Nadszedł czas by poszukać nowych marzeń.
I tak trafiłem do świata programowania embedded, moje pierwsze kroki to małe mikrokontrolery w branży energetycznej. Gdy już poznałem podstawy i poczułem się pewnie,j przyszedł czas na zmiany.
Jako iż już wtedy był czas rynku pracowania, mogłem wybierać co, w jakiej branży i gdzie chce robić. Wiedziałem już, iż roboty w fabryce to nie dla mnie, natomiast od dziecka, jak chyba każdy chłopiec, interesowałem się samochodami. Przyszedł czas na większe projekty w branży automotive.
Czy możesz opowiedzieć jak wygląda programowanie embedded w branży motoryzacyjnej? Czym różni się od kodowania w innych branżach?
W programowaniu embedded w branży motoryzacyjnej w dalszym ciągu króluje i pewnie jeszcze przez wiele lat królować będzie język C. Wielu programistów narzeka na ten fakt, gdyż programowanie w tak niskopoziomowym języku bywa wymagające, jednak w zamian daje znacznie większą kontrolę nad sprzętem oraz zasobami mikrokontrolera.
Kolejnym nieodłącznym elementem programowania systemów wbudowanych w branży motoryzacyjnej jest Autosar. Jest to system, który standaryzuje sposób implementacji oraz integracji modułów. Można go kochać lub nienawidzić, z doświadczenia obserwuję, iż większość ludzi zaczynających pracę w naszej branży przeraża autosar, skomplikowanie niezbędnych narzędzi oraz ilość dokumentacji. Jednak z czasem system Autosar staje się coraz bardziej ludzki. Droga do pokochania Autosara nie jest łatwa, przechodzimy kolejno fazy: szoku i zaprzeczenia (jak z tym g** można w ogóle pracować?), następnie gniew i bunt (po co ja się za to brałem?), negocjacje (a może by tak prościej?), depresja (czy to jest w ogóle możliwe?) oraz ostatecznie akceptacja, która może przerodzić się w prawdziwe uczucie.
Programowanie w automotive nie kończy się na programowaniu systemów tuż przy sprzęcie, w języku C wraz z Classic Autosarem. Z roku na rok, w naszej branży coraz popularniejsza staje się koncepcja connected cars, car sharing czy hardware as a service. Zmienia to obraz statycznego samochodu, czyli pojazdu do przemieszczania się, w nowoczesne podejście, samochodu jako usługi. Taki nowoczesny samochód możemy dostosować do tego, czego aktualnie, dzięki abonamentu możemy rozszerzyć jego funkcjonalność, dodać mu parę koni mechanicznych czy odblokować podgrzewane fotele. Jako iż samochód jest stale podłączony do sieci, możemy go podnajmować innym kierowcom. I tak samochód, z którego aktualnie nie korzystamy, może sam na siebie zarabiać.
Wszystkie te opisane wyżej trendy niosą ze sobą konieczność innego spojrzenia na samochód, przestaje to być statyczny system, który od wyjazdu fabryki ma stałą funkcjonalność i może działać offline. Nowoczesny samochód wymaga innego podejścia, bardziej dynamicznego i tu na wprost oczekiwaniom pojawia się system Adaptive Autosar czyli system POSIX oparty na maszynie wirtualnej. Programowanie w Adaptive Autosar odbywa się w języku C++ i nie kładzie już tak dużego nacisku na samą platformę sprzętową, pozwalając na skupienie się na samej funkcjonalności.
Podsumowując w automotive jako programiści możemy pracować blisko sprzętu, używając języka C oraz Classic Autosar lub też pisząc aplikacje w obiektowe w C++ pod Adaptive Autosar.