Rivian logo

Sr. Software Engineer, Middleware, Autonomy

Rivian

On-sitePalo Alto, CAseniorPosted 9h ago

Job description

As a Software Engineer specializing in safety-critical self-driving middleware, you will play a vital role in the design, development, and deployment of software that underpins essential self-driving features. Your responsibilities encompass a range of technical tasks, from software development to architecture analysis, all contributing to the successful implementation of robust and reliable self-driving solutions.

  • Design, develop, and deploy software within hardware abstraction middleware to enable safety-critical self-driving features

  • Develop software working on Linux as well as real-time operating systems (QNX, FreeRTOS, etc.)

  • Develop software working on a distributed and heterogeneous system (multiple processors/HW engines)

  • Develop necessary tools to support development, debugging, and testing

  • Assist in software-design and code reviews while assisting other developers on technical issues, design choices, and decision making

  • Analysis of requirements, architecture, design, development, code review, quality assurance, and deployment of entire software engineering life cycle

  • Coordinate with application development and cross-functional teams to enable and support middleware integration

  • B.S. / M.S. in Computer Science, Engineering, or a related field

  • 5+ years of experience developing production-grade software from requirements gathering

  • Strong C++ programming skills

  • Familiarity with at least one scripting language (for example Bash, Lua, Python)

  • Experience in automotive or robotics software development

  • Experience in software development for x86_64 and ARM architectures

  • Experience working on heterogeneous systems with various types of hardware accelerators (GPU, ISP, Encoder, etc.)

  • Experience using and/or building libraries for hardware accelerators (CUDA, TensorRT, OpenCL, etc.)

  • Experience contributing to middleware and/or building abstraction layers

  • Familiar with OpenCV, OpenVX, or relevant acceleration frameworks in perception applications

  • Experience contributing to software tooling (for code auto-generation, test automation, fault injection, etc.)

  • Good team player with great communication skills to drive cross-functional efforts in a fast-paced development environment

  • Passionately motivated to take ideas from R&D phase to a product

  • Software Development life cycle experience: from requirements gathering through to implementation and maintenance.