Position: Senior Software Engineer – Real-Time Systems
Experience: 5+ Years
Notice Period: Max 30 days
Role Overview
We are looking for a Senior Software Engineer specializing in Real-Time Systems to design and build high-performance software for a complex, hardware-integrated product.
The ideal candidate is first and foremost a strong C++ software engineer with experience building reliable, multithreaded, performance-sensitive systems. You should be comfortable working close to hardware and developing software where latency, timing, concurrency and deterministic behavior matter.
Experience with robotics, embedded systems, medical devices, or other hardware-integrated products is a bonus.
Key Responsibilities
- Design, develop and maintain production-quality software in modern C++.
- Build high-performance, low-latency and real-time software components.
- Develop multithreaded and concurrent software with predictable behavior and performance.
- Design clean, modular, maintainable software architectures and APIs.
- Work on software components that interface with hardware, sensors, actuators and other system components.
- Analyze and improve application performance, latency, memory usage, and CPU utilization.
- Diagnose complex software issues involving concurrency, timing, resource management, and system performance.
- Develop robust error handling, fault management, logging and diagnostic capabilities.
- Write unit tests, integration tests and automated software validation.
- Participate in architecture, design, and code reviews.
- Collaborate with systems, hardware, controls, test and other software engineering teams.
- Contribute to engineering best practices around coding standards, testing, CI/CD, debugging and software quality.
Required Qualifications
- BS/MS in Computer Science, Computer Engineering, Electrical Engineering or a related technical discipline or equivalent practical experience.
- 5+ years of professional software development experience.
- Strong proficiency in modern C++, preferably C++17/20 or later.
- Strong understanding of:
- Data structures and algorithms
- Multithreading and concurrency
- Memory management and resource ownership
- Templates and STL
- Modern C++ design patterns and idioms
- Experience developing software on Linux.
- Experience developing performance-sensitive, low-latency, or real-time software.
- Strong software debugging and problem-solving skills.
- Experience diagnosing race conditions, deadlocks, memory issues, and performance bottlenecks.
- Strong understanding of software testing and maintainable software architecture.
- Ability to work effectively across software and hardware-oriented engineering teams.
Preferred Qualifications
Experience in one or more of the following areas is a plus:
- Real-time operating systems or real-time Linux
- PREEMPT_RT, QNX, or similar real-time environments
- Hardware/software interfaces
- Embedded software development
- Robotics or industrial automation
- Medical-device or surgical-robotics software
- Sensors, actuators, or motor-control systems
- Inter-process communication and shared-memory systems
- CAN, EtherCAT, Ethernet, SPI, I2C, UART, or similar communication interfaces
- Performance profiling and system-level debugging
What We Value
We are looking for engineers who have strong software engineering fundamentals and can build software that is reliable, understandable, maintainable and performant.
Experience developing embedded software, robotics systems or other software that interacts with physical hardware is a strong bonus.