Step #4 - Start doing code reviews – Seriously
Wednesday, September 9, 2009
Roy Osherove in First Steps during chaos, Shu

As one team lead to another, as someone who has actually done this with a real team, I can tell you that this is one of the few effective techniques to maintain a high quality bar in your code base, and to keep your people learning. It is also one of the best ways to stay in touch with the codebase even though you are a team lead, and have much less time for real coding.

Whatever you do, don’t listen to others or even your own inner voice telling you that it’s a waste of time.

Code reviews are nothing short of a magical process of growing people, code quality and confidence at the same time, and it has changed the way we work at Typemock immensely.

What's a code review?

One developer looking at another developer's source code - thoroughly.

What do you look for in a code review?

What is really the purpose of code reviews?

Who should do the code review?

Everything has to start somewhere - and as a team lead, I expect you to know good code, and to recognize bad code (here's a good book about this subject or even better - a whole bunch)

How and when should you do a code review?

There are two phases to this. The first one is the one where you bring the team up to par with what you consider quality code - You will be the only one doing code reviews - and no code is checked in before passing your code review. seriously. This is serious business and you should stand your ground. I cannot begin to tell you how much good this will do to the team - but you must stand your ground and give this a try.

From now on, every code being checked in has to pass a code review first.

That's right - every check in will be reviewed by you personally.

many times when reviewing you’ll find classes that are not in use anymore, or fully commented out, code that is duplicated and forgotten to be removed and many more “gems”.

 

Train the team to review its own code

I’ve said this previously, but I’ll mention this again:

Your most important role in the team is to act as a coach – to teach them to solve their own problems.

To that effect, it’s important that you not become the bottleneck for the team. The goal here is to make sure every checked in code is being reviews, without the team slowing down to wait for you every time. IN order to achieve that, have a third person sit with you and the review-ee (that’s 3 people on the same machine) and write down a list of what you are looking for in the code. That list will later be used to coach others on code reviews.

Have that third person change between reviews so everyone gets to learn.

The next step

When you’ve code code reviews for say- a week or two, it’s time to let the team start doing its own reviews. 

In the next standup meeting, declare that from now on, everyone can review each other’s code, with your supervision. From now on you will be the third person sitting behind two team members as they review each other’s code. As a team member reviews the code, sit quietly and only speak when they prepare to move on to a different file. If you have something to say, that’s when you can say it:

and so on.

typically, within a couple of days you should feel comfortable with them reviewing each other’s code, and free you up for other things.

 

What did we end up with?

When all is said and done , 2 or 3 weeks later, you should be able to say:

Those are things that you should be very proud to say. These are the hope of any team lead – that their coaching actually makes a difference.

You might still want to reviews code every now and again, and make sure the bar is still set to your standards. If it lowers again, you can repeat the exercise.

You should also have a better understanding of the strengths and weaknesses of each team member in regards to coding, sharing information, pairing and overall attention to detail. These will help you a lot when it comes time to grow people. I’ll touch on this in a future post.

Article originally appeared on Elastic Leadership (http://5whys.com/).
See website for complete article licensing information.