Laws of Software Engineering · Practice
Practice
Continuous Integration
Every change is merged to a shared trunk at least daily, with automated verification.
How to use it. The discipline is the daily merge. The build server only supports it. Long-lived branches are the problem CI was invented to solve. If changes take a day to integrate, you are doing scheduled integration with a CI server attached.
How it gets misused. "We have CI" used to mean "we have Jenkins". You need the tool, but it is not enough. Without the daily merge, the tool runs and the practice does not exist.
Related
- Practice Trunk-Based Development Everyone works on a single shared branch. Features ship behind flags until ready. Branches last hours rather than days.
- Principle Continuous Delivery Keep software in a state where it could be released to users at any moment, by anyone, with confidence.
- Practice Test-Driven Development Write the test first. Write only enough code to make it pass. Refactor. Repeat.