Poprzedni artykuł był ogólnym wprowadzeniem do tematu systemów wbudowanych. Teraz, pora przejść do konkretów. Skoncentruję się na podstawach, postaram się uporządkować najważniejsze kwestie, podkreślić najbardziej charakterystyczne techniczne aspekty, aby łatwiej było Wam analizować i rozumieć profile kandydatów działających w tym obszarze.
Specjaliści embedded, jak można zauważyć na Linkedin`owych profilach, tworzą rozwiązania głównie w dwóch językach C oraz C++. Od czego zależy wybór? Najczęściej po prostu od producenta (klienta). Jakie to może mieć znaczenie dla rekrutera? Spore. Otóż w opisach stanowisk często występują one razem, jako C/C++, a niekoniecznie inżynier zna je tak samo dobrze. Jeżeli ktoś pisał wcześniej w C, to rzadko się zdarza, aby o C++ nie słyszał nic, niemniej mógł z niego mało korzystać. I odwrotnie, programista dobry w C++, może mieć problem z napisaniem zwykłego sterownika w C. Podsumowując, warto przeanalizować profil kandydata, a z drugiej strony w ofercie jasno dać do zrozumienia, który język będzie głównie wykorzystywany przy tworzeniu rozwiązania.
Ciekawym słowem kluczem przy tym temacie będzie hasło: low level, czasami w połączeniu z low level languages, low level programming, low level project, low level/embedded itp. Mówi nam to tyle, że mamy do czynienia z obszarem niskopoziomowym, czyli takim “blisko sprzętu”. Programowanie w języku C – tak, jak już zapewne się domyślasz – będzie programowaniem niskopoziomowym, dlatego czasami specjaliści na Linkedin oznaczają swoje stanowisko jako Low level Engineer.
Ciekawostka – dość nowym językiem programowania wykorzystywanym w systemach embedded jest Rust, stworzony przez Mozillę. Ma ambicje zastąpić język C. Co się wydarzy? Czas pokaże.
Uwaga rekruterska – to, co teraz napiszę, będzie bardzo istotne, pamietaj że język C++ jest wykorzystywany w systemach wbudowanych, ale może być używany w wielu innych, poza tym obszarem, rozwiązaniach: gry, aplikacje desktopowe, aplikacje e-commers chociażby. Dlatego, nie każdy programista C++ będzie zainteresowany projektem embedded!
Narzędzia
Pomyślałam sobie, że wypunktuję charakterystyczne narzędzia dla C i C++, jeżeli chodzi o obszar embedded, aby łatwo było je poukładać w głowie, co z czym połączyć, co z czym kojarzyć, ale meh… okazuje się, że sporo tooli jest wspólnych dla tych języków… Może poza drobnym wyjątkiem, czyli:
- C będzie kojarzone z Linux Kernel, GTK i całym światem sterowników.
- C++ tu na pewno biblioteka Qt, RTOS, OpenCV i cały świat aplikacji.
Na marginesie, dodam tutaj jeszcze garść skrótów, które powinny kojarzyć się z procesorami: Architektury ARM, Cortex, AVR, MIPS, STM, Architektura Intela.
Jeżeli zaczniemy analizować ogłoszenia z pewnością zauważycie znacznie więcej technologii. Nie sposób je wszystkie opisać, często odnoszą sie one po prostu do bardzo konkretnych urządzeń, procesorów, a tego naprawdę jest sporo. Zostańmy zatem przy powyższych podstawach, które na dobry początek jak najbardziej wystarczą.
Systemy operacyjne
Wspomniałam wcześniej, że urządzenia mogą mieć system operacyjny. Od czego to zależy? Od swojej prostoty. Jeżeli specjalista ma do ogarnięcia niewiele funkcji np. jest to jakiś czujnik czy miernik – dajmy na to umieszczony na okręcie wiatromierz, którego zadaniem jest zliczanie obrotów wiatraczka, systemu tutaj nie będzie. Jednak, gdy weźmiemy pod uwagę chociażby GPS w samochodzie, czy dekoder TV z pewnością systemy operacyjne zostaną tam zastosowane.
W embedded wykorzystuje się klasyczne systemy operacyjne i systemy czasu rzeczywistego, nazywane RTOS-ami (angielski skrót Real Time Operating System)
- pierwsze: najbardziej popularny Linux,
- drugie: FreeRTOS, QNX, Mbed OS, czy Zephyr.
Różnica jest prosta. Urządzenia, które muszą zadziałać, wykonać polecenie tu i teraz, są zsynchronizowane z czasem będą działać na RTOSach. Trywialny przykład: nawigacja – chesz mieć dostęp do trasy w momencie korzystania z aplikacji; czy kardiomonitor – w trakcie operacji lekarz chce widzieć parametry życiowe w momencie zabiegu. Dlaczego dla rekrutera może mieć to znaczenie? Analizując skille kandydatów można odczytać z jak zaawansowanymi urządzeniami miał do czynienia dany specjalista i czy faktycznie pasuje do projektu, do którego poszukujesz konkretnej osoby.
Skoro już jesteśmy przy wskazówkach, może podrzucę ich nieco więcej. Na co warto zwracać uwagę szukając Embedeed Engineerów? Do worka systemów wbudowanych wrzucono wiele: i sterownik do Linuxa, i ekspres do kawy, a i sporo osób ze świata elektroniki wkracza w ten obszar. Zakres umiejętności specjalistów może być zatem bardzo szeroki. Krótko mówiąc – łatwo się “naciąć”.
Warto zatem pamiętać o kilku kwestiach:
- analizuj profil w kontekście, czy dana osoba była bliżej hardware`u czy software`u,
- zwróć uwagę, czy dany specjalista programował bardziej w C, czy C++,
- zobacz, czy miał do czynienia z systemami operacyjnymi i jakiego rodzaju; to dużo Ci powie, z jak rozbudowanymi urządzeniami pracował,
- pisanie aplikacji jednowątkowych (jednoliniowych) na mikrourządzenia jest zupełnie inne, jak przy dużych systemach emebdedd; Linux kernel, freeRTOS – powinno wskazać, że ktoś miał do czynienia z wielowątkowością, a tym samym bardziej złożonymi urządzeniami.
W ofercie natomiast:
- staraj się unikać C/C++, podaj na ile to możliwe bardziej konkretną informację (np. rozwiązanie pisane w C, ale unit testy w C++), może jakieś ujęcie procentowe, ile, czego będzie wykorzystywane; to naprawdę ważne,
- C++ – tu zawsze warto podać wersję: 11/14/17,
- warto dać znać, jak blisko jest praca hardware, często są projekty z potrzebną znajomością elektroniki, czasem jest to zbędne,
- dobrze jest zawrzeć informacje o typie urządzenia,
- ważną kwestią jest system operacyjny, dobrze napisać czy takowy jest w ogóle, a jeżeli tak to konkretnie jaki,
- na ile to możliwe jak najwięcej napisać o projekcie, co faktycznie dana osoba będzie robić,
- jeżeli jest coś niestandardowego, niszowego zawsze warto to napisać, np. tworzenie sterowników pod system ESX. Takie „smaczyki” powinien znać / dać Ci manager.
Mam nadzieję, że udało mi się choć trochę rozjaśnić obszar systemów wbudowanych, a tym samym Wasze poszukiwanie odpowiednich specjalistów będzie teraz znacznie prostsze 🙂