
My current independent learning project is working my way through Core Bazel: Fast Builds For Busy People, the top-ranked (of 2) Bazel books on Amazon.
Bazel is a build system that Google created under the name “Blaze.” Google open-sourced the tool as “Bazel”, an anagram of “Blaze.” The tool is an alternative to Make, CMake, or Maven.
Bazel’s particular point of emphasis is the “action graph” which maps source inputs to intermediate artifacts and through to outputs. This allows Bazel to reuse components that haven’t been updated since previous builds. Bazel’s graph structure is particularly effective at this type of caching.
Bazel also works well as a remote-execution tool, allowing engineers to build either locally or on remote execution servers.
Combining Bazel’s memoization reliability with its effectiveness at remote execution makes Bazel a good choice for large organizations and distributed teams.
Build tools are rarely covered in software engineering courses and curricula – we only lightly covered them in most of the Udacity courses I taught.
But build tools turn out to be surprisingly important in day-to-day engineering work. Choosing the right build tool can dramatically accelerate a team’s efficiency, and learning to use that tool can make an engineer much faster and happier.