We talk about doing pair programming or something in the next release, then we all go back to our respective stacks of work and don’t feel like we have the time to collaborate on anything, unless it’s a question for someone who knows a part of the codebase better.
I know you didn't ask for advice, but perhaps code-review and design-review is actually all your team needs? i.e. instead of the constant collaboration of pair programming, you work on slightly lighter weight interaction by having pairs of people work on closely related projects code-reviewing each other and having times where they bounce ideas off each other, but who ultimately work alone till they produce something the other can see. A half-day boundary of interaction (non-formalized of course) may be sufficient to allow for the degree of collaboration to be fruitful.
This happens and fosters groupthink and prevents critical thinking and creativity.
When a whole team (or company) comes up with a poorly designed product this is often the reason.
You can fight this by talking about the problem, encouraging constructive criticism, engaging with communities and other social groups, gathering anonymous feedback from other teams.