Do poczytania!

Do poczytania!

Do poczytania!

Blog

06 marzec 2020
Wywiady / 6 marca 2020

Inżynier Programista Embedded

Dziś poznamy zawód, który łączy w sobie umiejętności z różnych obszarów. Będzie coś dla fanów elektroniki, programowania i dla tych, którzy chcą być blisko sprzętu. Rozmawiam z Rafałem –pasjonatem programowania embedded.

 

Asia: W perspektywie 10 lat większość ludzi będzie musiało się przekwalifikować, ponieważ w wyniku zmian technologicznych dynamicznie zmienia się rynek pracy. Jak widzisz swój zawód w perspektywie kilkunastu lat?

Rafał: Odpowiem tak, rozmawia dwóch programistów embedded:

– Słyszałem, że straciłeś pracę. Jak to jest?

– To było najgorsze 30 minut w moim życiu.

Myślę, że przez najbliższe 10 lat ten czas będzie się jeszcze skracał. Wydaje mi się, że programiści będą zawsze potrzebni przy obecnym stopniu cyfryzacji każdej sfery życia. To co może się zmienić, to ewolucja języków programowania i sprzęt na którym programiści będą pracować.

 

Asia: A jak to się stało, że Ty zacząłeś programować?

Rafał: Odkąd pamiętam fascynowało mnie programowanie i elektronika. Jako dziecko nie mogłem się nadziwić, że można wpisać do urządzenia trochę znaków i tym samym sprawić, że to urządzenie zacznie działać zgodnie z tym co wpisaliśmy. Pierwsze urządzenie, które zobaczyłem i mnie tak zachwyciło to był komputer PC. W wieku 6 lat wujek pokazał mi jak zlutować układ elektroniczny, a w wieku 8 lat pokazał mi pierwsze linie kodu. Programować zacząłem w wieku 13 lat – wtedy pisałem bardzo proste programy w języku C. Jakiś czas później zafascynowała mnie demoscena – czyli subkultura komputerowców, którzy tworzyli dla siebie wyzwania w różnych dziedzinach. Dzięki temu nauczyłem się optymalizować oprogramowanie.

 

Asia: Opowiedz nam w takim razie, co to znaczy programować w embedded – to jakiś rodzaj technologii jak Java/Python?

Rafał: Nazwa systemu embedded czyli wbudowanego, powstała od systemu mikroprocesowego, który jest właśnie wbudowany do urządzenia i nie ma do niego dostępu z zewnątrz – taki system ma określoną funkcję, np. jest to oprogramowanie sterownika, który steruje jakimś urządzeniem. W praktyce to może być np. pralka, lodówka, zamek szyfrowy, samochód – w takich urządzeniach systemów wbudowanych jest cała masa.

 

Asia: Czyli programowanie embedded jest ściśle powiązane z urządzeniami. Czym się zatem różni od programowania w LabView?

Rafał: LabView to środowisko programowania, który ma graficzny interfejs i jest wykorzystywany głównie z użyciem mocniejszych komputerów. Jego głównym atutem jest możliwość szybkiej, graficznej edycji oprogramowania. W przypadku embedded zazwyczaj wykorzystujemy słabsze jednostki obliczeniowe ale programowanie sprowadza się do wielu tysięcy linii kodu, których działanie trzeba sobie wyobrazić, a sama modyfikacja kodu już nie jest taka prosta o ile w ogóle możliwa. Zatem np. maszyna na produkcję czy w laboratorium będzie oprogramowana w LabView, ponieważ potrzebujemy tam szybkiej możliwości zmiany kodu. Jeśli chcesz wyprodukować wiele urządzeń, których koszt jest stosunkowo nieduży, to prawdopodobnie wybierzesz programowanie w embedded.

 

Asia: Dobrze by było, gdyby programista embedded znał nie tylko C, ale i C++. Czym różnią się te dwa języki?

Rafał: Język C to język który powstał aby usunąć zależność kodu od sprzętu co było największą bolączką Assemblera, który od zawsze był stosowany w programowaniu embedded. Nie pozwala on jednak na programowanie czysto obiektowe – czyli programowanie dla wielu podobnych obiektów, np. sensorów czy użytkowników systemu. Język C jest językiem stosunkowo prostym, który wymaga dużej skrupulatności w przemyśleniu działania programu i wykorzystania zasobów. Jest natomiast o wiele trudniejszy do napisania bezpiecznego oprogramowania, a przy jego stosowaniu sporo obowiązków spoczywa na programiście.

C++ powstał jako rozwinięcie C i zostało w nim poprawionych wiele błędów językowych, które występowały w C. C++ jest już językiem zorientowanym obiektowo i językiem bezpieczniejszym. W C++ można stosować prawie wszystkie metody, które są w C i dodatkowo posiada wiele innych udogodnień jak np. bardzo skrupulatna kontrola typów danych, obszerne biblioteki standardowe czy bardzo rozwinięte zarządzanie dynamiczną alokacją pamięci.

 

Asia: Jakie było najciekawsze urządzenie które oprogramowywałeś?

Rafał: Najciekawszym dla mnie urządzeniem był sprzęt medyczny: holtery ekg – to wymagało ode mnie przyswojenia sporej ilości wiedzy medycznej i czułem, że bardzo mnie to rozwinęło w obszarze wykraczającym poza elektronikę i programowanie.

 

Asia: Podobno programista embedded nigdy nie jest w pracy sam, bo zawsze jest z nim…kompilator. Co to jest?

Rafał: Kompilator to taki program, który sprawdza w kodzie źródłowym błędy oraz poprawność składni. Jeżeli kompilator nie znajdzie błędów w kodzie źródłowym to tłumaczy go na kod zrozumiały dla procesora – kod wykonywalny. To bardzo duży skrót dla osób nietechnicznych ?

 

Asia: Czyli bez kompilatora ani rusz. A jak się uczyć by zostać masterem embedded?

Rafał: Powiem to bardzo dosadnie. Zamknij się na strychu i zacznij pisać oprogramowanie. Obojętnie w jakim języku zaczniesz kodować (choć w przypadku programisty embedded najlepiej jednak C lub C++). Wymyśl program, który chcesz stworzyć, a który na razie wydaje Ci się, że nie jesteś w stanie napisać. Zacznij pisać.

A kiedy coś zacznie Ci już działać, to spróbuj to napisać jeszcze raz uwzględniając swoje dotychczasowe błędy. Po drugiej iteracji wiesz, w którym kierunku trzeba iść. W kolejnej iteracji już wiesz jakie aspekty trzeba poprawić. Większość programistów tak zaczyna.

Ważne jest to, że chcąc pracować jako programista trzeba przestawić swój umysł na bardzo analityczne myślenie, na rozbieranie każdego działania na małe cząstki, aby można to później opisać w języku oprogramowania. Czasem pewne działania wydają się identyczne, a różnią się niuansem.

Należy też nie bać się krytyki, konsultować kod i dużo czytać o sposobie poprawnej implementacji rozwiązań.

 

Asia: Mam nadzieję, że ten strych to jednak tylko przenośnia. Jakie cechy według Ciebie posiada dobry specjalista embedded?

Rafał: Powiedziałbym, że najważniejsze są predyspozycje takie jak – analityczne myślenie, dbałość o szczegóły, umiejętność organizacji pracy, umiejętność architektonicznego myślenia (najpierw trzeba zaprojektować jak to będzie działać, a dopiero później implementować kod). Kolejnymi ważnymi cechami są cierpliwość i determinacja. Czasami poszukiwania błędów trwają wiele godzin.

 

Asia: A co z umiejętnościami twardymi?

Rafał: Programista embedded potrzebuje chociaż podstawowej wiedzy z zakresu elektroniki. Ciężko być dobrym programistą embedded bez znajomości sprzętu. Nawet jeśli w duecie współpracuje programista z elektronikiem to każdy powinien mieć przynajmniej bazową wiedzy z zakresu tego drugiego specjalisty, aby byli w stanie porozumieć się na styku dwóch nauk.

 

Asia: Jak uczyć się programowania, zakładając, że nie mam docelowego urządzenia które ma mieć system wbudowany?

Rafał: Nie trzeba mieć docelowych urządzeń na biurku, aby je oprogramować. Wystarczą płytki ewaluacyjne, aby zasymulować poszczególne elementy i działanie urządzenia. Proste symulacje typu dioda, czy przełącznik symulujący prosty sensor wystarczą, aby stworzyć nawet skomplikowane algorytmy, które później obsługują docelowe elementy wykonawcze. Oczywiście jeśli programujemy sterowniki sprzętu brak docelowego urządzenia w pewnym momencie zablokuje pracę.

 

Asia: Widać, że to co robisz to jest także Twoja pasja. Co lubisz w pracy programisty?

Rafał: To, że nie mogę stać w miejscu, cały czas się rozwijam, ciągle muszę uczyć się nowych technologii, nowych dziedzin wiedzy związanych z typem oprogramowania, które tworzę. I to, że każde, nawet najbardziej rutynowe zadanie można zrobić na co najmniej kilka sposobów.

 

Asia: Rafał, dziękuję za wywiad. Co mogę życzyć programiście embedded? Może tego, aby kompilator nie zwracał zbyt wielu błędów ?

Joanna Stanach

Specjalista HR

Wybór drogi zawodowej jest niezwykle trudny. Jak dokonać właściwego wyboru? Skorzystajcie z doświadczenia ludzi, którzy znaleźli swoją ścieżkę zawodową i dzielą się tym, jak do tego doszli. Wywiady pokazują nie tylko dostępne możliwości, ale również sposób w jaki można zmierzać do danego zawodu, aby stać się dobrym specjalistą. Poznajcie historie ludzi i zawody przyszłości w Fideltroniku :)

Masz pytanie? Napisz do nas!

Jeśli chcesz dowiedzieć się więcej, skontaktuj się z nami praca@fideltronik.com

Napisz