Thursday, January 05, 2006

Formal reviews

Sometimes back I wrote about informal code reviews, since that is what we were following as a practice. However I found that the number of bugs in the checked in code was not reducing and the qa team had to work hard to not just validate the product but also to locate defects. We were practicing informal reviews as a way to "speed" up the development cycle. Unfortunately the reverse was actually happening - the code was checked in rapidly but the product languished in the qa stables for longer and also carried the risk of some bugs being discovered after release. As I wrote in one of my previous blogs, it gets more expensive to fix bugs as the code goes further away from you.

However, we recently introduced a formal and detailed process for review of not just the code but the entire design, test cases, documentation guidelines, and the code (peaceful reviews in the solitude of your cabin) with a defined checklist on what all to cover, including using the features of a developer build before checkin. We have had some amazing results...did some rough measurements and found that we trap about 90% of the problems before checkin especially framework plugs missed, silly errors, code connections, basic design flaws, messages etc. This is against trapping about 50% of the problems by the older method of review. On the face of it, the process seems to take longer but actually it outputs better quality code almost right first time reducing the rework thrash. Also such detailed drill down reviews provide benefits like
- Another perspective on the design, code thus bring it closer to extreme programming.
- Helps others to understand the code/design building in the redundancy into the team.

Yes, I know what you guys are thinking...that all the software books talk about formal reviews in which the developer sends code and lets people review it or the code is reviewed by multiple people as an event rather than "by the way", so why werent we doing it earlier...Like anything else, all practices if done in a context, adapted to your specific needs and learnt the hard way :-) bring about better results. Try for yourself, it works.