This list contains only the countries for which job offers have been published in the selected language (e.g., in the French version, only job offers written in French are displayed, and in the English version, only those in English).
The Vehicle Experiences Engine software organization is a dynamic and fast-paced team responsible for designing and developing embedded software platforms for Infotainment and Software Defined Vehicle solutions. The scope of this work includes operating systems, their BSP layers, core system services, and device drivers. We are developing a world-class GM experience for our customers and driving real changes for the most iconic automaker on the planet. Our team delivers platform solutions for SoCs that enable secure and reliable execution of Infotainment, Autonomous Driving and other high-compute applications. We are offering this challenging position to passionate professionals to lead engineering effort in some critical domains within the Vehicle Experience Engines organization, ideal for those looking to advance their careers and be a part of an organization focused on innovation, speed, and business value.
Job Responsibility:
Design, develop and integrate software update and OTA solutions for GM vehicles
Responsible for the entire life cycle of the Android/QNX/Embedded Linux domain, including requirements analysis, creating design documents, code development and review, integration, and maintenance of infotainment software
Work side-by-side with DevQA engineers on test plan development and review
Follow agile software development process where quality comes first and ensure that the designed solutions conform to architectural requirements such as scalability, maintainability, reliability, extensibility, testability, usability and security
Collaborate with cross-functional teams and external suppliers on design and integration activities
Provide, communicate, and support common best practices among software community
Requirements:
10+ years in Software Development on Linux and/or Android
Advanced programming and debugging skills with C, C++, Java, and unit test framework
Development tools and IDE such as VS Code, Android Studio, Momentics, git, JIRA, CMake, gradle, gcov, SonarQube, etc.
Solid understanding in Android, Embedded Linux and QNX system architecture, frameworks, build system and key components, and comfortable with making system extensions and modifications
Understanding of Linux OS Concepts, including file systems, IPC, RPC, networking, serialization, etc.
Strong analytical skill, debugging capability and problem-solving skills to tackle complex integration challenges through existing code base in C, C++ and Java. Familiar with different debugging methodologies
Ability to create, modify and maintain makefiles and build scripts in complex build system
Strong verbal and written communication skills
Ability to create clear technical documentation for software development guidelines and integration process
Must be a goal driven self-starter, able to work independently under release pressure
Bachelor's degree in computer science, software engineering, or related degree
Nice to have:
Experience with OTA or software update, software delivery mechanism
Experience with diff algorithms and diff tool
Experience with various CI/CD tools and processes
Experience with Yocto Linux
Experience with virtual machine and container technologies