Encouraging and doing effective design and code review an important aspect of building products or solutions. Conducting these reviews greatly improves the cohesiveness among project stakeholders and reduces the risk of the project.
Setting up design and code review at critical points during the product life cycle is important. Selecting the frequency these reviews is important and should avoid the symptoms of over sampling or too late to turn the ship. Typically design reviews can be scheduled at the beginning of a milestone and code reviews at the end of sprint cycles.
Design and code review task can be broadly broken into two tasks:
1. Validating the design against requirements
2. Ensuring the quality of the code
The project requirements and use cases serve as the compass when building a product or solution. It is key that the design review is done in this context. Typically, product manager and QA should play an active role in this task and validate the design and ensure it aligns with the project requirements.
Engineering leads or senior members of the staff who are meticulous about code design and quality should take responsibility of task #2. Code review generally requires a practitioner. For example if I am reviewing Java code I should be conversant about the language, idioms, design patterns.