Yeah, when I was running the OS development group, it was clear that as the number of programmers went up, what went out the door went way down. The only way was with as few software engineers as possible and divide the work into packaged and constrained entities. This is where UNIX/Linux model kills MS. A giant hairball is not going to work very well, ever.
I had many a conversation with the original AT&T UNIX team on what they saw as the ideal way to develop complex systems. Sure would be nice if programmers today would learn the lessons of the past — They should dig out some of the old UNIX style guides and follow them.
When I do stuff myself (one programmer) I try to break it down in blocks with as few as practical defined inputs and outputs. Easier to debug a small black box, then move on to the next one. Plus, if you come up with a better way to do the job of a given black box, you just recode it and drop it in, confident you're not breaking 6 other boxes.