Quality is important. If we embrace that ideal it will influence many aspects of how software-centric products are developed, enhanced and maintained. Quality is an attribute of the product delivered to a customer and an output of the process used to deliver the product. Quality affects both customers and the users of a product. Quality can yield high customer satisfaction when it meets or exceeds expectations, or negatively shade a customer’s perception of the teams or organization that created the product when quality is below expectations. Quality can also impact the ability of any development organization to deliver quickly and efficiently. Capers Jones in Applied Software Measurement, Third Edition states, “An enterprise that succeeds in quality control will succeed in optimizing productivity, schedules, and customer satisfaction.” The Scaled Agile Framework (SAFe) has included “build-in quality” as one their four core values, because, without built-in quality, teams will not be able to deliver software with the fastest sustainable lead-time.
Peer reviews are a critical tool to build quality into software before we have to try to test quality in or ask our customers to debug the software for us. Unfortunately, the concept of a peer review is often misunderstood or actively conflated with other forms of reviews and inspections in order to save time. We need a definition.
The TMMi defines peer review as a methodical examination of work products by peers to identify defects and areas where changes are needed. (TMMi Framework Release 1.0)
The CMMI defines peer review as the review of work products performed by peers during the development of work product to identify defects for removal. (CMMI for Development, Third Edition)
Arguably it would be possible to find any number of other similar definitions; however, the core concepts of a composite definition would be:
Talmon Ben-Cnaan, Quality Manager at AMDOCS, suggested an example that meets all criteria. “Code written by developer A and is reviewed by developer B from the same team. Or: A test book prepared by tester A and is presented to the entire team testers.”
Peer reviews are an integral part of many different development frameworks and methods. They can be powerful tools to remove defects before they can impact production and to share knowledge with the team. As with all types of reviews and inspections, peer reviews are part of a class of verification and validation techniques called static techniques. These techniques are considered static because the system or application being built is not yet executed. In peer reviews, people review the work product to find defects, and the “people” involved will have the same or similar organizational status so that goal does not shift from finding defects to hiding defects.