We use Peer Reviews during coding for a variety of reasons. The three main reasons are:
- Quality Assurance – checking other developers work to make sure everything is done correctly and works as it should.
- Cross Training – the reviewers going over what was done ensures that at least two people have a good understanding of everything that is built and changed. By rotating reviewers for different tasks in the same part of a system many people will be looking at what is built as it is happening.
- Education – the developers and peer reviewers learn from each other during the review process – new tricks or techniques are shared and developed.
Peer Review Checklist
We use a detailed checklist that the Peer Reviews go over. Not every item is always applicable, but noting that it is not applicable in that situation is better than forgetting things that are. Our developers are good, but being smart doesn’t mean you can’t forget to check something. Study’s have shown that having clear checklists and procedures to consistently follow helps prevent critical mistakes. Surgeons are encouraged to run through checklists like this one before and during surgery to prevent a simple oversight that could lead to a terrible result. Coders benefit from the same consistent practices to ensure code quality, security, and reliability.
- Did we use standard classes for formatting where we have them?
- Did we match existing UI patterns (e.g. tables with details)?
- Are the labels and instructions clear, understandable, and jargon free?
- Do status / error messages show up and do they make sense?
- Does the UI work?
- Do you escape all displayed user input in the UI (even hidden inputs and data) and emails using encodeForHTML, encodeForHTMLAttribute, etc.?
- Is all code object oriented? If not, why?
- Are default parameters set? Do they make sense?
- Are variables scoped?
- Are variable names reasonable and matching our standards?
- Are permissions / login checked?
- Are remote functions properly checked for logins and permissions?
- Has the execution speed been checked? Is it fast enough?
- Have any needed database indexes been added?
- Are there any inefficient queries or loops?
- Have you done a global search for any functions that have been altered in any way to ensure that it didn’t break something elsewhere – e.g. changing a cfargument that is used when the function is called somewhere else could cause a query to return too many or wrong results and lead to a data breach
- Are all inputs validated for completeness and format (e.g. valid dates or emails)?
- Are required fields clearly marked and validated for?
- Does the data save correctly?
- Do we store enough meta data (e.g. updater_ID, date_updated, etc.)
- Do we log anything we need to for HIPAA or other use?