Software Engineer (Build Infrastructure)
About the role
Meet the team:
The Developer Platform team as a part of Software Foundations and Architecture is responsible for building and maintaining the infrastructure that enables all developers to track, build, deploy and operate our software. From the build system everyone uses, to AI and local developer tools, to the tools used to submit and deploy changes, to the cloud infrastructure they use to operate it - we support the entire development experience. The Developer Platform team forges the tools that empower the entire software engineering organization while working with engineers from almost every team.
Every engineer at Glydways builds, tests, and ships through our Bazel monorepo, so its speed and reliability set the pace for the whole company. This role owns that foundation: keeping builds fast, hermetic, and correct across C++, Python, and Go, and scaling them with remote caching and remote build execution.
What Will This Person Be Doing?:
- Rolling out remote build execution and improving remote cache hit rates across CI and developer machines
- Profiling and cutting build and test times in the monorepo, and keeping builds hermetic and reproducible
- Upgrading and maintaining Bazel, rulesets, and external dependencies (Bzlmod)
- Supporting C++ toolchains and cross-compilation for our embedded targets
- Building dashboards and alerts for build health, flaky tests, and CI performance
- General developer workflow and CI work alongside the rest of the team
Roles & Responsibilities:
- Own and evolve our Bazel build system, keeping it fast, reliable, hermetic, and easy to use for every engineer.
- Design and roll out remote caching and remote build execution (RBE), and tune build and test performance across local and CI environments.
- Maintain rules, toolchains, and dependency management for C++, Python, and Go, including cross-compilation for embedded targets.
- Maintain and enhance developer workflows, including build, lint, code coverage, and testing support for C++, Python, and Go languages.
- Collaborate closely with software engineering teams to identify and implement improvements in the continuous integration (CI) system, utilizing AWS and Buildkite.
- Develop, deploy, and support automation tools to streamline common developer workflows, such as change submission, integration testing, and dependency management.
- Design and implement basic monitoring services and dashboards to track build health, cache hit rates, and the performance and stability of internal processes and systems.
- Participate in the team's support and on-call rotation, responding to issues and keeping shared developer infrastructure healthy.
Knowledge, Skills and Abilities:
- Hands-on experience maintaining Bazel (or a comparable system such as Buck or Pants) in a multi-language monorepo: writing rules and macros, configuring toolchains, and debugging build and cache correctness.
- Experience with remote caching and remote execution (for example BuildBuddy, EngFlow, Buildbarn, or NativeLink) is a significant plus.
- Strong knowledge of build systems and other tools in the software development cycle, like: git, linting, GitHub, code review, testing frameworks and deployment frameworks.
- Working knowledge of C++ build toolchains (compilers, linkers, sysroots, cross-compilation).
- Strong knowledge of CI/CD best practices and principles, with bonus points for direct experience with Buildkite.
- Experience developing tools and services in Python or Go.
- Experience with Linux operating systems in both day-to-day development and operational environments.
- Knowledge of AWS or other similar cloud platforms; Terraform experience is a plus.
- Knowledge of on-call support processes, incident management and monitoring tooling.
- Familiarity with front-end web development (for example HTML, CSS, JavaScript, or a modern framework) sufficient to build and maintain simple internal tools and dashboards is a plus.