Hybrid
Full Time Software Architecture & Engineering
Responsibilities
Design, develop, and maintain planning and prediction systems, including trajectory generation, behavior prediction, decision-making, and motion planning algorithms for autonomous trucks.
Contribute to the evaluation and development of planning approaches, including optimization-based, learning-based, and hybrid architectures.
Develop production-quality software using modern C++ within a Linux environment while adhering to quality, safety, testing, and deployment best practices.
Participate in software architecture discussions and contribute to technical designs that support scalable and maintainable autonomy systems.
Develop and execute validation strategies across Software-in-the-Loop (SiL), Hardware-in-the-Loop (HiL), and Vehicle-in-the-Loop (ViL) environments.
Collaborate closely with Safety, Controls, Perception, Validation, and Simulation teams to develop safe and reliable autonomous driving behaviors.
Investigate and debug vehicle behavior by reproducing issues in simulation, analyzing system performance, and implementing software improvements.
Support vehicle integration, deployment activities, and post-deployment investigations to ensure reliable autonomy performance.
Participate in technical design reviews, code reviews, and continuous improvement initiatives across the Behaviors organization.
Mentor junior engineers through collaboration, technical guidance, and knowledge sharing.
Requirements
Bachelor's degree in Computer Science, Robotics, Electrical Engineering, Mechanical Engineering, or a related technical field with 5+ years of industry experience; OR Master's degree with 3+ years of experience; OR PhD with 1+ years of experience.
Strong proficiency in modern C++ development within Linux-based environments.
Experience developing robotics, autonomous vehicle, ADAS, or other complex real-time software systems.
Experience designing and developing motion planning, behavior planning, prediction, decision-making, or related autonomy capabilities.
Strong understanding of software engineering fundamentals, system design principles, and scalable development practices.
Experience working across the full software development lifecycle, from design and implementation through validation, deployment, and operational support.
Strong problem-solving skills and the ability to debug complex system-level issues.
Excellent communication and collaboration skills within cross-functional engineering teams.
Ability to work independently while contributing effectively within a highly collaborative environment.