Job Purpose
We are seeking a Senior Embedded Linux C++ Engineer responsible for developing and stabilizing system-level C++ software on Linux-based embedded platforms.
This is a hands-on development role focused on implementing, integrating, and debugging performance-sensitive C++ components operating close to hardware and Linux OS services. This role requires strong expertise in modern C++, multithreading, and practical system-level troubleshooting within production embedded environments.
Key Responsibilities
- Design and develop object-oriented C++ components in a Linux userspace application running on an x86-based embedded platform.
- Implement multithreaded, concurrent C++ components with correct synchronisation, resource management, and RAII-based ownership.
- Design and implement inter-process communication between application components and system software using Linux IPC mechanisms.
- Diagnose and resolve complex runtime issues — memory leaks, race conditions, deadlocks, and latency regressions — across the full software stack.
- Maintain software consistency and quality across multiple product variants sharing a common platform codebase.
- Work in an agile sprint cadence with the Germany-based engineering team, actively participating in planning, code reviews, and cross-site collaboration.
- Contribute to Yocto/OpenEmbedded build system configuration and CI/CD pipeline maintenance.
- Write unit tests for C++ modules and support automated build workflows.
- Participate in code reviews and follow established engineering practices.
Required Technical Skills
- 8+ years of software development experience with a strong C++ background in Linux environments.
- At least 4 years of hands-on C++ development in Linux userspace environments.
- Strong hands-on expertise in Modern C++ (C++11/14/17) including multithreading, synchronization primitives, memory management (RAII, smart pointers), and performance-aware design.
- Proven experience developing, debugging, and stabilising multithreaded Linux userspace C++ applications.
- Solid experience with Linux IPC mechanisms like sockets, shared memory, pipes, message queues and designing reliable inter-process communication between concurrent applications.
- Strong debugging skills using GDB, strace, perf, core dump analysis with real production incident ownership, not just familiarity.
- Experience writing unit tests for C++ modules using Google Test (gtest) and integrating them into CI/CD pipelines.
- CI/CD pipeline experience — Azure DevOps or Jenkins; CMake build system and Git for collaborative development.
- Working knowledge of Linux shell scripting and Python for automation and tooling support.
- Demonstrated experience resolving stability and performance issues in production Linux software.
- Good verbal and written English — daily collaboration with an international engineering team is central to this role.
Preferred / Good-to-Have Skills
- Video or image processing experience — GStreamer, V4L2, OpenCV, pipeline design and latency optimisation. Highly relevant to this role.
- Experience managing software across multiple product variants within a shared platform codebase.
- Background in middleware or service-oriented architecture on embedded Linux platforms.
- Experience in globally distributed development teams, particularly with European engineering counterparts.
- Familiarity with regulated software development practices in medical or automotive domain awareness.
- Basic conceptual awareness of hardware communication protocols (SPI, I2C, UART) — driver development not required.
- Familiarity with ARM/FPGA.
- Hands-on experience with Yocto/OpenEmbedded build systems — recipe modification, layer configuration, and image builds.
Non-Technical Requirements.
- Strong ownership mindset and accountability for assigned modules.
- Structured and analytical troubleshooting approach.
- Effective collaboration across geographically distributed, cross-functional teams.
- High level of engineering discipline and attention to detail.
- Long-term commitment and stability — this role involves building deep platform knowledge that grows over time and the team values engineers who stay and grow with the product.