Complex software projects often have equally complex build and deployment procedures. Over time these processes and procedures often become more and more complicated. As more modules and processes are added to the build process, the build tasks may reach a state where they are: poorly understood by their current users, contain inconsistencies across sub-systems, become increasingly fragile, and possibly inefficient in their use of resources.

Build processes requiring frequent human intervention are especially problematic, since besides diverting staff attention from activities that would potentially be more productive, they are difficult to trouble-shoot. Computers are very good at repeating sequences of actions, while humans are optimized for handling variability and tend to introduce it into the system even when its not intended. Builds that require human attention also compete for computational resources during regular working hours, where builds that run unattended can use off-hours resources that may be otherwise unused.