The standard git workflow is inefficient.
Git was developed for open source contributors to the linux kernel. It was meant for distributed teams, working across the world. Most saliently, it was intended for asynchronous development.
It was never intended for developers who could sit down and work together.
Git’s Pull Request (PR) functionality makes developers wait.
Because developers are clever, they anticipate this and make smaller PRs. They think that this will get their changes approved quicker. It will make them more productive.
It has the opposite effect.
When everybody is making small changes, if thy work asynchronously, they spend /more/ time waiting. If you want me to approve a PR, I can finish the PR I’m working on, switch contexts, and then approve your PR.
When everyone works like this, smaller PRs take /longer/ to approve.
This is just because of the time you’ll spend waiting for approval. Paradoxically, when a PR gets too large, nobody bothers reading it. They just approved the whole damn thing.
And slowly the quality of your code base degrades.
Want to avoid this situation? Pair program instead.
That way, developers don’t wait to approve. They approve right away. The PRs can be small. As small as a single unit test.
Instead of working on half as much stuff, pair programming makes developers productive.