Project Overview:
Routing engine is one of the key components of the Automotive Navigation SDK. It provides a family of routing algorithms employing heuristics fitting each scenario best: resource constrained embedded vs cloud that could benefit from more resources as well as more information such as real time traffic or precomputed routes, car routing vs truck routing or pedestrian or public transit.
To assure smooth user experience and adapt in real time, the routing engine works closely with the user guidance graphical and voice interfaces, and online traffic information service.
The SDK is in use by world leading automotive brands for many years, so the scope of work is both maintenance as per real world scenarios as well as development for the future of automotive industry: electric cars, autonomous driving, etc.
Technically, the Routing engine is a C++14 cross platform library (primarily targeting Linux, Android and QNX) excessively covered with automated tests at multiple levels: unit, map integration, user scenario acceptance. BDD-style acceptance tests make use of Python and Cucumber framework. Cross component integration within the SDK is ensured with mandatory Gerrit peer code reviews and verified with central CI and CD pipelines.
Responsibilities:
- Participate in product discussions with PO and technical discussions within the team to find the right solution architecture and design;
- Implement new features in C++, provide automated test coverage;
- Profile and optimize resulting C++ code;
- Design interfaces and implementation to support reusability, testability and modularity;
- Integrate our solution with other parts of the Navigation SDK and target platform in the way that meets the customer expectations.
Requirements:
- 3+ years of experience in software engineering;
- Experience with embedded development, low level performance optimization, QNX is an advantage;
- Excellent analytical, algorithmic and optimization skills;
- OOAD, architecture and design patterns;
- Expertise in cross-platform C++ (preferably C++11), boost;
- Knowledge of discrete mathematics will be a plus;
- At least upper-intermediate level of English, well-developed communication skills;
- Understanding of Agile methodologies and engineering practices.