Jak wygląda praca programisty embedded?
Podobnie jak każdego innego programisty
Praca programisty embedded wygląda bardzo podobnie do pracy każdego innego programisty. Dzień rozpoczynamy od kawy/herbaty, aktualizujemy repozytorium tzw. repo z kodem, czytamy i odpowiadamy na maile, w międzyczasie przebudowujemy aplikacje. Przeglądamy nowe zmiany w kodzie, sprawdzamy jakie uwagi mieli do niego inni. Wpływ na harmonogram dnia ma także metodologia zarządzania projektem stosowana przez firmę np. Waterfall, Scrum, Kanban. W firmach gdzie pracowałem był wykorzystywany Scrum co oznacza planowanie pracy na najbliższe 2 tygodnie i codzienne spotkania (‘daily’), gdzie omawiamy nasze postępy, plany i problemy, z którymi się mierzymy. Po “daily” przychodzi czas na kodowanie, często przeplatane innymi spotkaniami pozwalającymi ustalić szczegóły proponowanych rozwiązań. Kolejną czynnością jest sprawdzenie kodu kolegów i nanoszenie na niego uwag. Dzień kończymy wrzucając zmiany do repo i szczęśliwi wracamy do domu (oczywiście jak rozwiązaliśmy wszystkie problemy ;).
Ale jednak inaczej
Pracujemy bliżej sprzętu - hardware’u (HW), czasem się coś pali na płytce, kondensator wystrzeli, takich atrakcji “zwykły programista” nie doświadczy. Developer embedded musi znać sprzęt na którym pracuje, a ten w zależności od projektu ma różne komponenty i ograniczenia np. 4 kanały ADC (analog digitial converter) czy 8KB RAMu. Te ograniczenia zaś są wypadkową wielu czynników np.: kosztu elektroniki, czasu implementacji, utrzymania rozwiązania, bezpieczeństwa, itp. Często wykorzystujemy też wiedzę z protokołów komunikacyjnych np.: UART, I2C, SPI, Bluetooth. Do tego wszystkiego musimy określić warstwę, gdzie programujemy np.: drivery, HAL(hardware abstraction level) czy aplikacja wykorzystująca już istniejący OS (Operating System). W rzeczywistości nie zawsze brudzimy sobie ręce. Rodzaj projektu często definiuje czy weźmiemy do ręki lutownice, a na naszym stole zagoszczą takie zabawki jak oscyloskop, miernik i analizator logiczny. Żeby było ciekawiej dziedzina w jakiej pracujemy będzie stawiać przed nami kolejne wyzwania:
- robotyka (algorytmy przetwarzania obrazów, planowania trasy, sterowania),
- bezpieczeństwo (algorytmy szyfrowania, uwierzytelnianie),
- IoT (protokoły komunikacyjne między urządzeniami, analiza danych),
- 5G (przetwarzanie sygnałów, protokoły komunikacyjne).
Bez obaw, nie od razu Kraków zbudowano, a Ty wszystkiego wiedzieć nie musisz. Do pierwszej pracy wystarczą Ci te podstawowe umiejętności o których opowiem w kolejnym artykule.