Senior Flight Software Engineer
Position Overview
We are seeking a Senior Flight Software Engineer with strong experience in embedded software development and FPGA/SoC technologies to join our Flight Software team in the United States.
This position will play a key role in designing, developing, integrating, testing, and supporting flight software for spacecraft systems and future space-based platforms. The Senior Flight Software Engineer will contribute across the full software development lifecycle, from initial architecture and requirements definition through system integration, verification, deployment, and operational support.
As a senior member of the team, this individual will also provide technical leadership, contribute to architectural decisions, coordinate with cross-functional engineering teams, and help ensure technical deliverables are completed according to program requirements and schedules.
Key Responsibilities
Design, develop, test, integrate, and maintain embedded flight software from initial concept through subsystem integration and full-system deployment.
Develop and support core flight software used within spacecraft and related embedded systems.
Maintain and modify HDL-based designs to provide functionality aligned with system and mission requirements.
Integrate microcontroller-based software into systems supporting spacecraft command, control, telemetry, and related functionality.
Develop and maintain software for real-time and resource-constrained embedded environments.
Participate in software and system architecture decisions, including evaluation of design alternatives and technical tradeoffs.
Serve as a senior technical contributor within the Flight Software team, helping translate program and system requirements into executable engineering tasks.
Collaborate with electrical, FPGA, systems, test, operations, and other engineering disciplines to architect and implement new capabilities.
Support hardware/software integration, system verification, troubleshooting, and test activities.
Perform debugging and root-cause analysis across software and hardware interfaces.
Participate in code reviews, design reviews, testing, and technical documentation activities.
Help coordinate technical milestones, schedules, deliverables, and engineering dependencies.
Support existing systems as well as the development of future spacecraft platforms.
Qualifications
6+ years of professional experience in embedded software or firmware development.
Strong proficiency in C and C++, including modern C++ standards such as C++11 and later.
Demonstrated experience with software architecture, design, implementation, debugging, and testing.
Experience developing software for embedded and resource-constrained systems.
Experience working with FPGAs and/or SoCs.
Proficiency with an HDL such as Verilog, VHDL, or equivalent.
Experience with logic simulation, HDL design verification, and hardware/software integration.
Experience working in multi-threaded software environments.
Strong understanding of concurrency, synchronization, and inter-process communication concepts.
Experience developing software for a Real-Time Operating System (RTOS) environment.
Familiarity with FreeRTOS or comparable real-time operating systems.
Experience with embedded communication protocols and interfaces such as:
RS-232
RS-485
CAN
SPI
Similar serial or embedded communication technologies
Experience using embedded debugging interfaces such as SWD and JTAG.
Hands-on experience with engineering and laboratory equipment, including:
Oscilloscopes
Logic analyzers
Multimeters
Ability to read, interpret, and troubleshoot circuit diagrams and electrical schematics.
Comfortable working in Linux environments and using command-line development tools.
Experience with contemporary software development workflows, including source control, code reviews, unit testing, issue tracking, and continuous integration.
Strong technical troubleshooting and problem-solving abilities.
Education
Bachelor's or Master's degree in:
Computer Engineering
Electrical Engineering
Aerospace Engineering
Computer Science
Software Engineering
Or a related technical field
Equivalent combinations of relevant education and professional experience may also be considered where appropriate.
Experience
Minimum of 6 years of relevant professional experience in embedded software, firmware, flight software, or a closely related engineering discipline.
Preferred Qualifications
Experience developing software for STM32 or similar embedded processor families.
Experience using scripting languages such as Python, Bash, Ruby, or similar technologies.
Experience with modern build systems and tooling, including CMake, Ninja, or comparable technologies.
Experience developing and maintaining cross-compilation toolchains and embedded build environments.
Previous experience supporting integration, verification, and test activities for complex hardware/software systems.
Experience with aerospace, spacecraft, robotics, autonomous systems, or other high-reliability embedded applications.
Experience troubleshooting issues spanning software, firmware, FPGA, and electrical hardware boundaries.
Familiarity with software development practices appropriate for reliable or mission-critical embedded systems.
Soft Skills
Strong interpersonal and communication skills with the ability to extract, clarify, and document detailed technical requirements.
Proven ability to collaborate effectively across cross-functional engineering teams.
Excellent written and verbal communication skills.
Ability to communicate complex technical concepts effectively to individuals from different engineering disciplines.
Strong organizational skills with the ability to track deadlines, deliverables, dependencies, and team commitments.
Demonstrated technical leadership and the ability to help guide engineering efforts from requirements through completion.
Strong analytical and problem-solving skills.
Meticulous attention to detail across software development, documentation, testing, and project deliverables.
Ability to work both independently and collaboratively in a fast-paced engineering environment.
Technology Stack
The successful candidate should have experience with many of the following technologies and concepts:
Languages: C, C++, modern C++ (C++11+), Python/Bash or similar scripting languages
Embedded Systems: Microcontrollers, SoCs, embedded processors
FPGA/HDL: Verilog, VHDL, logic simulation, design verification
Operating Systems: RTOS, FreeRTOS, Linux
Embedded Interfaces: RS-232, RS-485, CAN, SPI and similar protocols
Debugging: SWD, JTAG and embedded debugging tools
Concurrency: Multi-threading, synchronization, concurrency, inter-process communication
Build Systems: CMake, Ninja, cross-compilation workflows
Development Practices: Git, unit testing, code review, continuous integration, issue tracking
Laboratory Equipment: Oscilloscopes, logic analyzers, multimeters
Hardware Integration: Circuit diagrams, schematics, hardware/software interfaces
Physical Requirements
Ability to work in a standard office and engineering environment.
Ability to use a computer, keyboard, and standard office equipment for extended periods.
Ability to perform occasional hands-on hardware integration and troubleshooting activities in a laboratory environment.
Ability to safely use standard electronic test and measurement equipment as required by the position.
This job description may not be inclusive to the duties and responsibilities listed. Additional tasks may be assigned to the employee from time to time or the scope of the job may change as needed by business demands.