A team has a CI system but not continuous integration. What is the difference, and what practices constitute the discipline?
Show the full answer Hide the answer
The difference
A CI system runs builds. Continuous integration is a practice: everyone integrates their work into trunk frequently, and the trunk is kept working.
A team with a CI system and week-long feature branches is running automated builds on branches, which is useful and is not continuous integration. The integration — the part that discovers whether independent work is compatible — still happens all at once at merge time.
The practices that constitute the discipline
1. Integrate at least daily. Not "when the feature is done". The point is discovering incompatibility while it is small.
2. Trunk is always releasable. Which requires that incomplete work is merged behind flags, and that every change is backward compatible.
3. A broken build is the highest priority. Fixed or reverted immediately, not "later". A trunk that is routinely broken means everyone's feedback is unreliable, so nobody trusts the pipeline and the discipline collapses.
4. Revert rather than fix forward, by default. Reverting is fast and predictable; forward-fixing under pressure introduces further defects. Forward-fix is the exception, taken deliberately.
5. Nobody goes home on a broken build, or the trunk is broken overnight for everyone in another time zone.
6. Small changes, since large ones cannot be integrated frequently by construction.
7. Flaky tests treated as broken tests — quarantined immediately, fixed or deleted within a window. Tolerated flakiness trains everyone to re-run rather than investigate, which destroys the signal.
The cultural requirement
Breaking the build must be normal and low-drama. If it is treated as a failure of the individual, people batch changes to reduce the chance of being the one who broke it — which reintroduces exactly the behaviour the practice eliminates.
The measure
How long the trunk is red, and how often. A trunk red for hours means the discipline is not being practised, regardless of how sophisticated the CI system is.