I agree with pretty much everything, except this bit. Pair programming should be used when needed, not as standard practice, as it removes a lot of flexibility an independence. I see engineers struggling to deliver on their own because they're dependent on pair programming. Pair programming is much better suited for complex challenges, or when an engineer needs help.
Code reviews are also something that cannot be done away with as it's a legal requirement. I think it also helps other members of the team get familiar with the rest of the codebase provided the PRs are small enough to actually read and learn from.