Role Overview
Develop, test, and maintain real-time software modules on Linux-based systems. You will implement high-performance, multicore solutions and work with kernel-level or near-kernel-level components to optimize software for performance, concurrency, and deterministic behavior.
Responsibilities
- Develop, test, and maintain real-time software modules on Linux-based systems.
- Implement high-performance, multicore solutions using C/C++.
- Work with kernel-level or near-kernel-level components (e.g., POSIX APIs, threading, memory management, interprocess communication).
- Optimize and debug software for performance, concurrency, and deterministic behavior.
- Participate in code reviews, architectural discussions, and continuous improvement initiatives.
- Create and maintain technical documentation for software components.
Requirements
- Bachelor’s degree in Computer Science, Computer Engineering, Electrical Engineering, or related field.
- 2-5 years of experience in software development using C/C++.
- Hands-on experience with POSIX/Unix/Linux development.
- Understanding of real-time programming concepts (RTOS, scheduling, latency constraints).
- Familiarity with multithreading, synchronization primitives, and IPC mechanisms.
- Strong debugging skills using tools such as GDB, Valgrind, or perf.
- Experience with version control systems such as Git.
Nice to Have
- Experience with Linux kernel modules or real-time patches (e.g., PREEMPT_RT).
- Knowledge of networking protocols, device drivers, or embedded systems.
- Scripting experience (Python, Bash).
- Familiarity with CI/CD pipelines and build systems (CMake, Make).
- Automotive and/or automation domain know how.
- Exposure to agile development or DevOps practices.