C++ Software Engineer
Role details
Job location
Tech stack
Job description
Lead the design, development, and ownership of the application framework and middleware across autonomy applications
-
Define and influence software architecture for scalable, reliable, and maintainable autonomy systems
-
Serve as a technical leader within the team, setting coding standards, best practices, and design patterns
-
Mentor and guide junior and mid-level engineers through design reviews, code reviews, and technical coaching
-
Ensure software quality through automated testing, CI/CD pipelines, performance optimization, and documentation
-
Support requirements generation and architecture decisions and tradeoffs
-
Support functional safety software design and validation process
-
Lead debugging and root-cause analysis for complex issues observed in simulation, HIL, or field deployments
-
Collaborate with cross-functional teams to integrate hardware and software solutions
Requirements
The ideal candidate brings deep hands-on experience in embedded software development and can work through requirements definition, including clear documentation., Strong expertise in C++ (required); proficiency in Python
-
Proven experience designing and maintaining large-scale, production software systems
-
Deep understanding of Linux-based development, multithreading, memory management, and performance optimization
Desired Skills:
-
Experience in development of device drivers, hardware diagnostics, non-volatile memory interfacing, board initialization, & communication networks such as J1939/CAN/Ethernet
-
Experience with industry-standard tools such as Git, GitHub, and Azure for version control, collaboration, and cloud services
-
Familiarization with core robotics principles
Soft Skills Required:
-
Strong code review, design documentation, and technical communication skills
-
Working within a team that is spread out across multiple locations
Education & Experience Required:
-
Years of experience: 7+ years of professional experience with a strong focus on embedded C/C++ development
-
Degree requirement: Bachelor's degree in Computer Science, Software Engineering, Computer Engineering, or related field or equivalent experience