How to improve quality of the product using “code review”Mikalai alimenkouAleksey solntsev
Mikalai AlimenkouJava Technical Lead/Scrum Master at Zoral Labs
6+ years in software development
4+ years of working by Agile methodologies
Expert in Agile engineering practices
Agile coach at XP InjectionAleksey SolntsevProcess Architect at Infopulse Ukraine
Agile volunteer
Certified Scrum Practitioner
Coordinator of translation of the book "Scrum and XP from the Trenches" and “Kanban and Scrum – making the most of both” into Russian
Agile coach at XP InjectionAgendaIntroduction and common principles
WhyCode Review works?
WhyCode Reviewcouldn’t work?
How to find reviewer?
Practices, metrics, tips and tricksWhere is quality better?
Goals of code reviewImprove quality of code
Share knowledge
Improve collective code ownership
Check conformance
Verify completeness
Educate
Reach a consensus
Try other approachesClassificationLess formalMost formal
Common principles: rolesThird personsA reviewerAn author
3main reasons why code review works
Two pair of eyes are better then one
«Teddy bear» effect
Common denominator
reasons why code review couldn’t work3
Interpersonal conflict
“Ego” effect
Too bored procedure
7strategies how to choose a reviewer
1. «Daddy at home»
2. «Help yourself»
3. «Review contract»
4. «Control center»
5. «SWAT»
6. «Everybody dance»
7. «Adulterous relationship»
2ways to drivecode review
1. ATR (Author driver review)Yep, yepI’ve added a couple of new interfaces. There are the implementation.A reviewerAn author
2. RTR (Reviewer driven review)Hmm… I don’t understand what you try to verify using this test.Actually, I’m also a little bit confused …A reviewerAn author
7answers you shouldknow
What should we start with?A reviewer
What to review?Look at code changes/differencesReview whole solutionIdentify methods/functions and classes
How to organize code review?Use changes package (email, patch)Use separate branch in VCSUse distributed VCSCode exchange tools built in IDESpecialized instruments
Specialized instruments
Should we use metrics?
How long?60
Fast or slow?500
Big or small commits?400
How to start?Make common decisionStart slowlySelect only the most problematic modulesInspect and adapt
8tipsand tricks
Before or after check-in?

Code Review