What is code review?
Code review brings other set of eyes to look into the code to determine what are the defects, whether it met the functionality specification or not, whether coding standards met and best design principles and patterns are implemented properly or not.
Wikipedia code review article says code review is often
called as peer code review. But peer code review is more specific.
What is peer code review?
Peer code review is also a code review but done by your
peers.
Code review is crucial in nature for the success of
the software development. But important question is who should do the code
review? Or who should be better if done by one of your peer?
Should code review done by an
architect? Or should it be done by your team/tech lead or review should it be
one of your pear developer or it should it be somebody from outside of the
context of your software development team?
These questions are important
because we need effective code reviews for the successful software
development, not just code review.
Now question is who can do the
review effectively?
Let’s consider role by role. First consider Software Architect:
1. He/she will always looks the
things from distance i.e. birds view. It’s very rare that they are aware of
project's class relationship in terms inheritance, composition.etc
2 .It may be very true that they will be working on many technologies at the same point of time; So in given programming language they will not be aware of any ground details on new features.( e.g., may be Asp.net MVC 4 features, .NET 4.0 features).
3. Other thing is that you need to educate architect on what is the functionality, complete list of code files, demo of the working stuff. These are all time consuming.
4. Not but not the least getting architects time is great difficulty.
So in my view, Architect may not
be person if you want effective code review to reduce defects in the software.
Secondly now consider tech lead case:
Tech lead in the team is actually
responsible for doing code review. But he or she can do that effectively? Let’s
analyze.
Tech lead aware of functionality
what a developer is trying to achieve, tech lead aware of project's class
relationships, coding standards and will keep abreast of project's technology.
So tech lead is good person to do the code review effectively.
Agreed, tech lead is good person to do the review. But is he best to do the effective code review?
Tech leads will keep a good
knowledge on programming language new features. But, in many teams tech lead
will not often code because they will be pulled into many meetings. So if they
don't have time to do the code review, then next question will they peacefully
sit and does the proper code review?
My answer is maybe not. So tech
lead is not the best person to do the code review.
Now consider peer developer doing proper code review.
In my view peer developer is the right person to do the code review.
1. Peer developer is fully aware of the functionality on what team is trying to achieve.
In my view peer developer is the right person to do the code review.
1. Peer developer is fully aware of the functionality on what team is trying to achieve.
2. Peer developer is fully aware
of project's code and coding standards being followed. He will be aware of
programming language new features, etc.
3. Not but the least peer developer can sit calm do the best code review, because they have time. They will get free time because they will not be pulled into many meetings.
4. Other important point to consider is peer developers will eager to
find loop-wholes in fellow developer code.
So peer code review will be very effective for software development.
So peer developer will do the review effectively.
So peer code review will be very effective for software development.
So peer developer will do the review effectively.
But a caveat here is peer developer may not able to think completely in terms of design patterns So if tech lead covers that gap by taking a review on design principles and patterns then it would be complete and effective code review.
Peer developer do code review in terms programming concepts and reducing defects. To complement that tech lead will do the review to ensure best design principle and patterns are followed and they are implemented correctly.
So peer code review is very important in getting effective code
review to build great software product. End of the day software should
speak for itself.
No comments:
Post a Comment