Jobs · Engineering · Virginia

Embedded Flight Software Engineer (Rust)

Umbra · Arlington, VA · 3 days ago
On-siteEngineering$135k–$165k/yrFull-time

About The Team

Space Systems - The Components
Space Systems is where Umbra turns hardware and software designs into on-orbit realities; developing, implementing and iterating mission-ready core technology, while simultaneously advancing the next generation of our own satellite constellation. Space Systems is vertically integrated across the satellite architecture, thus the team designs, builds, and tests an array of critical components and subsystems, including power systems, communications, control systems, deployment hardware, avionics, and payloads, as well as the flight software, firmware and digital design solutions to support the entire hardware stack. Our focus is on first principles engineering, and our mandate is simple: it has to work when it counts. Every bolt, board, and binary is proven on our own SAR constellation, ensuring flight-proven reliability where failure is not an option.

About The Job

We are seeking a Flight Software Engineer who possesses experience in Rust programming language to take an active role in the development and delivery of embedded flight software specifically tailored for Umbra missions. In this pivotal role, you will be tasked with a range of critical responsibilities, including but not limited to the formulation and specification of software requirements, the comprehensive design of robust software architecture, and the actual writing and implementation of code. You will take lead responsibility for the essential processes of system integration and testing, ensuring that all components function seamlessly together. In addition to your core development responsibilities, you will also be expected to provide expert guidance and mentorship in various aspects of software design, code development, and peer code reviews. Your role will include oversight of thorough documentation practices and the meticulous integration of the flight software with flight hardware, which encompasses conducting unit testing to ensure reliability and performance. Your contributions will be vital to the success of our missions, driving innovation and excellence in software engineering within our team.

Key Responsibilities

  • Collaborate with a cross-disciplinary engineering team to design, develop, and maintain reliable, fault-tolerant flight and payload software.
  • Implement software to meet requirements while managing interfaces with multiple spacecraft subsystems and ground systems hardware.
  • Develop command and control software for spacecraft flight operations, payloads, and peripheral electronics.
  • Participate in and contribute to test campaigns, from unit-level testing to automated system and subsystem-level testing.
  • Create and maintain documentation for software operation and interfaces with other system components.
  • Take on additional professional duties as assigned.

Requirements

  • Bachelor's degree in Computer Science, Computer Engineering, or a related field.
  • 3+ years of proven experience in high-reliability software development with Rust or C/C++.
  • 1+ years developing concurrent code with asynchronous Rust.
  • 3+ years of embedded software development with Rust or C/C++.
  • Experience programming on embedded ARM cores supporting SoC architectures in Linux, RTOS, or bare-metal environments.
  • Strong understanding of processor architecture, with the ability to optimize code for performance and memory usage.
  • Experience leading software development processes, including version control, CI/CD, bug tracking, and design documentation.

Desired Qualifications

  • Advanced degree in Computer Science, Computer Engineering, or related field, with 5+ years of relevant experience.
  • Comfortable working in a fast-paced, dynamic development environment.
  • Experience with software used in autonomous, fault-critical systems.
  • Familiarity with Python programming.
  • Knowledge of hardware interfaces such as Ethernet, SPI, I2C, UART, and PCIe.
  • Experience with kernel development using Yocto.
  • Knowledge of dynamics and control systems.
  • Able to travel up to 10-15%.

Similar jobs