Aww yeah, this job has expired on Pro Jobs. Reasons could be: the employer is not accepting applications, is not actively hiring, or is reviewing applications.
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:
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.
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.
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;