Software that doesn’t work is annoying. In fact, I’m starting to think it just may be the biggest stressor of the average worker in our era. No longer do we have to endure biting flies as we work the field, or constant ear-splitting noises in the factory. Nope, today it’s that f-ing application that just crashed in the middle of a project and lost three-hours of work!
Ok, yes. Software developers are amazing. I know we’re all spoiled and blindly take the work developers do for granted. We really should be regularly saying, “Holy moly, I just communicated with someone on the other side of the planet instantly!” or “Do you believe this, I can see my entire bank account history by clicking on this little icon!” But we don’t—we prefer to complain about what doesn’t work instead. Sorry about that.
If bad software is the bane of our existence today, then good code is the poultice.
Fortunately, there are teams of people out there who’ve dedicated their lives to improving software quality. Usually, they are QA testers – those gracious souls who work tirelessly to find bugs in their colleague’s work. However, as much as I love testing, there is one practice that is even more effective at identifying defects in software code. And that is peer code review.
Studies show peer code review is the most effective method for finding defects. One analysis of more than 12,000 software projects said code reviews hit 60% efficiency for defect detection while unit tests were only 25% efficient. For every hour of inspection using peer code review, development teams can save about 20 hours of QA testing. Not bad.
SmartBear recently conducted a study of our own for the 2013 State of Code Review. With more than 650 development professionals answering questions on how they use code review and its impact on their software performance, this extensive study provided some very interesting insights.
For example, over 70% of the respondents in the survey participate in some kind of collaborative review, and those that do code review are twice as likely to be highly satisfied with their overall software quality than those that do not do code review.
Here’s one of the questions we asked on the benefits of code review, and a graph showing their responses.
BENEFITS OF CODE REVIEW
What do you think are the most important benefits of code review?
The greatest benefit of code review is also the most obvious – improving software quality. Which, we all agree, is awesome! But not a surprise. We were more intrigued by the secondary effects. 74% of organizations indicated that knowledge sharing across the team was a top benefit of code review. About half of respondents found that code review also helped with mentoring and increasing collaboration.
In an industry where training can be such a great challenge, code review is an effective means to improve development team’s skillset and keep them up-to-date on the most current best practice. Who knows, maybe they’ll even develop some of their own. The point is that code review as a practice has positive effects on the entire culture of software development teams and their larger organizations. Learning from each other is always a positive thing, and ever since the invention of the written language, humans have been benefiting from the documentation of that learning process. Enter code review tools.
One of the greatest benefits of tool assisted code reviews is the documentation of the process itself—allowing everyone to learn from each comment and correction made.
The other significant advantage is the ability to have code reviewed by developers who don’t happen to be sitting next to you. If you have a development team spread across the globe or a crazy colleague who only works from 1-5am, a code review tool will track any reviews done for authors to view at their convenience.
TL;DR - Use code review to improve your code, increase your collaborative learning process, and while your at it, help save us all from the stress of bad software!
- Announcing CodeReviewer – A Brand New Code Review Tool
- The Low Cost of Innovation
- Fabrice Bellard: Portrait of a Super-Productive Programmer