Tim Gifford had to pinch hit for David Hussman at the Des Moines Agile Day and he did a great job with his presentation called Competitive Advantage of Continuous Integration. Tim started off talking about Fighter pilot Colonel John Boyd, who claimed he could defeat any pilot from a position of disadvantage in less than forty seconds. The technique used by Colonel Boyd was the OODA Loop which facilitated faster feedback for the pilot. OODA stands for Observation, Orientation, Decision and Action. Boyd would make numerous turns until he was in position of advantage. Completing the loop faster than your opponent makes your opponent incapable to act.
A Brief History of Software Engineering
Tim then chronicled the history of software engineering through the various ages. He started with the “Dark Ages” a time before Continuous Integration. He discussed the Wizards, Champions and Dragons of the time, where we had one developer that could heroically save the day. Then we move into current time or as Tim calls it, the Industrial Age, which has specialization, efficiency and statistical control. Then Tim moves into the future he dubs the Information Age. He pointed to Self-Repairing systems that are in use by some firms such as Netflix. Netflix outlined their many testing strategies called the Chaos Monkey here. He discussed the movement to Anti-fragility and taking fault tolerance to a new level.
Continuous Integration Mindset
Tim started to lay out his case for how Continuous Integration Mindset can be a competitive advantage to any company. This is a big change for Software Engineering that can enable quicker development and pinpointing problems immediately instead days or weeks later when build everything for your first major release. There is a great economic impact to the business by lowering coordination and transaction cost when using Continuous Integration. One of the keys to this is reducing batch sizes.
Tim worked through the layers of Continuous Integration. Individual is on the local developers environment where they are running their tests to limit the red (broken tests). They also are “diff-aware” understanding how edits can impact the team. The Team layer is where the team is ready to continuously demonstrate their work. This is aided by extensive testing that builds the team’s confidence for deployment. Tim spoke about the Culture layer and the words “Failure Tolerant”. This type of approach allows failures to happen and learn from these failures and celebrate the learning. In the Product layer Tim discussed having your product always releasable by using “feature toggles”. Tim emphasized using code branches to reduce integration. The last layer Market uses continuous delivery and usage analytics to track which features resonate with customers.
Tim finishes up with discussing what items help you get to a level of competency with Continuous Integration. He breaks the list down to Good, Better, and Best. Starting with things like source control, automated tests, and build scripts for the Good level and builds on that. One of the last items in the Best list is Bill of Materials Tracebility. He stated that everything that is in the build should be traceable to a request.