Embedded — nisza, dzięki której możesz odnieść sukces
Dla kogo jest Embedded? Jakie ma zastosowanie? I dlaczego ten język jest uważany za niszowy? Przeczytajcie.
Spis treści
Embedded — co to i dla kogo?
Embedded, znany również pod nazwą „oprogramowanie wbudowane” – to oprogramowanie działające w mikrokontrolerze, na platformie sprzętowej lub hardware.
Zwykle wykonuje ograniczoną liczbę bardziej lub mniej skomplikowanych zadań zdefiniowanych przez zamawiającego. Oprogramowanie wgrane na mikrokontroler działa w nieskończonej pętli. Musi być zoptymalizowane zarówno pod kątem zajętości pamięci, jak i prędkości działania.
Jak wyglądały moje osobiste doświadczenia z Embedded? Po raz pierwszy miałem styczność z tą technologią pod koniec liceum. Mój starszy brat, który wtedy był na studiach, kupował swój pierwszy samochód. Jak to dawniej bywało, ówczesne samochody miały bardzo znikomą ilość elektroniki sprowadzającą się do radia czy ewentualnie prostego alarmu. Zacząłem nieco dłubać przy tym alarmie, zastanawiać się, dlaczego działa to tak, a nie inaczej — odkryłem, że to nie jest tylko kawałek hardware’u, ale jeszcze trzeba to oprogramować.
To była moja pierwsza zabawa z Embedded — wyniknęła z myśli: „No dobrze, alarm sobie działa, ale może mógłby na przykład inaczej mrugać diodą, żebym wiedział, w jakim jest stanie?”. Razem z bratem zajęliśmy się tym naszym pierwszym wspólnym „projektem”. Ja odnajdywałem się trochę bardziej manualnie w rzeczach elektronicznych, a brat bardziej znał się na programowaniu, ale wszystko razem dało nam zamierzony efekt.
To były początki mojej przygody z Embedded — później, już bardziej dogłębnie i teoretycznie zająłem się tą technologią na studiach (Automatyka/Robotyka na wydziale Elektroniki, Telekomunikacji i Informatyki na Politechnice Gdańskiej). To nie był kierunek ściśle informatyczny — od razu było założenie, że to będzie świat Embedded: oprogramowanie mikrokontrolerów, a nie urządzeń sieciowych.
Ten obszar całkowicie mnie zafascynował. Pierwszą pracę w tej technologii zacząłem w 2002 roku w branży automotive i od razu zająłem się oprogramowaniem mikrokontrolera, tzw. body controller, który steruje wszystkimi funkcjami w samochodzie. Byłem odpowiedzialny za fragment dotyczący świateł zewnętrznych w BMW Mini One.
Dla kogo jest Embedded?
Karierę w Embedded może zacząć każdy, kto lubi połączenie fizycznego efektu z programowaniem, kto zna podstawy elektroniki – i ma chęci. Oczywiście przy bardziej skomplikowanych systemach poznajemy coraz więcej zaawansowanych sposobów implementacji czy też trików, ale to przychodzi z czasem i doświadczeniem.
W Embedded jest też sporo miejsca dla ludzi lubiących przysłowiowo „szukać dziury w całym” – testy Embedded to praca z robotami i łamanie systemów. Jeśli w dzieciństwie rozkręcałeś czy rozkręcałaś zegarek lub magnetofon, by sprawdzić, jak działa jego mechanizm, lubisz to nadal i masz chęć poznawania tego, jak funkcjonują urządzenia elektroniczne to Embedded jest dla ciebie.
To technologia, którą doceni każdy, kto lubi widzieć namacalny efekt swojej pracy: coś się obróciło, coś się włączyło, coś czymś steruje i tak dalej. Oczywiście, osoby, które na co dzień piszą aplikacje webowe czy mobilne, również widzą efekty swojej pracy. Często jednak ten efekt to tylko subtelna różnica na przykład w funkcjonalności czy wyglądzie danej strony/aplikacji. W świecie Embedded w większości przypadków robi się wszystko od zera. Przykładowo, jeżeli tworzymy sterowanie pralką, to musimy napisać oprogramowanie, które steruje wszystkim: od momentu uruchomienia tego mikrokontrolera, aż do jego wyłączenia.
W środowisku, w którym poruszam się obecnie, mamy gotowy system operacyjny, i na nim obudowujemy całą technologię, natomiast jego poszczególne fragmenty są całkowicie nasze i dedykowane.
Wymagania towarzyszące znajomości Embedded
Matką wszystkich języków dla embeddedowców jest C. Od programisty pracującego w Embedded wymagana jest również znajomość cech oraz funkcji platformy sprzętowej — trzeba pamiętać, że taki mikrokontroler nie ma nieskończonej pamięci i mocy obliczeniowej.
Techniczne umiejętności to nie wszystko. Musi być także pasja i chęć poznania tego, że w świecie Embedded pracuje się z hardware’em, który daje nam pewne funkcje. Innymi słowy, jest to umiejętność wykorzystania funkcji mikrokontrolera i odpowiednie nim sterowanie poprzez oprogramowanie, żeby osiągnąć zamierzony efekt końcowy. Embeddedowiec powinien mieć w sobie chęć zrozumienia, jak działają pewne procesy fizyczne w układzie, który jest oprogramowany.
Jakie zastosowanie ma Embedded?
Tu właśnie kryje się największa zaleta Embedded. Dzięki jego skalowalności można go zastosować praktycznie wszędzie – w zegarku elektronicznym, w lampce nocnej, w kartach dostępowych i czytnikach kontroli dostępu, pralce, mikserze, telewizorze, samochodach, robotach. Jednym zdaniem, wszędzie tam, gdzie wymagane jest sterowanie elektroniczne. Embedded pozwala płacić w sklepie (smartCard), dbać o bezpieczeństwo (czytniki kontroli dostępu), a zarazem ułatwiać codzienne życie – choćby poprzez brak metalowych kluczy w biurowcach, sklepach itd.
Czy Embedded to język niszowy?
Obecnie programiści chcą programować za pomocą języków wysokiego poziomu – np. rozwiązań chmurowych, bo nie trzeba się specjalnie martwić o moce obliczeniowe ani o zajętość pamięci, jest mnóstwo bibliotek, szybciej widać efekt. Z moich osobistych obserwacji wynika, że dla wielu programistów większą nobilitacją cieszą się technologie i języki programowania webowego – chyba niesłusznie. Natomiast konsekwencją tego jest fakt, że Embedded jest rzadziej wybieranym językiem, co w pewien sposób czyni go niszowym – w moich oczach wyjątkowym.
Tak naprawdę Embedded jest we wszystkich urządzeniach, z których na co dzień korzystamy, więc programiści znający tę technologię są bardzo potrzebni. Naturalnie, przy programowaniu wbudowanym proces wytwarzania produktu jest bardziej czasochłonny, ale daje programistom swobodę implementacji – są oczywiście dobre praktyki, ale sposób wdrożenia jest indywidualny.
Rynek Embedded w Polsce
Jak wygląda rynek Embedded w Polsce? Zacznę od tego, że na zachodnim rynku pracy widać trend zatrudniania coraz mniejszej ilości programistów Embedded. To może oznaczać, że zachodnie firmy przechodzą na tańszy rynek, czyli nasz, i tutaj szukają specjalistów. Widzę to choćby po tym, skąd i jakie oferty pracy dostają nasi programiści oraz jak często następuje rotacja. Nie jest tajemnicą, gdy rozmawiam z szefami innych firm zatrudniających programistów Embedded, że każdy z nich ma ten sam problem. Jest bardzo mało nowych osób programujących w Embedded, a starsi prawie wszyscy się znają — tworzymy coś w rodzaju rodziny 🙂
Staramy się pozyskiwać nowych pracowników, gdy są jeszcze na studiach. W naszej firmie współpracujemy ze studentami (w tej chwili jest ich około 20). Pokazujemy im, że świat Embedded jest ciekawy, że to bardzo fajna nisza, w której można się odnaleźć i zrobić karierę. Zwłaszcza że zarobki w tej technologii są porównywalne do wynagrodzeń pozostałych programistów.
Podsumowanie
W programowaniu systemów wbudowanych najciekawsze było i jest dla mnie swego rodzaju połączenie świata nienamacalnego, czyli programowania (czy ktoś widział kiedyś software?) z namacalnymi efektami pracy układów scalonych. To daje niesamowitą satysfakcję – maszyna robi to, co ja chcę – oczywiście zwykle nie za pierwszym razem.
Choć już od jakiegoś czasu nie programuję aktywnie, to ogromną radość sprawiają mi dyskusje z zespołem na tematy systemów wbudowanych. Programowanie tych systemów uczy logicznego myślenia szczególnie przy tworzeniu architektury tak, żeby była ona skalowalna, optymalna, przejrzysta dla analizy. W większości przypadków uczy także współpracy z innymi programistami – wiele dużych projektów to praca całych zespołów. Te umiejętności bardzo przydają się w codziennym życiu.
Kiedy rozpoczynałem swoją karierę zawodową, odkryłem dodatkowy powód satysfakcji z bycia programistą systemów wbudowanych –.poczucie dumy. Było to wtedy, kiedy zobaczyłem na ulicy samochód, w którym było ukryte moje oprogramowanie (część większego systemu, ale zawsze!). Dotarło do mnie, że parę (a może paręset) tysięcy użytkowników będzie używało tego, co stworzył jeden zespół programistów, którego ja byłem częścią.
Największą przyjemność sprawia mi to, gdy widzę produkty na rynku wykorzystywane przez miliony ludzi – nie przesadzam z tą liczbą! Mam ogromną satysfakcję, że ten kawałek kodu stworzony przez zespoły programistów firmy HID działa i pomaga ludziom w codziennym życiu.
Na koniec chciałbym podzielić się z Wami pewną anegdotą. Po ponad 20 latach od ukończenia studiów spotkałem się z moimi kolegami i koleżankami z roku. Okazało się, że z tego małego grona miłośników Embedded, wszyscy wciąż pasjonują się światem Embedded, pomimo że w większości zajmują stanowiska dyrektorskie lub zarządcze. Co więcej, spora część, podobnie jak ja, pracuje w obszarze security, inni w automotive. To tylko potwierdza, że ponad 20 lat temu wybraliśmy niszę, która teraz zaowocowała wysoką pozycją zawodową.
Poczułem się dumny, że nam się udało. Może mieliśmy szczęście, a może sprzyjało nam to, że Embedded to wciąż nisza i ścieżka kariery jest paradoksalnie łatwiejsza niż w przypadku technologii przesyconej specjalistami. Na szczęście istnieje dużo możliwości nauki i przełączenia się z innych obszarów inżynierii na Embedded — do czego serdecznie zachęcam!
Zdjęcie główne pochodzi z Unsplash.com.