The most important thing I have learned by developing in a quite huge team on the same project over multiple years is that “Too many cooks spoil the broth”.
Situation
– There were no real maintainer of the modules
– The developers worked everywhere in the code
– Code reviews happened without a real system
Pro:
– The workload was getting spread evenly
– Every developer had a cross module knowledge
Con:
– The code was a mess quite quickly and it got worse
– Every developer knew just parts of every module
Solution
– Assign maintainer for the modules (primary / secondary)
– Most changes should come from their maintainer if possible
– If they haven’t done the changes they should review them
Pro:
– The code is quite consistent and not such a mess
– The maintainer know their modules really good
Con:
– The workload isn’t spread evenly all the time
– The developers don’t have a cross module knowledge