On the software project I'm working there are 4 teams of 6 people. The project itself is a moderately complex distributed system, but the current user stories are mostly about implementing CRUD operations and such.
My problem is that we are working in pairs non-stop. I think that this brute force approach to pair programming is wasteful since a lot of tasks (simple tasks, bugfixes) do not need two people's combined effort and I never reach flow ever since I'm working here.
My question is about pair programming. When is it appropriate to use it and is it justifiable to do it all the time?
There are some situations which I know from my previous experience like
- pair progrmaming with a new colleague so he gets up to speed quickly
- pair programming with a junior developer so he understands new concepts more quickly and thoroughly
- pair programming to effectively share domain knowledge
but I don't see why pair programming can be useful if used in all possible situations. What makes it even worse is that pairs often rotated mid-sprint which slows down development even more.