The process of building software follows well defined steps: Source code and other artifacts are compiled and assembled into some sort of deployable artifacts. Primary tools in this spaces are Simple scripts Make IMake Ant Maven Groovy go build cargo build etc. Quality control steps are applied, either manual or automated: Manual Testing Unit Testing (JUnit, NUnit, cargo test, go test, etc.) Integration Testing System Testing User Testing Load and Performance Testing Security Testing Usability Testing etc. The software is delivered. This can take many different forms: Manual installation Automatic patching (Patch Tuesday) Made available in a repository like Maven Central, docker hub, etc. The major evolution in this process has not been the steps, but rather the boundaries between them. When I first started, each and every step of this process was a manual handoff. Now, large numbers of companies have software automatically migr...