We are doing code reviews for more than two years now and our code has substantially improved in this time. What has improved even more is the understanding of more people of various parts of our system. Namely, by sending a code review to a colleague you not only get a feedback about the code but you also inform the colleague about changes you've implemented. Code reviews are not all gold, though. We have identified at least one big shortcoming of code reviews so far which is false sense of security that code reviews give to the submitter. Reviewing coding style, patterns, unittest coverage, and similar stuff is easy. Therefore most of the reviewers concentrate just on these aspects of the code review. But really difficult thing for reviewer is to understand whether the implemented solution is the right one for the given problem. To do so, the reviewer would need a complete understanding of the problem, in-depth knowledge of the system, and a very good grasp of the solution. All these would require quite some investment of reviewer's time and therefore most of the reviewers only concentrate on stylistic and syntactic aspects of code under review while relying on the submitter that the code is semantically correct. The responsibility for providing the right solution for a given problem therefore remains with the submitter and getting "ship it" doesn't change that in any way.