About this Onboard Software Engineer - Core Services role at Loftorbital
Loft’s Onboard Software group provides the on-orbit software that powers our core products. This is responsible for monitoring and control of major space program elements, including:
-
Flight Products computational environments (including physical and virtual processors);
-
Interfaces with external equipment (imagers, RF, ISL); and
-
Interfaces with the spacecraft bus.
The Core Services team is responsible for high-level vehicle services and functions, including file transfer, time synchronization, automation, scheduling, attitude control, and navigation. Many of these services are reused across all satellite programs and form the foundation of our onboard architecture.
About this role:
- Design, implement, and refine software with a high degree of ownership, driving impactful features from concept through delivery while ensuring robustness and reliability.
- Review code, provide clear feedback, and enforce adherence to established development processes, style guides, and design standards to maintain consistency and quality across the codebase.
- Design and implement unit tests for both self-authored and peer-authored code.
- Utilize version control systems to create feature branches, push code, and merge approved code into production branches.
- Contribute to the onboard software architecture through design proposals and collaborative review
- Participate in the review and enhancement of software development processes and design standards.
- Coordinate with downstream teams on the release, distribution and adoption of latest releases.
- In addition to responsibilities within onboard software, you’ll have the opportunity to directly be involved in operating our on-orbit fleet of satellites.
Must Haves:
- 2+ years software engineering experience, using programming languages including C/C++ (C++11 or newer) and Python.
- Experience with version control systems such as Git
- Experience with continuous integration tools (e.g., GitLab-CI, Jenkins).
- Experience with build systems (e.g., Make, CMake).
- Understanding of distributed architecture.
- Familiarity with networking protocols (e.g., UDP, TCP, IP) and POSIX standards.
- Experience in developing multi-threaded applications.
Nice to Haves:
- Familiarity with additional programming languages, such as Go or Rust.
- Experience with embedded Linux operation, including Yocto, device trees, systemd, and Linux on ARM platforms.
- Proficiency with unit test frameworks (e.g., pytest, Googletest, Unity) and keyword-driven test frameworks (e.g., Robot, Cucumber).
- Experience with middleware framework (gRPC, ZMQ/NATS, etc.)
- Experience with containerization technologies (Docker, K3S, systemd-nspawn)