About us
Dyson is a global technology enterprise. We solve the problems others choose to ignore, with surprising new inventions that defy convention and simply work better. We’ve been developing robot technology for over 20 years – 200 engineers, 420 patents and £28M of investments – but this is just the start of the domestic robotics revolution.
Within Upstream Robotics, Research is investigating state-of-the-art methods to solve concrete real-world problems and pave the way for Dyson’s future autonomous products. At the same time, New Product Innovation is developing Dyson’s next-generation robotic products that leverage the latest technologies.
Our world-class robotics team is highly multi-disciplinary, covering topics including Robot Perception, Reinforcement and Imitation Learning, Planning and Control, Task Intelligence, Software Architecture, Mechatronics and Platform Design within a friendly and multi-cultural work environment.
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 take on the occasional proof-of-concept or exploration task. You’ll be collaborating closely with immediate team members, Upstream domain experts 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.
As a Senior Software Engineer, you are expected to:
- Have a solid understanding of core development concepts and best practices
- Work with focus, attention to detail and consideration of system-wide implications
- Deliver tasks effectively to specification, on agreed time and with little assistance, but know when to seek clarifications, help or feedback
- Demonstrate a continuous learning mindset, act on feedback and strive to improve our platform and its utility to users
- Communicate with the wider team proactively, minding efficiency and quality of conversations
- Mentor and support junior team members in technical and ways-of-working matters and create a positive and engaging team environment
Responsibilities:
- Design, implement, test, maintain and evolve functional components and tools of our software platform
- Integrate third-party components and implement new system behaviours
- Port select research prototypes in Python or C++ to modern, robust C++ implementations
- 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
- 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 scripting 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
Beneficial:
- 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 parallel programming and performance optimisation
- Experience with ONNXRuntime, TensorRT, CVflow, RKNN or deployment to NPU-based platforms
- Experience with profiling and optimizing machine learning models for target hardware
- Experience making real robots or autonomous systems work robustly in the field
- Experience with ROS 2, DDS-based middleware systems and messaging frameworks
- Experience with simulation environments such as Unity or Isaac Sim and simulation at scale in the cloud
- Experience with Yocto/BitBake based build systems
- Experience with containerised development and deployment
- Experience with behaviour planning and decision making architectures