Engineering in the time of COVID-19: Doing more with less

As a result of the impact global pandemic, the majority of organizations both small and large alike have frozen hiring and in some cases been forced to reduce headcount, making it all the more critical to ensure maximal engineering productivity.

In the past we’ve viewed the enhanced developer productivity offered by advanced build tooling such as Bazel as a mere competitive advantage, but now in some cases it is truly a matter of survival as almost every company in every industry has to do more with less.

Doing More With Less

As evidenced in a variety of case studies and talks by members of the Bazel community, for projects & teams of sufficient scale, the correct usage of Bazel or similar tooling in conjunction with value-adding products & services such as those we offer can dramatically reduce the overall spend on CI/CD compute & engineering talent by very large margins. Here’s how:

  • Individual developers local build times are greatly improved by Bazel’s caching mechanism, right out of the box—only the necessary files will be rebuilt on each build & only affected unit tests will be invoked

  • A centralized, shared build artifact cache allows clean, stateless CI workers to avoid a large amount of duplicate work without any worker-level caching

  • The shared cache also enables the reuse of previously built artifacts by all subsequent builds, whether CI builds or builds on developer machines—artifacts are simply fetched from the cache instead of being compiled

  • In some cases, remote execution can enable even further reductions in build times. This is a zero-sum gain in terms of compute costs (less total time at the expense of more CPU cores utilized), but still can enable shorter feedback loops in PR premerge checks etc, thus increasing productivity slightly

Taken together, the above items enable a highly efficient software development environment in which CI/CD costs can be minimized and developer productivity maximized, allowing an organization to ship more product with less budget.

The importance of a performant, scalable, highly-available shared cache cannot be overstated here—it’s truly the backbone of any healthy Bazel deployment. To that end, we’ve launched the world’s fastest remote cache as a fully-managed SaaS, and are accepting beta signups now. If you’re interested, let us know.

Should my organization adopt Bazel?

In order to realize the benefits of adopting an advanced build tool such as Bazel, at least 2 of the following should be true of your team:

  • build/test times are noticeably slow in CI and on developer machines (>10min)

  • Over 100k LoC

  • 20+ engineers

  • Polyglot organization with many languages (and thus many build tools to manage)

  • Monorepo (or monorepo aspirations)

  • Other advanced build requirements (trusted build pipelines, etc)

How do I get started?

Migrating large amounts of code to build with Bazel can be a daunting task, but it is often well worth the investment if many of the above statements are true of your team or project. Here’s some resources to help you get started:

Previous
Previous

Flare.build Gradle Integration - now in alpha

Next
Next

Flare is transitioning out of stealth...