Opis stanowiskaInżynier oprogramowania wbudowanego C++ (średni / starszy)Systemy krytyczne / zorientowane na obronnośćPoszukujemy inżyniera zdolnego do wzięcia pełnej odpowiedzialności technicznej za rozwój oprogramowania wbudowanego dla systemów o zwiększonej niezawodności. Praca polega na uczestnictwie w pełnym cyklu tworzenia kompleksu programowo-sprzętowego — od powstania wymagań technicznych po integrację, walidację i wsparcie w produkcji.Rola skupiona na inżynierze, który podejmuje decyzje
Opis stanowiskaInżynier oprogramowania wbudowanego C++ (średni / starszy)Systemy krytyczne / zorientowane na obronność
Poszukujemy inżyniera zdolnego do wzięcia pełnej odpowiedzialności technicznej za rozwój oprogramowania wbudowanego dla systemów o zwiększonej niezawodności. Praca polega na uczestnictwie w pełnym cyklu tworzenia kompleksu programowo-sprzętowego — od powstania wymagań technicznych po integrację, walidację i wsparcie w produkcji.
Rola skupiona na inżynierze, który podejmuje decyzje, pracuje z prawdziwym „żelazem” i rozumie konsekwencje błędów w krytycznych systemach.
Kluczowy obszar odpowiedzialności
- Architektura i wdrażanie oprogramowania wbudowanego dla systemów o podwyższonych wymaganiach niezawodnościowych
- Prawidłowa integracja oprogramowania z sprzęt
- Przewidywane zachowanie systemu w trybie normalnym i awaryjnym
- Ważność techniczna rozwiązań architektonicznych
- Zgodność kodu z wymogami bezpieczeństwa, niezawodności i identyfikowalności
Główne zadania
- Rozwój oprogramowania systemowego i aplikacji C++ dla platform wbudowanych
- Projektowanie architektury z uwzględnieniem ograniczeń pamięci, procesora, zużycia energii
- Praca z MCU/SoC, niskopoziomowa interfejsy (SPI, I2C, UART, CAN, GPIO)
- Implementacja sterowników, poziom HAL, protokoły wymiany
- Współprojektowanie sprzętowo-programowe: udział w doborze podzespołów, analiza obwodów elektrycznych, wpływ na rozwiązania PCB
- Integracja z czujnikami, elementami wykonawczymi, modułami radiowymi, zasilaczami
- Debugowanie i analiza usterek na rzeczywistym sprzęcie (JTAG/SWD, oscyloskop, logika analizator)
- Wyszukiwanie i eliminacja warunków wyścigowych, uszkodzeń pamięci, naruszeń taktowania
- Optymalizacja deterministycznego zachowania systemu
- Udział w przeglądzie kodu i audycie technicznym
Obowiązkowe wymagania techniczne
- Głęboka znajomość C++
- Średni: pewne korzystanie z nowoczesnego C++
- Senior: zrozumienie standardów, ABI, kompilacja i łączenie mechanizmy
- Doświadczenie w programowaniu dla bare-metal lub RTOS
- Zrozumienie działania pamięci (stos/sterta), DMA, przerwań, timerów
- Praktyczne doświadczenie w pracy z prawdziwym sprzętem
- Doświadczenie w pisaniu kodu niskiego poziomu bez zależności od ciężkich frameworków
- Umiejętność czytania schematów i zapisu danych bez „interpretera”
- Zrozumienie zasad elektroniki (analogowej/cyfrowej część)
Dodatkowe kompetencje (zaleta)
- Doświadczenie w opracowywaniu własnych płytek lub prototypów
- Praca z systemami czasu rzeczywistego
- Pisanie testów jednostkowych/integracyjnych dla systemów wbudowanych
- Doświadczenie z systemami o zwiększonej niezawodności (krytycznej, wojskowej)
- Zrozumienie zasad tolerancji błędów i zachowania bezawaryjnego
Oczekiwania środka poziom
- Samodzielne wdrażanie modułów
- Odpowiedzialność za stabilność własnego kodu
- Prawidłowa integracja ze sprzętem
Senior
- Architektura systemu
- Wpływ na wybór MCU, komponentów i rozwiązań inżynierskich
- Przywództwo techniczne
- Mentoring inżynierów
- Akceptacja inżynierii krytycznej rozwiązania
Nie szukamy
- „Tylko oprogramowanie” bez zrozumienia części sprzętowej
- Programista, który nie pracował na prawdziwym sprzęcie