C++ Embedded Software Engineer at Ocado Technology

  • Anywhere (100% Remote) Only
  • Ocado Technology
Job Description:

The On-Vehicle Software team is one of the three core engineering teams within Autonomous Mobility.

We are responsible for all on-vehicle software systems required to load, store and present goods/items from a self-driving delivery vehicle. A few examples of these systems/problems include:

  • The control of all onboard mechatronic delivery systems designed and built by the Autonomous Mobility Hardware Team
  • Cloud communications with the Autonomous Mobility Cloud team (backend)
  • On-Vehicle communications with the vehicle platform and self-driving system

What will I be doing?

First and foremost you will be responsible for designing, implementing and testing software solutions to the problems described above. Our design processes involve software architectural design with a strong consideration for the hardware architecture and systems. As the team is responsible for all on-vehicle software we work on low-level firmware, higher-level application software and everything in between. Although some of our engineers work across the full stack, this isn’t expected. If you are more comfortable working closer to the metal than the cloud (or vice versa), that is completely fine. If that is the case, you will have a fantastic opportunity to learn and widen your skillset.

As we are working with autonomous vehicles, our testing process is just as exciting as the implementation!

Beyond unit testing (automated in CI pipelines), we test on dedicated custom-designed benchtop hardware before running full integration tests with active autonomous vehicles.

What we are looking for?

​We are hiring across the spectrum of experience levels and skills as we have multiple positions available.

Our code-base is designed using an event-driven architecture (on both real-time and general-purpose operating systems) and implemented in C++ (CMake is used to control compilation), with some supporting tooling written in python and bash.

Considering this, our interactive coding exercise will be in C++ and will touch on topics like control flow, object-oriented programming, memory management, interrupt service routines and data structures. We acknowledge that languages, as well as tooling and supporting software, can be learnt on the job. However, we are interested in candidates with a sound understanding of both object-oriented design and C++.

As the game goes, things don’t always work as they should (especially when working with leading-edge custom hardware), and so we will be interested in systematic and creative debugging approaches.

Our hardware architecture consists of both real-time capable microprocessors and general-purpose, high-powered rugged processing units. This means our software stack ranges from application software (C++ 20 deployed on a Linux operating system) to low-level firmware (C++ 11 and using a real-time operating system). While experience using more advanced features of C++ would be fantastic, it is not essential - the same applied to low-level firmware experience.

Our system makes extensive use of both wired and wireless communication protocols. Experience working with serial communication protocols (CAN/CAN FD, SPI, I2C) would certainly be a bonus but is not a hard requirement. The same applies to experience with wireless communication.

Efficient and thorough testing - especially when a system has hardware dependencies - is an art form. For more senior roles, we will be looking for experience and knowledge in this area. We keep track of our development using the git protocol, and we expect applicants for more senior roles to have a working knowledge of it.

Lastly, as we are deploying our software on vehicles we are conscious of automotive cybersecurity - particularly when it comes to specific C++ implementation. Experience in this domain is not required for this application but would be considered valuable.

Company Benefits

Our employee benefits are designed for you, we care about people and we’ve ensured we have a wealth of benefits that focus on your well-being. We regularly review our benefits to ensure we are supporting our employees appropriately. Currently, we offer technically stretching work, a competitive salary and;

  • Hybrid working patterns meaning part of the working week can be spent working remotely (typically 3 days per week). However, your working pattern will depend upon your role/team.
  • 30 days working from anywhere policy
  • Wellbeing support through Apps such as Unmind and an Employee Assistance Programme
  • 25 days annual leave, rising to 27 days after 5 years service (plus optional holiday purchase)
  • Pension scheme (various options available including employer contribution matching up to 7%)
  • Private Medical Insurance
  • 22 weeks paid maternity leave and 6 weeks paid paternity leave (once relevant service requirements complete)
  • Train Ticket loan (interest-free)
  • Cycle to Work Scheme
  • Free shuttle bus to and from Hatfield Train Station to the Hatfield offices
  • Free shuttle bus to and from Welwyn Garden City Train Station to the Welwyn Garden City offices
  • Opportunity to participate in Sharesave and Buy as You Earn share schemes
  • 15% discount on Ocado.com and free delivery for all employees
  • Income Protection (can be up to 50% of salary for 3 years)
  • Life Assurance (3 x annual salary) We also have regular divisional socials, sports clubs not to mention the Ocado Technology Academy for a packed schedule of courses, conferences and events. If you think you have what it takes to make a difference, please submit your application below.

Interview Process

  • Technical
  • Pair programming
  • Values assessment

Other Jobs in Back End