Senior Software Engineer - Embedded Linux C++
NeST Digital · Bengaluru, Karnataka, India
Full-time · Staff · Posted 1 month ago
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.