When I write shitty code, there is nothing to learn any more. I already know it's shitty and would have called it out if someone else wrote it. If that still happens by now, there is nothing that can be done; that's why we have that review process, thank you. Alone you and I will write shitty code and merge it into the trunk. With mutual cross-checking, far less so. That's the main content of the learning.