Descrição
The Vehicle Experiences Engine at GM is transforming how millions of people interact with their vehicles by building the software engines behind next-generation digital experiences. At the core of this transformation is the Compute Systems Software team — the group that delivers the foundational embedded platform for GM’s software-defined vehicles.
As a Staff Software Engineer, Compute Systems Software, you will lead the design, development, integration, and debugging of the embedded Linux platform that powers GM’s in-vehicle compute systems. You will work deeply across the Linux kernel, board support packages (BSPs), device drivers, boot and recovery paths, build systems, and core platform services on modern ARM-based SoCs.
You will help ensure that platform software is not only functional in the lab, but performant, diagnosable, recoverable, and maintainable across production vehicle programs.
You’ll report to the Software Engineering Manager, Compute Systems Software, and collaborate closely with partners across Android Automotive OS, multimedia, connectivity, systems frameworks, safety, validation, and vehicle programs. You will also work directly with our silicon vendors to bring up new platforms, resolve complex issues, and optimize platform capabilities for GM-specific use cases.
About the Role
This is a hands-on technical leadership role focused on embedded Linux and automotive compute. You will influence architecture and engineering practices across the platform while remaining close to the code, hardware, tools, and failure modes that determine real-world system behavior.
You will:
- Own critical pieces of the compute platform, from kernel configuration and BSP integration to device drivers, boot and recovery, and low-level system services.
- Build and maintain Yocto-based embedded Linux distributions and the pipelines that produce production images for multiple vehicle programs and hardware variants.
- Harden boot, recovery, watchdog, and health-monitoring paths to improve platform robustness across hardware and software failure modes.
- Lead complex debugging and root-cause analysis across hardware, bootloaders, kernel, drivers, middleware, user space, build infrastructure, and vehicle integration.
- Automate repetitive engineering work with shell, Python, CI/CD tooling, developer-facing utilities and AI to improve the speed and consistency of diagnosis and delivery.
- Partner with our silicon vendors to bring up new SoCs, integrate vendor deliverables, debug issues, and improve the quality and maintainability of upstream and downstream platform code.
- Provide technical leadership through architecture reviews, design and code reviews, mentoring, cross-team debugging, and platform-wide engineering standards.
This role is hybrid, with regular onsite collaboration at a GM technical center, consistent with GM’s hybrid work guidelines for engineering roles.
Responsibilities
Embedded Linux platform development
- Design, implement, and maintain Linux kernel modules, device drivers, BSP components, bootloader optimizations, device-tree configurations, and low-level system services for in-vehicle compute platforms.
- Analyze system behavior across kernel and user space, with a strong focus on correctness, performance, diagnosability, and long-term maintainability.
Yocto, build, and release systems
- Configure and extend Yocto-based embedded Linux distributions, including layers, recipes, machine configuration, image generation, and dependency management.
- Own and refine build systems to produce deterministic, reproducible, scalable images across multiple programs, boards, and software variants.
- Improve build and release pipelines through automation, caching, failure isolation, actionable diagnostics, and clear ownership of pipeline health.
- Partner with CI/CD and validation teams to ensure that platform changes are continuously tested and regression-resistant.
Performance, optimization, and debugging
- Profile and optimize CPU, memory, I/O, boot-time, power, and thermal behavior across the embedded stack.
- Use low-level tools such as perf, ftrace, gdb, strace, kernel tracing, crash analysis, and custom instrumentation to diagnose issues spanning software and hardware boundaries.
- Lead root-cause analysis rather than symptom mitigation, distinguishing transient failures, systemic defects, integration problems, and hardware or vendor issues.
- Turn difficult-to-reproduce failures into deterministic tests, better diagnostics, or automated detection wherever possible.
Engineering systems and quality
- Contribute to automated testing and validation strategies for platform software, including unit, integration, boot, stress, fault-injection, hardware-in-the-loop, and regression testing as appropriate.
- Improve developer experience through self-service tooling, fast feedback loops, clear ownership, and well-documented platform workflows.
- Use Git / GitHub and high-quality code review practices to maintain code quality, traceability, and disciplined change management across a multi-team environment.
- Contribute to upstreaming and long-term reduction of downstream patches where practical.
Technical leadership and collaboration
- Mentor engineers through design reviews, code reviews, hands-on pairing, and structured debugging.
- Influence architecture and execution across Android Automotive OS, multimedia, connectivity, safety, systems, validation, and vehicle integration teams.
- Communicate complex system behavior clearly to technical and non-technical partners, especially during high-severity issues and cross-team decisions.
- Drive alignment on priorities, reliability risks, engineering standards, and ownership boundaries.
Vendor and cross-company partnership
- Work directly with our silicon vendors to integrate BSPs and platform deliverables, resolve defects, and improve vendor engagement and issue turnaround.
- Evaluate vendor code and recommendations critically, balancing time-to-integration with maintainability, performance, reliability, security, and upstream alignment.
Requirements
- Bachelor’s degree in Computer Science, Electrical/Computer Engineering, or a related field; or equivalent practical experience.
- 10+ years of professional experience in embedded systems, kernel-level, or platform software development, including delivery of production software in automotive or similarly complex embedded domains.
- Deep expertise with embedded Linux on ARM-based SoCs, including several of the following:
- Linux kernel subsystems, kernel configuration, scheduling, memory, storage, networking, power, or low-level system behavior.
- Device-driver development, debugging, and hardware interaction.
- BSP integration, bootloaders, board bring-up, device-tree configuration, and peripheral enablement.
- Hardware abstraction and enablement for new boards, peripherals, and SoC platforms.
- Strong hands-on experience with Yocto or a comparable embedded Linux build system, with a track record of shipping commercial embedded Linux deployments.
- Demonstrated strength in system performance, optimization, and complex debugging, with the ability to lead root-cause analysis across hardware, kernel, drivers, middleware, and user space.
- Exposure to Site Reliability Engineering (SRE) or production engineering practices, including observability, automation, incident response, and systematic post-incident improvement, applied to complex software platforms.
- Strong experience with build systems and development tooling, including Make-based build flows, Git / GitHub, code review, CI/CD pipelines, automated testing, and release-quality engineering.
- Strong proficiency in C, plus practical experience with Python and shell scripting such as Bash for automation, tooling, diagnostics, and debugging.
- Demonstrated technical leadership through architecture direction, mentoring, design and code reviews, cross-team debugging, and driving execution across organizational boundaries.
- Strong communication and collaboration skills, with the ability to influence technical decisions, align partner teams, and explain complex system-level topics clearly.
- Experience working directly with silicon vendors or strategic platform partners such as Qualcomm to integrate deliverables, resolve issues, and optimize platform capabilities.
Desired Skills
- Master’s degree in Computer Science, Electrical/Computer Engineering, or a related field.
- Experience contributing to or upstreaming changes in the Linux kernel or related open-source projects.
- Familiarity with Android Automotive OS, HAL integration, and multimedia pipelines such as audio, video, camera, and graphics.
- Experience with crash analysis, platform diagnostics, telemetry, fault injection, or resilience testing.
- Exposure to automotive safety concepts such as ISO 26262, ASIL, safety islands, watchdog architectures, and health monitoring frameworks.
- Experience with secure boot, trusted execution environments, over-the-air updates, rollback, A/B partitions, or production recovery strategies.
- Deep comfort working in Linux / UNIX command-line environments and using classic tools such as shell, core utilities, gdb, perf, strace, and kernel tracing.
- Demonstrated technical leadership in mentoring peers, leading cross-team debugging efforts, and driving platform-wide improvements in reliability, performance, and developer experience.
Compensation
The compensation information is a good faith estimate only. It is based on what a successful applicant might be paid in accordance with applicable state laws. The compensation may not be representative for positions located outside of the California Bay Area.
The base salary range for this role is $217,000 and $275,000. The actual base salary a successful candidate will be offered within this range will vary based on factors relevant to the position.
Bonus Potential
An incentive pay program offers payouts based on company performance, job level, and individual performance.
Benefits
GM offers a variety of health and wellbeing benefit programs. Benefit options include medical, dental, vision, Health Savings Account, Flexible Spending Accounts, retirement savings plan, sickness and accident benefits, life insurance, paid vacation and holidays, tuition assistance programs, employee assistance program, GM vehicle discounts, and more.
Esta função é classificada como híbrida. Isso significa que o candidato selecionado deverá trabalhar no escritório/fábrica da GM pelo menos 3 vezes por semana {ou outra frequência ditada por seu gerente}.
Esta posição pode ser elegível para benefícios de relocação.
Informações sobre diversidade
A General Motors está comprometida em ser um local de trabalho que não só é livre de discriminação ilegal, como estimula verdadeiramente a inclusão e integração. Acreditamos enfaticamente que a diversidade na força de trabalho cria um ambiente no qual nossos colaboradores podem crescer e desenvolver melhores produtos para nossos clientes. Incentivamos os candidatos interessados a analisar as principais responsabilidades e qualificações de cada função e a se candidatar a qualquer cargo que corresponda a suas habilidades e capacidades. Os candidatos no processo de recrutamento podem, quando aplicável, ser solicitados a concluir com sucesso uma ou mais avaliações relacionadas à função e/ou uma seleção pré-emprego antes de iniciar o emprego. Para saber mais, acesse Como contratamos.
Declaração de Igualdade de Oportunidades de Emprego (EUA)
A General Motors tem orgulho de ser um empregador que oferece oportunidades iguais. Todos os candidatos qualificados serão considerados para o emprego, independentemente de raça, cor, religião, sexo, orientação sexual, identidade de gênero, origem nacional, deficiência ou status como veterano protegido.
Adaptações (EUA e Canadá)
A General Motors oferece oportunidades a todos os candidatos a emprego, incluindo pessoas com deficiências. Se você precisa de uma adaptação razoável para ajudá-lo na sua pesquisa de cargos ou solicitação de emprego, fale conosco pelo e-mail [email protected] ou pelo telefone 800-865-7580. No seu e-mail, inclua uma descrição da adaptação específica que você está solicitando assim como o nome do cargo e o número de requisição do cargo ao qual está se candidatando.
