Code review is very effective when contineous and implicit within the team.
That's why it's not explicit in our Definition of Done.
Here is how it works:
- Tasks are not assigned, team members can decide to either work alone on any task or partner with another developer.
- They communicate trought the whole process and review each other.
- Sometimes they decide to do pair programming which is, IMHO, the best code review process ever.
- Pair programming ensure produced code is not owned by an individual and meet the team's coding guidelines.
With this system, it is very unlikely that a developer will work alone on his module without any external help. This behavior is natural when tasks are not assigned.
It's why it's very important to have your team located at the same place, in the same office or splitted into two 3 desks rooms.