Build Systems Engineer (Bazel)

MatX

$120K — $475K *
Information Technology
Less than 5 years of experience
Job Overview by Ladders

Qualifications

  • 5-7 years of experience with build systems and toolchains.
  • Proficiency in Bazel, Starlark, or equivalent build-system languages.
  • Experience with remote execution environments and cache-key debugging.
  • Familiarity with Rust, Python, shell, and Starlark programming languages.
  • Ability to manage complex dependency graphs and module versions effectively.

Responsibilities

  • Integrate new EDA tools into existing build systems.
  • Migrate Bazel versions and perform necessary housekeeping.
  • Identify and eliminate non-hermetic dependencies.
  • Refactor existing code to improve organization and efficiency.
  • Optimize build performance through persistent workers and cache management.
  • Enhance CI infrastructure with GitHub Actions and relevant components.
  • Collaborate closely with team members for design and implementation.

Benefits

  • Equity options alongside a competitive salary.
  • Comprehensive health benefits including dental and vision coverage.
  • Generous paid time off policy with additional remote work flexibility.
  • Support for parental leave regardless of circumstances.
  • Annual professional development allowance.
  • Team-building activities and regular company updates.
  • 401K plan with a generous company contribution.
  • Remote work support including technology reimbursements and perks.
Full Job Description
What You'll Do Here
  • New EDA tool integrations. Wrap a closed-source tool in a hermetic Bazel rule with proper providers, runfiles, and execution constraints. Add a new front-end stage to an existing toolchain; add a rule for test variants that share configuration; wire a third-party generator into our verilog graph as a first-class dep
  • Bazel version migrations. Lead upgrades (8.x 19.x) and the bzlmod/MODULE.bazel housekeeping that comes with them
  • Hermeticity work. Hunt down the implicit assumptions: system Python, system gcc, leaked /usr/bin deps, host-state in tests. Replace them with hermetic toolchains and tracked inputs
  • Refactors that delete code. Rewrite a fragmented family of test macros in terms of one shared rule. Remove a homegrown wrapper rule once upstream covers the case. Extract a common aspect helper used by three places that duplicated it. The good PRs net negative
  • Build performance. Persistent workers for slow tools, RBE configs, action graph hygiene, cache-key debugging when something silently rebuilds
  • CI infrastructure. GitHub Actions self-hosted runners on GCE COS, Buildbarn workers, monitoring, rolling upgrades
  • PRs are small and frequent. Median is +50/-30. Big refactors arrive as a series of mechanical commits, each individually reviewable
  • Reviews are real. We comment, ask questions, request changes. Reviews are how we share the build system across the team - not rubber-stamping
  • Negative diffs are celebrated. 2emove unused X2 and 2eplace ad-hoc Y with Z2 are first-class contributions
  • You'll teach the rest of the team Bazel. Half the company writes RTL or Rust, not Starlark. Good rules let them stay in their domain. Good docstrings (and stardoc) keep them self-serve
  • You'll work tightly with at least one of us. Most non-trivial changes are pair-designed before code. Fast feedback loops, whiteboard sessions, no async-only collaboration
  • Lean on AI, but stay persnickety. We use Claude Code and similar tools heavily - for prototypes, refactors, scripts, even rule scaffolding. We also reject most of what they produce on the first pass. You'll steer the model hard toward your taste, push back on the easy answer, and review every line you commit as if you wrote it. Auto-generated PRs that pass tests but miss the point are not what we want

Who You Are
  • Deep build-system fluency. Rules, providers (or equivalent), aspects, toolchains, platforms, configuration/select, transitions, query. You can read a build-system file - .bzl, Buck2 BUCK, Shake Rules.hs, whatever - and predict what its action graph will look like. Bazel-native is a plus; we'll trade six weeks of Starlark ramp for the right taste.
    We hire on build-system fluency, not Bazel-keyword-matching. If you've done equivalent work in Buck2, Shake/Hadrian, Pants, Nix, or a homegrown Blaze-shaped system, read the bullets as concepts - Bazel is what you'll write here, but the principles port. Be honest about ramp on Starlark and bzlmod.
  • bzlmod / MODULE.bazel. Module extensions, lockfile management, vendoring third-party deps cleanly
  • Remote execution. RBE, Buck2 RE, BuildBuddy, BuildBarn, your own - they all teach the same lessons. Cache-key debugging, Build without the Bytes, diagnosing 2orks locally, fails remote.2 If you've owned one end-to-end, the next one is a port
  • Comfort in Rust / Python / shell / Starlark. You might read all four in any given week

Bonus Points If You Have
  • Build graph is the source of truth. 2f two things must stay in sync, make one depend on the other.2 Allergic to parallel lists in workflow YAML, Python arrays, and .bzl dicts that drift
  • Don't parse what you can generate. If a tool has the structured data internally, have it write structured output. Parsing human-readable reports is a temporary bridge, not a design
  • Split build from check. A rule that produces artifacts always succeeds; a separate _test target gates on quality. Empty dashboards because the build broke are unacceptable
  • Let Bazel parallelize, not the orchestrator. One bazel build --keep_going over N matrix jobs that each warm up Bazel
  • Encode execution constraints in the rule, not the invocation. No README accumulating per-tool --strategy=..., --remote_download_outputs=..., --sandbox_debug incantations. execution_requirements belongs on the action
  • Compose at the boundary. Dev and prod differ only in where data comes from - share the components, swap the source. No parallel dev-only servers
  • Smart targets over comprehensions. A direct rule call per file beats a list-comprehension factory plus three parallel side dicts
  • Sort keys for determinism. The bytes of an emitted file are a function of semantic content, not iteration order
  • Internal vs external API. Collapsing N files to 1 is a free improvement when you own both ends. It's a breaking change when someone else's scripts source those files by name
  • Migrated a non-trivial codebase between major build-system versions or paradigms - WORKSPACE 1 bzlmod, Buck1 1 Buck2, Make 1 Shake, or similar. Bonus if you led the bzlmod / MODULE.bazel housekeeping
  • Written rules that wrap closed-source tools (EDA, ML, codegen) and made them hermetic and remote-executable - in Bazel, Buck2, Shake, or otherwise. The craft is the hermetic wrapper, not the syntax
  • Owned a remote-execution deployment end-to-end - Bazel RBE, Buck2 RE, BuildBarn, BuildBuddy, in-house - including diagnosing cache poisoning, toolchain drift, or remote-vs-local divergence

Compensation

The US base salary for this full-time position is determined based on a variety of factors including role, experience, location, job related skills, and relevant education and training. Career length is only a guideline for compensation.
  • Early Career - $120,000 - $250,000 + equity
  • Mid Career - $175,000 - $362,500 + equity
  • Senior Career - $250,000 - $475,000 + equity

What We Offer
  • A Stake in our success A cash/equity mix that fits your needs, and option to do early exercise
  • Health & Wellness Company subsidized Health, Dental, Vision, and Life insurance; Pre-tax Health Savings Accounts with generous company contribution (even if you don't)
  • Time To Recharge 4 weeks paid time off (accrued), 12 company holidays, and 3 weeks remote/flexible work per year
  • Support to Parents Up to 12 weeks of paid parental leave, regardless of your path to parenthood
  • Learning & Development $1,500 yearly towards your professional development e.g. conferences, courses, and other learning opportunities
  • Team Connection Team Lunches, quarterly off-sites, and regular town halls
  • Financial Wellbeing 401K and/or Roth IRA, with 5% company contribution, even if you don't!
  • Flexible Spending Accounts Pre-tax spend accounts for medical, dental/vision, dependent care, parking, and transit expenses
  • Commute On Us For those commuting up to 1 hour, put your rideshare cost on our company card and reclaim the drive-time to get work done!
  • MatX E[x]tras $50 per month to use on the perks you care about most
  • Remote Perks We work remotely Monday & Friday, supported by home-tech setup, and remote wifi expense reimbursement


Similar Jobs

More Jobs at MatX

  • System Software Engineer
    $120K — $475K *
    Mountain View, CA 94040 (Santa Clara County)
    Telecommunications & Hardware
    In-Person
  • SOC Intergration Engineer
    $120K — $275K *
    Mountain View, CA 94040 (Santa Clara County)
    Technical Services
    In-Person
  • Mechanical and Thermal Reliability Engineer
    $90K — $130K *
    Mountain View, CA 94040 (Santa Clara County)
    Enterprise Technology
    In-Person
  • Runtime Engineer
    $120K — $475K *
    Mountain View, CA 94040 (Santa Clara County)
    Information Technology
    In-Person
  • Emulation Engineer
    $120K — $500K+*
    Mountain View, CA 94040 (Santa Clara County)
    Telecommunications & Hardware
    In-Person

More Information Technology Jobs

Find similar Build Systems Engineer (Bazel) jobs: