Flight Software Engineer
Lynk · Chantilly, VA · 2 wk ago
On-siteInformation TechnologyFull-time
Core Responsibilities
- Contributing to the design of software solutions critical to the operation of our spacecraft, and developing these as Linux applications that run on satellite flight systems.
- Working in a small, agile team to execute the software development lifecycle (requirements definition, design, implementation, test, and verification) across many individual projects.
- Participating in design and code reviews, and collaborating with the team to uphold best practices for the flight software codebase.
- Serving as a liaison between the Operations and Payload teams, supporting their unique demands on the satellite flight systems.
- Creating embedded software to interact with satellite devices and electronics using CAN, I2C, SPI, RS-422, RS-485, and other protocols.
- Implementing inter-application coordination and communications using standard inter-process communication (IPC) mechanisms available in Linux.
- Developing test software to support unit, integration, and system testing of all flight software functions.
- Building the telemetry, instrumentation, and data-capture tooling used to verify and validate flight software on our flatsat.
Basic Qualifications
- Proficiency in at least one systems programming language such as C, C++, or Rust, demonstrated through professional work, significant academic/personal projects, or open-source contributions.
- A willingness to work in the Rust programming language.
- Familiarity with Linux and operating system principles.
- Experience building software that interacts with hardware devices, or a strong systems background and eagerness to work close to hardware.
- An understanding of the phases of the software development life cycle.
- Experience writing automated tests for software you build.
- Familiarity with Git and the fundamentals of CI/CD systems.
- A Bachelor's degree or higher in Software, Computer, Electrical, Aerospace, or a related engineering field, or equivalent practical experience.
Preferred Qualifications
- Several years of professional software engineering experience.
- Network and socket programming experience, particularly for telemetry or commanding interfaces.
- Experience with inter-process communication (IPC) mechanisms.
- Advanced knowledge of the Rust programming language.
- Familiarity with embedded Linux systems, including the Yocto/OpenEmbedded project.
- Experience developing and testing software for SmallSats / CubeSats.
- Experience with hardware-in-the-loop integration and testing.
- Experience with Protocol Buffers, ZeroMQ, gRPC, and Systemd.