What You'll Get To Do
Develop Flight Software
Design, implement, and integrate real-time embedded software for our flight computers and avionics systems.
Translate system and hardware requirements into robust, maintainable, and testable software.
Work across the hardware/software boundary to bring up, debug, and integrate embedded systems.
Build for Reliability
Develop software with the rigor required for mission-critical aerospace systems, including fault handling, verification, and configuration management.
Develop automated unit, integration, and hardware-in-the-loop (HIL) testing to verify flight software.
Collaborate with Avionics, GNC, Test, Ground Software, and QA engineers to identify and solve complex system-level problems.
Shape the Embedded Team
Help establish our embedded software architecture, development processes, tools, and engineering practices.
Take ownership of projects from initial concept through implementation, integration, and flight readiness.
- Grow with the company and, as the team expands, have the opportunity to mentor engineers and lead the Embedded Software organization.
- What You Have
- Experience-Level:
Software engineer with 5+ years’ experience developing embedded systems for flight-related systems.
Bachelor of Science Degree in Computer Engineering, Computer Science, Electrical Engineering, or related engineering discipline. Advanced degree a plus. Equivalent professional experience may be considered.
Embedded Software Fundamentals
Strong proficiency in C and/or C++ for resource-constrained embedded systems.
Experience developing software for microcontrollers, SoCs, or embedded CPUs.
Strong understanding of embedded concepts
Interrupts and interrupt handling
DMA peripherals
Memory-mapped I/O
Timers and watchdogs
Serial communication interfaces
Concurrency and synchronization
Memory management and resource constraints
Ability to read schematics, datasheets, reference manuals, and hardware specifications and translate them into software requirements.
Real-time Systems
Experience developing real-time embedded software with deterministic timing requirements
Familiarity with RTOS concepts, such as scheduling, priorities, synchronization, inter-task communication, and timing analysis.
Understanding of latency, jitter, deadline misses, and failure modes in real-time systems.
Experience reasoning about system behavior when multiple asynchronous events occur simultaneously.
Safety/Reliability-Critical Aerospace Software
Experience developing software where correctness, reliability, and fault handling are critical.
Experience with
Fault detection and handling
Redundancy or graceful degradation
Watchdogs and health monitoring
Startup/self-test behavior
Robust state-machine design
Safe handling of unexpected inputs and hardware faults
Understanding of the difference between nominal behavior and behavior during degraded or failed hardware/software conditions.
Experience with Weapons Open Systems Architecture (WOSA) and Modular Open Systems Approach (MOSA).
Verification and Testing
Experience writing unit & integration tests
Ability to create test cases from software requirements.
Familiarity with code coverage and other objective measures of verification.
Ability to diagnose problems spanning the SW/HW boundary.
Software Engineering Practices
Good candidates should be comfortable with
GIT and modern code-review workflows
CI/CD for embedded systems
Static analysis and compiler diagnostics
Automated regression testing
Requirements tracking and traceability
Issue tracking and defect analysis
Peer reviews of both code and design
Writing clear technical documentation
Systems-Level Thinking
Collaborate closely with Avionics, GNC, Propulsion, Test, and Ground Software engineers
Translate system-level requirements into software architecture and implementation
Understand interfaces between flight software and sensors, actuators, communications systems, and other onboard computers.
Participate in system architecture and interface definition
- Diagnose problems that may originate in hardware, firmware, software, configuration, or integration.
- What Will Set You Apart
- Experience developing or integrating embedded software within modular weapons, missiles, avionics, or other mission-critical architecture.
Familiarity with defensive programming and failure containment.
Experience interfacing/developing code for FPGAs
MIL-STD-1553, RS-422, and RS-485 experience
Experience with compliance to DO-178C or MIL-STD-882E standards
Thrust Vector Control (TVC) experience
Experience working with Inertial Measurement Units (IMUs)
Experience working with Global Positioning System (GPS) chips
SpaceWire / Time-Triggered Ethernet experience
Experience with Model-in-the-Loop (MIL), Software-in-the-Loop (SIL), and Hardware-in-the-Loop (HIL) testing environments and best practices
Experience debugging software using: JTAG/SWD or equivalent debugging interfaces, Logic Analyzers, Oscilloscopes, Serial/Network interfaces, Embedded tracing/logging tools
DAQ fundamentals for voltage, current, and temperature measurements
Experience developing automated test infrastructure.
Experience with GitLab pipelines, Atlassian tools (Jira, Confluence), or systems engineering practices.
Experience working in a development environment where changes need to be reviewable, reproducible, and traceable.