About the role
As a member of Upstream Robotics Software & DevOps team, you'll design, implement, maintain and extend components of our software platform, support its users, integrate new functionality and proof-of-concept applications. You'll be collaborating closely with immediate team members, Upstream design and research engineers and Downstream colleagues. This is an opportunity to play a key role in continuously improving the architecture, practices and tooling with the goal of accelerating research and development, closing the gap to production and shortening time-to-market.
Responsibilities:
- Contribute to the ideation, exploration and proof-of-concept implementation of new feature and product concepts
- Design, implement, test, maintain and evolve functional components and tools of our software platform in modern C++ and Python
- Integrate third-party components and implement new system behaviours
- Help manage the entire high-level software stack, including the operating system, device drivers and user interfaces
- Participate in the design of a distributed system software architecture that is scalable and deployable
- Meticulously document and communicate software requirements, design and implementation
- Mentor and support junior team members in technical and ways-of-working matters and create a positive and engaging team environment
- Drive a culture of software quality and collaboration that can progressively become the norm across the group
About you
Required:
- Degree in engineering or equivalent industry experience
- 3+ years of work experience with robotic, actuated, real-time or simulated physical systems
- Strong object-oriented and functional programming skills in modern C++
- Working knowledge of a ing language such as Python or Bash
- Good knowledge and hands-on experience with Linux system and toolchains
- Proficient use of development best practices and tools including version control, unit testing, continuous integration and continuous delivery (CI/CD)
- Ability to break down problems, estimate development effort and prioritise work
- Habit of exercising engineering precision
Preferred:
- Experience making real robots or autonomous systems work robustly in the field
- Professional software development experience in a production environment
- Significant contributions to open-source projects
- Experience inspecting, debugging, testing and profiling complex software systems
- Experience with ROS 2, DDS-based middleware systems and messaging frameworks
- Experience with parallel programming and performance optimisation
- Experience with simulation environments such as Isaac Sim, MuJoCo or Genesis and simulation at scale in the cloud
- Experience with ONNXRuntime, TensorRT, CVflow, RKNN or deployment to NPU-based platforms
- Experience with NVIDIA ecosystem (Jetson, NITROS, TAO, DeepStream)
- Experience with profiling and optimizing machine learning models for target hardware
- Experience with Yocto/BitBake based build systems
- Experience with containerised development and deployment
- Experience with behaviour planning and decision making architectures
- Experience with robot perception, motion planning, control, reinforcement or imitation learning or VLMs