| If I understand this correctly, it seems like they are only doing CI/CD on the master/main branch. The question is why don't they test the feature branches in the same way as master/main? Assuming all their testing is part of the CI/CD system, it seems like that would provide a valuable signal and enable faster feedback as well. Yes, I suppose there could be capacity constraints around this. But let's hold those aside for a moment.. let assume we have enough computers (IaaS) and testing is full automated. In this case, I think argument for only testing master is to force the developers to integrate with master as soon as (or as frequently as) possible. While I can see the benefit in that, I think there is a cost to developer productivity. If you had perfect change isolation and developers always knew how to implement features as a series of small changes this would work. But IME, this is usually not the case. While you can try to get the developer to change, I don't think this is an easy transformation, especially in a team/org where there's larger diversity in skill set. Even if that might be the right thing to from a "make everyone a better coder standpoint", I'm not sure it's optimal from a "help the people we have ship quickly and better" by letting them test (CI/CD) as soon as possible. The cost of rebasing/syncing with master is also highly variable across codebases. Some codebases has pretty stable interfaces that don't change often and it's very easy to work within those borders. But if those interfaces are changing often, I can also envision tons of mental context killing rebases to keep up. I think there's spectrum of possible outcomes here and the optimal/right choice will vary depending on the circumstances. |
Copied from post.