We are seeking a highly skilled and experienced Senior C++ Software Engineer to join our innovative team . In this role, you will be responsible for developing a Hardware-In-the-Loop (HIL) product that enables autonomous vehicle algorithm developers to re-simulate real-life drives. This is a unique opportunity to contribute to the advancement of autonomous driving technologies by creating high-performance, scalable software solutions that directly impact the safety and reliability of autonomous vehicles.
What will your job look like?
Design, develop, and optimize a Hardware-In-the-Loop (HIL) product using C++17+ to support the re-simulation of real-life drives for autonomous vehicle algorithm development.
Design and build the product's main data injector engine that is responsible for injecting all the real-world driving data back to the car "brain".
Utilize deep knowledge of C++ internals, including Standard Template Library (STL), shared pointers, and move semantics, to build efficient and robust software components.
Implement and maintain complex algorithms and data structures, ensuring they meet performance and scalability requirements.
Collaborate closely with algorithm developers, systems engineers, and other cross-functional teams to gather requirements and deliver high-quality HIL solutions.
Profile and optimize code using tools such as perf and Valgrind to ensure maximum performance in real-time simulation environments.
Debug and troubleshoot issues with the help of GDB and other debugging tools to ensure the reliability of the HIL product.
Stay up-to-date with the latest advancements in C++ and autonomous driving technologies, continuously improving code quality and performance.
Requirements: Bachelors or Masters degree in Computer Science, Software Engineering, or a related field.
4+ years of professional experience in C++ software development, with a focus on C++17+.
Strong understanding of C++ internals, including STL, shared pointers, and move semantics.
Experience with CMake and Conan for build and dependency management.
Experience with profiling tools such as perf and Valgrind and debugging with GDB.
Solid understanding of real-time simulation environments and high-performance applications.
Experience with L2+ networking protocols and programming.
Proven experience in developing software solutions for autonomous driving, robotics, or similar high-complexity systems.
Strong problem-solving skills and attention to detail.
Excellent communication and collaboration skills.
Experience working in a Linux/Unix environment.
This position is open to all candidates.