# Staff Software Engineer - OTA Platform

**Company**: Ford Motor Company
**Location**: Palo Alto, CA
**Work arrangement**: hybrid
**Experience**: staff
**Job type**: full-time
**Salary**: $150,200-$283,500
**Category**: Engineering
**Industry**: Automotive
**Wikidata**: https://www.wikidata.org/wiki/Q44294

**Apply**: https://efds.fa.em5.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1/job/65208?utm_source=yubhub.co&utm_medium=jobs_feed&utm_campaign=apply
**Canonical**: https://yubhub.co/jobs/job_b2db67eb-cb1

## Description

You'll be a core contributor to the In-Vehicle OTA Platform, building the software that will keep Ford's Universal Electric Vehicle fleet up to date. Our OTA software update service is a Rust application responsible for orchestrating vehicle software updates, managing complex multi-stage lifecycles across download, verification, installation, and activation across many ECUs. Your work ships to real vehicles on real roads.

## Responsibilities

- Own and evolve the OTA software update engine.

- Design and implement reliable, safe update orchestration logic.

- Write production-quality async Rust with a focus on correctness, safety, and maintainability.

- Build and contribute to cutting-edge developer tooling that lets engineers create and manage software update deployments.

- Contribute to CI/CD pipelines, container infrastructure, and multi-target build systems.

- Participate in code review with a high signal-to-noise bar: focus on correctness and reliability.

- Collaborate across embedded firmware, vehicle software, and cloud infrastructure teams to coordinate update flows end-to-end.

## Qualifications

- Bachelor's Degree in Computer Science, Software Engineering, or equivalent combination of relevant education and experience.

- 7+ years of professional software engineering experience, with 3+ years writing production Rust, or strong, demonstrable C++ expertise with a clear appetite to work in Rust.

- Strong command of async programming, including the Tokio runtime and concurrent system design.

- Solid Linux systems experience–you are comfortable developing, debugging, and operating software in Linux environments.

- Demonstrated experience designing and implementing state machines for distributed or embedded systems.

- Strong testing discipline: unit, integration, and mock-driven testing.

- Familiarity with CI/CD pipelines, containerization, and modern build systems.

- Excellent written communication , you write documentation your teammates actually read.

Even better, you may have:

- Experience with automotive systems, OTA software updates, or vehicle ECU communication protocols such as UDS, CAN, or LIN.

- Familiarity with Yocto/BitBake for embedded Linux image builds and cross-compilation.

- Background in serialization strategies and schema evolution for distributed systems.

- Cross-compilation experience for embedded or constrained targets.

- Experience packaging and distributing developer tooling to engineering teams.

- Experience in regulated industries where software reliability and traceability are required (automotive, medical, aerospace).

- Comfort working alongside AI coding agents and integrating AI-assisted workflows into day-to-day engineering.

You may not check every box, or your experience may look a little different from what we've outlined, but if you think you can bring value to Ford Motor Company, we encourage you to apply!

## Skills

### Required
- Rust
- async programming
- Tokio runtime
- concurrent system design
- Linux systems
- state machines
- CI/CD pipelines
- containerization
- modern build systems
- written communication

### Nice to have
- automotive systems
- OTA software updates
- vehicle ECU communication protocols
- Yocto/BitBake
- serialization strategies
- schema evolution
- cross-compilation
- developer tooling
- regulated industries
- AI coding agents

---

Source: [Apply at efds.fa.em5.oraclecloud.com](https://efds.fa.em5.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1/job/65208?utm_source=yubhub.co&utm_medium=jobs_feed&utm_campaign=apply)
