Continuous Integration / Continuous Deployment

Continuous Integration / Continuous Deployment (CICD) has become in vogue and that’s a good thing. However, many companies are in a challenging position to implement CICD right away. The first thing to realize is that “integration errors” are not errors in integration, but rather errors in communication between the people building the parts being integrated. That is, during integration they discover that the way they had anticipated putting their code together doesn’t work. It’s not that the code was integrated incorrectly.

Avoiding “integration errors” and the thrashing involved in it can be facilitated by:

  1. Planning across teams that will need to integrate so that they can map out their dependencies
  2. Using mock objects that have well-defined tests so teams dependent upon others have something they can use and the test-suite defining the mocks represents the requirements for the supporting code
  3. Pulling from shared backlogs so integration can take place on a regular, short, cadence

Be able to have efficient releases

When we release should be a business decision. Releasing is often constrained, however, by the cost of adequate testing or the lack of proper environments. The inability to release quickly is a symptom of other issues that need to be dealt with. These agreements must be simple, clear and provide guidance. We have discovered that six are sufficient. We call these “guardrails” because as long as people are following them they can do what they want within their guidance.”