Overview
We are looking for a Build & Release Software Engineer to join our team, focusing on the application software powering our satellite systems. In this role, you will take ownership of our compilation infrastructure, continuous integration pipelines, and dependency management across large-scale C++ codebases running in Embedded Linux environments.
You will operate at the intersection of software engineering and developer infrastructure, helping improve developer velocity, reduce build and test times, and maintain stable, repeatable releases across both simulated and hardware-integrated systems.
What You'll Do
- Design, maintain, and optimize cross-platform build systems using tools such as CMake and Bazel.
- Manage and upgrade compiler toolchains (GCC, Clang, etc.) while handling complex dependency graphs, third-party libraries, and internal package management.
- Own, scale, and secure Continuous Integration and Continuous Deployment (CI/CD) workflows tailored for large-scale C++ applications.
- Diagnose and optimize compilation and linking bottlenecks through caching, parallelization, and distributed build strategies.
- Ensure seamless cross-compilation across multiple architectures including x86 and ARM.
- Support testing in containerized and emulated environments using technologies such as Docker and QEMU.
- Write robust tooling and automation scripts in Python and Bash for environment provisioning, static analysis, and artifact generation.
- Partner closely with core C++ developers to improve modular architecture, dependency management, and overall build reliability.
- Build reproducible and deterministic build and release environments across local development, CI, and hardware-integrated systems.
Required Qualifications
- 3+ years of experience focused on Build/Release Engineering, Developer Infrastructure, or DevOps supporting complex C++ codebases.
- Advanced proficiency with CMake and GNU Make/Ninja.
- Strong Linux shell and scripting skills, including Bash.
- Strong understanding of the C++ build, compilation, and linking lifecycle.
- Familiarity with modern C++ standards (C++17/20/23).
- Experience managing transitive dependencies and modular build targets.
- Experience working within Linux-based development environments.
Desired Qualifications
- Experience with Embedded Linux build systems such as Yocto or Buildroot.
- Experience with hardware emulation tools such as QEMU and containerization platforms such as Docker.
- Familiarity with GitLab CI workflows.
- Background in embedded software development and/or aerospace systems.
- Experience with distributed build systems such as Bazel remote execution.
- Knowledge of linker internals, symbol visibility, and binary analysis tools such as ldd, nm, objdump, and readelf.
- Familiarity with static and dynamic analysis tooling including Clang-Tidy, AddressSanitizer (ASan), and SonarQube.