Jeszcze parę lat temu code review było bardziej postrzegane jako pewnego rodzaju ciekawostka czy idealistyczny praktyka programistyczna niż element wnoszący widoczną wartość projektów komercyjnych. Choć termin ten od dawana jest jasny
zarówno dla deweloperów, jak i kadr zarządzających, a większość z nich chwali ideę wzajemnej analizy kodu przez programistów, to praca ta wciąż bywa traktowana jako strata czasu, którą można by poświęcić na realizację kolejnych wymagań.
Wzrost biznesów w branży IT postawił jednak kolejne wyzwania przed projektami. Jak poprawić jakość produktów, redukować ryzyko i koszty projektów, czy też jak skutecznie budować doświadczenie w zespołach. Nie ma oczywiście jednego rozwiązania na postawione problemy, ale istotnym elementem, który może pomóc, jest zbudowanie kultury code review.
Czym jest kultura code review?
Analiza kodu przynosi wymierne efekty tylko wtedy, gdy zespół rozumie jej założenia i korzysta z wypracowanych zasad. Jej nieumiejętne wykorzystanie może przynieś przeciwne skutki do oczekiwanych. Spróbujmy, więc odpowiedzieć na pytanie, czym się kierować i czego unikać, by czerpać korzyści z tego procesu.
Jednym z często powielanych błędów jest powierzenie analizy kodu wyłącznie najbardziej doświadczonemu programiście lub architektowi. Technologie IT rozwijają się w niesamowicie szybkim tempie, a znajomość wszystkich mechanizmów, bibliotek i nowość, nie jest możliwa. W teorii możemy przyjąć, że nawet mniej doświadczony członek zespołu będący na bieżąco z najnowszymi trendami branży, może zaproponować rozwiązanie godne eksperta. Druga sprawa to zdobywanie doświadczenia. Jeśli chcesz robić coś dobrze, to potrzebujesz praktyki. Im szybciej wszyscy członkowie zespołu zaczną brać udział w code review, tym szybciej osiągną oni wysoki poziom oraz będą w stanie przeprowadzić dokładną analizę błędów kodu.
Kolejnym istotnym elementem jest łatwość przeprowadzania analizy kodu. W każdej korporacji dąży się do uproszczania wszelkich procesów. Podobną zasadą należy się kierować w tym przypadku. Nadmiar formalności nie tylko może zniechęcić, ale i wydłużyć czas wdrożenia projektu. W zależności od użytych technologii jest wiele możliwości implementacji procesu code review. Najbardziej powszechnymi metodami jest używanie „pull/merge request”, korzystanie ze wbudowanych mechanizmów środowisk deweloperskich czy też z dedykowanych narzędzia typu Crucible.
Jednym z najtrudniejszych elementów jest wypracowanie i pilnowanie przez zespół jakości komentarzy. Każdy deweloper ma swoje ulubione mechanizmy, sposoby rozwiązywania pewnych problemów, a nawet wielkości odstępów we wcięciach kodu. Dawanie konstruktywnych uwag wymaga korzystania z pewnych zasad stylu kodowania, które są udostępnione przez wielu dostawców środowisk programistycznych, np. Microsoft. Zespół sam też może wypracować takie zasady. Pomoże to ograniczyć sugestie związane z osobistymi preferencjami i skupić się na poprawie czytelności, jakości i wydajności rozwiązania.
Powyższe zasady pomogą wam wdrażać code review lub poprawić jego jakość.

Jakie to wszystko może przynieść korzyści?
Ta prosta czynność, może mieć większe znaczenie, niż na pierwszy rzut oka może się wydawać. Jednym ze znaczących elementów jest wczesne wykrywanie błędów. Statyczna analiza kodu może pokazać potencjalne problemy zarówno czysto techniczne, jak i te w logice biznesowej. Koszt naprawy błędu wykrytego na tym etapie jest najmniej inwazyjny dla procesu dostarczania oprogramowania. Całość dzieje się jeszcze przed wykonaniem budowania paczek, dostarczania ich do testerów, użytkowników i wdrożeń produkcyjnych. Pozwoli to nie tylko zaoszczędzić czas, ale również wzmocnić zaufanie do zespołu. Błędy zostają naprawione jeszcze na etapie programowania i nie wychodzą poza zespół.
Innym znaczącym elementem jest transfer wiedzy pomiędzy członkami zespołu. Code review pozwala bez przechodzenia przez niejednokrotnie długi proces implementacji dowiedzieć się o napotkanych problemach i sposobach ich rozwiązania. Skraca to też czas wdrażania nowych członków do zespołu, gdyż pokazuje sposób rozwiązywania problemów, implementacji nowych wymagań czy stylu kodowania zespołu.

Ostatnim elementem wartym wspomnienia jest czystość kodu i łatwość jego utrzymania. Często programiści specjalizują się w pewnej domenie aplikacji i skupiają się na wybranych elementach projektu. Code review pomaga cały czas widzieć jego całokształt oraz być na bieżąco ze wszystkimi jego modułami i niuansami. W ten sposób w przypadku zmian w zespole, czy też nieoczekiwanych braków kadrowych, cały zespół ma świadomość, w jaki sposób działa produkt. Przez to jesteśmy w stanie zastąpić jednego dewelopera innym i dostarczyć wymagania na czas oraz wysokiej jakości.
Przy wielu benefitach płynących z code review należy jednak pamiętać, że nie jest to panaceum na wszystkie problemy związane z jakością produktu i kodu. Aby zmaksymalizować szanse powodzenia projektu, zredukować jego ryzyko, należy połączyć przeprowadzanie analizy kodu z innymi procesami deweloperskimi, jak i biznesowymi. Przed jego rozpoczęciem należy upewnić się, że nie występują tak proste błędy, jak choćby problem kompilacji projektu lub wykonania testów jednostkowych, a po jej zakończeniu nadal należy przeprowadzić szereg testów manualnych, czy też automatycznych w celu wykrycia nieprawidłowości względem wymagań. Kierując się tymi zasadami, code review będzie nie tylko proste do wdrożenia, ale też pomoże zbudować doświadczone zespoły projektowe i niskim kosztem poprawić jakość produktu.