Software engineers rarely invoke compilers and lower-level tools directly. Instead they interact with a build system which analyzes dependency information and then orchestrates the overall build process. Yet build systems are often overlooked by industry and academia.