Senior Software Engineer
Saint-Petersburg Lakhta-Olgino /
Technology – Autonomous Driving /
At Arrival, our team is creating best-in-class electric vehicles using a radical new method of design and production. We work with some of the world's leading businesses and governments to achieve our goal of redefining mobility and transport ecosystems, transforming how people and goods travel and enhancing urban environments for all communities.
Innovation, rapid development and testing help us to push the boundaries. Our New Method takes our portfolio of patented technologies created in-house, and combines it with assembly in Arrival Microfactories. It’s a groundbreaking approach, leading to products with maximum functionality, peak efficiency, and an elevated experience – at a much more competitive price than other electric vehicles, and even fossil fuel vehicles.
We’re recognised by LinkedIn as the top UK startup of 2020, and recently announced plans to list on the Nasdaq with an expected valuation of $5.4bn.
The ADS (autonomous driving system) team is developing an AI system for both public roads and racing infrastructure, as we are a partner and a member of Roborace: we develop control programs for Robocar (an all-electric and fully autonomous racing car) and also work on ADAS development.
We are currently looking for an experienced Systems Engineer / Senior C ++ Developer to join our SDK team who are creating a set of software tools for AD/ADAS developers. These guys are testing cutting edge technologies on a local prototype of a ground POD, on commercial samples for our clients, as well as on Roborace racing cars.
The number of the following sensors are used: lidars, cameras, radars, ultrasonics, inertial and satellite navigation systems. Therefore, the work is closely related to the protocols and manufacturers' SDKs. Part of the work includes the prototypes refinement and adaptation to the industrial level. All the libs are combined into a platform for sensors data receiving, recording, playing back and datasets displaying , as well as sensors calibration.
- To develop libraries, console and visual tools, for example to develop dataset quality validation SW;
- To develop SDK platform, for example to add infrared cameras support;
- To implement static analysis tools in CI / CD;
- To take part in the platform architecture design;
- To decode device protocols and work with low-level file formats;
- To write tutorials, examples, help documentation;
- To set up processes for building, generating and publishing documentation, testing, packaging, deploying and releasing versions;
- we provide technical support for the solutions we have developed.
Expertise and skills required:
- Proven skills in C ++ development (14 version and upper);
- Profound knowledge and work experience in Linux;
- Experience in meta-programming;
- Profound knowledge in C++ libs such as STL and Boost.Asio;
- Knowledge in the modern CMake dialect and how to design a library as a dependency that is easy to connect: specific macros and paths to public header files and libraries are automatically distributed;
- Experience with Git: to create a feature branch, to move freely from one to another and stash; to juggle commits and rebase, but at the same time to understand the relevance of such a rewriting of the history of changes; to know how to search for regressions with bisect;
- Experience with Docker: to understand the difference between an image and a container;
- Basic knowledge in linear algebra;
- Experience in design techniques and creating reusable components;
- Experience in or willingness to learn how to create software products for other developers;
- Experience in or willingness to learn how to create critical and fault-tolerant subsystems;
- Command of English at the Intermediate level, sufficient for reading technical literature and scientific articles and communicating with foreign counterparts.
Technologies used in the project:
- CMake 3.5, Ninja, CPack, CTest, С++14, STL, Boost;
- Ubuntu 16.04 — as current OS, QNX and Ubuntu 20.04- are planned;
- amd64 (x86_64) and arm64 (aarch64) — principal HW architectures;
- Doxygen and Sphinxfor documentation;
- GitLab and Docker for build, testing and documentation generating;
- Debian- repository;
- Python 3.5+ and Bash for ruting tasks automation;
- Qt 5.15, QtQuick and QML for interfaces development;
- tmux or screen to work on remote machines;
- IDE is chosen according to personal preferences.
At Arrival we want all of our employees to feel comfortable bringing their passion, creativity and individuality to work. We value all cultures, backgrounds and experiences, as we truly believe that diversity drives innovation. Join our mission to bring better, more sustainable transportation to communities around the world.