My notes from the DevOps Handbook

by Gene Kim, Jez Humble, Patrick Debois, John Willis

Enable and practice continuous integration

The longer the developers are allowed to work in their branches in isolation, the more difficult it becomes to integrate and merge everyone's changes back into trunk. Integrating becomes exponentially more difficult as we increase the number of branches and the number of changes in each branch. Those problems result in a significant amount of rework required. Changes must be manually merged. When merging code is painful, we tend to do it less often, making further merges even worse.

Continuous Integration - merging changes into trunk as part of everyone's daily work.

Without automated testing, continuous integration is the fastest way to get a big pile of junk that never compiles or work correctly.

Small batch development

Significant problems happen when developers merge private long lived branches into trunk resulting in a large batch size of changes.

Branching strategies

When merging is difficult we become less able and motivated to improve and refactor code because it will cause rework for everyone.

When we do not aggressively refactor our codebase it becomes more difficult to make changes and maintain over time, slowing down rate in which we can add new features.