Jak wygląda praca programisty embedded?

post-thumb

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.

comments powered by Disqus