About the Team
Our company is at the forefront of developing cutting-edge autonomous driving technology. Autonomous vehicles are highly complex systems that rely on robust operating systems, seamless network connectivity, and efficient management tools. We are responsible for developing and maintaining the operating systems and system software that power self-driving cars and delivery robots. Our work ensures seamless network connectivity, reliable self-driving software deployment, and efficient collection and cloud delivery of ride logs. By providing the critical infrastructure that underpins autonomous mobility, we enable our vehicles and robots to operate safely, efficiently, and at scale.
About the Role
You will be involved in the design and development of software solutions for the following areas:
- Autonomous cars and robots software deployment and update, fleet management.
- Autonomous cars and delivery robots network connectivity.
- Development and management of large mono-repository build system and CI/CD infrastructure.
- Data delivery from autonomous cars and delivery robots.
What You'll Do
- Design, develop, and maintain system-level software for Linux: x86, arm64.
- Work on software that interacts with operating system components and cloud services, focusing on efficiency and reliability.
- Contribute to system architecture design, ensuring that software integrates smoothly with existing infrastructure.
- Implement modern software intercommunication protocols (e.g., gRPC, Protocol Buffers).
- Ensure software system security by applying basic security principles.
- Write scripts and automate tasks using Python.
What You'll Need
- Proficiency in Linux-based systems, including both x86 and embedded devices.
- Proficiency in one of the required programming languages (Python, C++, Go) with a readiness to learn and work with Go.
- Familiarity with Linux networking, including bridging, routing and virtualization.
- Experience with interprocess communication protocols such as gRPC and Protocol Buffers.
- Understanding of dynamic linking and its importance in software packaging.
- Basic understanding of software system security principles.
Nice to Have
- Knowledge of Linux distribution management, particularly Ubuntu and NixOS (the latter is a significant plus).
- Knowledge of isolation and virtualization techniques, particularly Linux containers and Docker.
- Experience with various software build systems (Bazel is a significant plus).
- Familiarity with DevOps practices, including CI/CD processes on GitHub, AWS, and Kubernetes for cloud infrastructure.
- Solid understanding of large-scale data processing principles.
- Knowledge of Linux kernel basics and the ability to write or modify hardware drivers.
- Willingness to engage in cross-functional tasks and learn new technologies.
- Willingness to write system software for in-house developed hardware.
Candidates are required to be authorized to work in the U.S. The employer is not offering relocation sponsorship, and remote work options are not available.