Temat: Code review - wasze opinie
Jarosław Ż.:Mateusz K.:
Szkolenie, coaching bez code-review dają bardzo niewiele.
ja rozumiem "przeglądanie kodu" jako przeglądanie kodu wraz z uwaga co do tego co tam jest.... nie da sie "nieprzegladać kodu" podcza coachingu, warsztatów itp...
traktuje to jako element kontroli jakości :) To, że Tobie code-review jest nie potrzebne to nie znaczy, że to zbędne narzędzie. Masz pewną ograniczoną perspektywę ze względu na rolę w procesie wytwarzania jaką odgrywasz.
Code-review to świetne narzędzie - po prostu nie dla Ciebie.
zgadzam się z Tobą ale tu mamy chyba nieporozumienie polegające na tym, ze
- czy code review to zarządzanie projektem i uczenie ludzi
- czy code review to element kontroli jakości (podobnie jak ktoś po mnie czyta, poprawia listerówki ki i stylistykę)
Jedno i drugie. Mam wrażenie, że nie do końca wiesz co to jest code review. Opiszę prosty case.
Środowisko: Software house, realizujący dedykowane projekty w iteracyjno-przyrostowym modelu, z wykorzystaniem MDD.
Story:
Osoba odpowiedzialna za implementację use-case (np. Team Leader, lub SeniorDeveloper) wyznacza aktywności jakie są niezbędne aby UC został zrealizowany (np. implementacja backendu, implementacja frontendu, realizacja testów). Spływają mu zrealizowane zadania, kod jest kompilowany, wersja systemu z zaimplementowanym UC publikowana na serwerze developerskim. Robione są testy i hotfixy, ostatecznie stoi wersja, która idzie na testing. Sytuacja się powtarza mamy już zrobione kilka UC, część przeszła testy w zespole, część na testingu, część u klienta, część ma już deploy produkcyjny - normalna sytuacja pod tytułem środek projektu.
Mamy pewną hierarchię developerów w danym obszarze. Np. TL <- SD <- JD. Przy odbieraniu aktywności, odbierający (zwykle bardziej doświadczony lub przynajmniej na tym samym poziomie) przegląda kod źródłowy, który powstał w celu zaimplementowania jakiegoś pakietu funkcjonalności (to może być jedynie część UC). Weryfikuje różne sprawy (zależnie od skilla autora kodu, ryzyk związanych z daną funkcjonalnościa i wielu różnych innych czynników):
- złożoność obliczeniową metod
- styl kodowania
- nazewnictwo
- trzymanie się SOLID/GRASP
- jakość testów jednostkowych
i w zależności od tego jakie rzeczy znajdzie:
- chwali developera (Great Job you have improved much - publicznie czy prywatnie to juz bardziej dyskuja z zakresu zarządzania)
- wybiera fragment, który jest szczególnie dobrze napisany i na następnym szkoleniu/coachingu wewnętrznym będzie on omawiany jako good practice; być może trafia do knowdlege-base jako wewnątrzfirmowy ekwiwalent wzorca projektowego
- wskazuje błędy, które w zależności od tego na ile są poważne albo skutkują natychmiastową koniecznością refaktoringu (czyli zmiany implementacji, przy zachowaniu funkcjonalności), albo wpadają na listę zmian do wprowadzenia "w wolnym czasie" - czyli np. wtedy gdy developer czeka na inne zadania aby kontynuować swoje prace
- szczególnie hardcorowe błędy lub takie, które są powtarzane często przez róznych developerów trafiają na listę do omówienia na szkoleniu wewnętrznym/coachingu jako bad practice
Efekty stosowania code-review są bardzo pozytywne i dotyczą wielu obszarów:
- jakości tworzonego produktu
- rozwoju osobistego developerów
- rozowju jakości świadczonych usług przez firmę jako całość
- obniżenia kosztów utrzymania i rozwoju oraz tworzenia nowych aplikacji
Code-review to nie jest code-reading żeby zabic czas na kibelku. W terminologii zarządzania projektami jest to technika wspierania tzw. lessons learned.