What could be less flexible than a taboo about something that ever goes wrong? I would say that the taboo is to leave the assembly broken, and not to completely break the assembly. Accidental assembly failure is in order. That is why you perform continuous builds and tests. CI build / test determines when the build is broken, and ideally, who broke it. This ensures that it will be fixed quickly. If this happens sometimes, you're fine. If this happens twenty times a day, the team probably has problems.
Taboo should interfere with other people doing their job. When you break the assembly, they receive an email: "Our source branch is ruined." They will not be able to integrate other people's changes or their changes with the main line until they receive all the clear letter.
The real problem is working in such continuously integrated environments: 1) Team retention is quite small. As a rule, we begin to see problems after about 25 developers have gathered in a team. Everything starts to become fragile. Using branches, components, or a multi-stage CI with threads can help larger teams break up smaller teams.
2) The choice of small units of work. As a rule, there should not be a conflict between checking corrections regularly and not breaking everything. Obligations must be fulfilled with small work changes. The new function may not be available to the user, but if a coherent API change is made that does not break the tests, check back.
3) Fast, accurate assembly. There are many race conditions that a team usually wins more often when the assembly becomes faster. Plus, reproducible builds ensure that the developer on his computer (which she managed to do because it was fast), the developer made a fairly accurate prediction of success at completion.
EricMinick
source share