How to Conduct Effective Code Reviews

Good Programming Practices –

How to Conduct Effective Code Reviews


Why Code reviews
For Code quality
l          Tend to improve the overall code structure and there by aid maintainability.
l          Promote refactoring which improves code re-use.
l          Improve the code to handle the corner cases.
l          Improve the test cases and there by improve test coverage.
l          Fix critical and rare defects - most of the multi-threading and concurrent access bugs tend to fall into this category.
For Team, Developers
l          Developers know their code will be evaluated, so they work harder.
l          It creates consistency and a culture of quality across the project.
l          Spread knowledge in team.
l          Improve team members’ skills.
l          Improve team morale.
Code Review Process
Preparation
Take advantage of static code analysis tools - such as Find Bugs, PMD, Google CodePro AnalytiX. It's responsibility of the developer who write the code or fix to take advantage of static code analysis tools to audit his/her code first to check and avoid common mistakes.
These tools will effectively save a lot of time/tedium for the team, so the team can focus on more interesting and challenging tasks.
Agenda & Scope
Before code review, one mediator should be response for collecting meeting agenda and scope and notifying other team members, including the code to be reviewed etc.
The mediator is not necessary to be the team leader; all team members can take turns to host the review meeting.

The scope should include the code being reviewed and it should address if there is any special emphasis - like performance, security etc.
Taking notes to team knowledge database- Lesson Learned and Action items
Code review is an intense activity. Lot of ideas are generated and discussed, new subtle/complicated bug may be discovered.
Code review is also a learning opportunity to improve team skills, to learn from the outcome, to learn from the mistakes we have made. These are valued asset for the team.

So the mediator should be response for taking notes to team knowledge database such team wiki, team blog etc. Anything that is useful and important to the team can be recorded, such as mistakes we made, ways we diagnoses the defect, alternative solution to the problem etc.
He should also be response for capturing important ones as action items and follow up.
Follow up

To gain adequate benefit of the code reviews, the team has to allocate sufficient time or resources to follow up the issues raised by the code review.
How to Conduct Effective Code Reviews
Make code reviews a learning opportunity.
Build the culture of knowledge sharing in your team
Spread knowledge and love.
l          The most important thing to conduct effective code review is to motivate team members to be engaged in code review actively.
l          Good team atmosphere, good relationship between colleagues is the key.
l          Let team members know the benefits of code review, for the team, for improving code quality, and especially for themselves.
Actually read the code.
A good code review always goes beyond the obvious
The coder should create a checklist of the things that the code reviews tend to focus on.
Check the document and comment.
l          If the code is complicated and doesn't explain itself, ensure it is well commented.
Make sure you have good coding standards to reference.
Matters needing attention
Remember to praise.
Ask questions rather than make statements.  
Make sure the discussion stays focused on the code and not the coder.
Remember that there is often more than one way to approach a solution.

What to talk about the code?
To let others know the code easily, we should not only explain the code itself, but also explain why we implement the code this way.

For bug fix, we should explain the root cause of the bug, and convince others the RCA.
If the bug is really hard and subtle, and we made great efforts to find it out, we may also cover how we diagnose it, and how we find out the RCA.

This is not related with code review, but is the way to spread and share knowledge in the team.
This is also a way to show you how hard you work on this defect.

But of course, how much we can talk about the code depends on review meeting schedule.

Resources:
Effective Code Reviews
Effective Code Reviews Without the Pain
Running an Effective Code Review
Tips for Doing Effective Code Reviews
How to Conduct Effective Code Reviews
Post a Comment

Labels

Java (159) Lucene-Solr (112) Interview (61) All (58) J2SE (53) Algorithm (45) Soft Skills (38) Eclipse (33) Code Example (31) Linux (25) JavaScript (23) Spring (22) Windows (22) Web Development (20) Tools (19) Nutch2 (18) Bugs (17) Debug (16) Defects (14) Text Mining (14) J2EE (13) Network (13) Troubleshooting (13) PowerShell (11) Chrome (9) Design (9) How to (9) Learning code (9) Performance (9) Problem Solving (9) UIMA (9) html (9) Http Client (8) Maven (8) Security (8) bat (8) blogger (8) Big Data (7) Continuous Integration (7) Google (7) Guava (7) JSON (7) Shell (7) ANT (6) Coding Skills (6) Database (6) Lesson Learned (6) Programmer Skills (6) Scala (6) Tips (6) css (6) Algorithm Series (5) Cache (5) Dynamic Languages (5) IDE (5) System Design (5) adsense (5) xml (5) AIX (4) Code Quality (4) GAE (4) Git (4) Good Programming Practices (4) Jackson (4) Memory Usage (4) Miscs (4) OpenNLP (4) Project Managment (4) Spark (4) Testing (4) ads (4) regular-expression (4) Android (3) Apache Spark (3) Become a Better You (3) Concurrency (3) Eclipse RCP (3) English (3) Happy Hacking (3) IBM (3) J2SE Knowledge Series (3) JAX-RS (3) Jetty (3) Restful Web Service (3) Script (3) regex (3) seo (3) .Net (2) Android Studio (2) Apache (2) Apache Procrun (2) Architecture (2) Batch (2) Bit Operation (2) Build (2) Building Scalable Web Sites (2) C# (2) C/C++ (2) CSV (2) Career (2) Cassandra (2) Distributed (2) Fiddler (2) Firefox (2) Google Drive (2) Gson (2) How to Interview (2) Html Parser (2) Http (2) Image Tools (2) JQuery (2) Jersey (2) LDAP (2) Life (2) Logging (2) Python (2) Software Issues (2) Storage (2) Text Search (2) xml parser (2) AOP (1) Application Design (1) AspectJ (1) Chrome DevTools (1) Cloud (1) Codility (1) Data Mining (1) Data Structure (1) ExceptionUtils (1) Exif (1) Feature Request (1) FindBugs (1) Greasemonkey (1) HTML5 (1) Httpd (1) I18N (1) IBM Java Thread Dump Analyzer (1) JDK Source Code (1) JDK8 (1) JMX (1) Lazy Developer (1) Mac (1) Machine Learning (1) Mobile (1) My Plan for 2010 (1) Netbeans (1) Notes (1) Operating System (1) Perl (1) Problems (1) Product Architecture (1) Programming Life (1) Quality (1) Redhat (1) Redis (1) Review (1) RxJava (1) Solutions logs (1) Team Management (1) Thread Dump Analyzer (1) Visualization (1) boilerpipe (1) htm (1) ongoing (1) procrun (1) rss (1)

Popular Posts