K2 Space Flight Software Engineer developing and verifying software for high-power spacecraft control systems. Responsible for software architecture, fault tolerance, real-time control, and telemetry downlink for spacecraft subsystems.
Responsibilities
The software team at K2 strives to blur the lines between the various types of software development and encourages team members to get into parts of the stack they may not otherwise have experience with. This spectrum includes GNC algorithms (Rust, C++), application software on flight computers (Rust, C++), to embedded software on microcrontrollers (Rust, C++),to operating systems (Rust, C++, C), to HDL programming (VHDL, SystemVerilog), to test systems (Python), and many things inbetween. By doing this, we create a stronger team with more capable engineers. For now, this does not include front-end, artificial intelligence, or machine learning development.
As a part of the team, you will be responsible for the development and verification of the software used to fly some of the largest spacecraft that have ever been flown. You will be able to write mission-critical code that controls propulsion systems, attitude control systems, and power systems to ensure safe and reliable operation of the vehicle. In your first 6 months you will developcore pieces of the software architecture including the strategies for fault tolerance, real-time control, and telemetry downlink. In your first year you will implement larger software systems and begin verifying your code using both software and hardware in the loop simulators. In your first two years you will operate your code on multiple spacecraft, demonstrating robust performance in demanding missions.
Create software architecture for real-time, fault tolerant control of a 20kW+ spacecraft
Develop software applications for control of spacecraft subsystems, including propulsion, guidance/attitude control, thermal, power, and communications systems
Design and implement state machines for robust operation of the spacecraft
Create and utilize robust tools to allow for rapid deployment of quality code
Perform data analysis and anomaly investigation to identify and resolve software bugs
Support integration and testing of the spacecraft subsystems
Build and maintain infrastructure to increase reliability when developing and testing software
Qualification
Bachelor's degree in computer scienceDevelopment experience in RustBasic knowledge of electronics
Required
Bachelor's degree in computer science, computer engineering, electrical engineering, math, or a STEM discipline or 10+ years of professional experience in software engineering
Development experience in Rust, C/C++, Python, VHDL, SystemVerilog
Preferred
Experience with spacecraft flight software development
Fluency with Linux systems programming and driver development
Experience with continuous integration and continuous delivery systems
Experience building or working with hard real-time embedded systems (bare-metal or RTOS)
Basic knowledge of electronics, computer architecture, and control systems
Experience developing or working with state machines
Experience with software verification and testing methods
Experience with software and network performance analysis and debugging