InfoShare 2012 efektywne przeglądy kodu w zespołach agile [Polish]

Post on 06-May-2015

652 views 2 download

description

Slajdy z mojej prezentacji (30min) podczas gdańskiego infoShare (konferencja w języku polskim). Jeśli chcesz wiedzieć jak skutecznie wdrożyć przeglądy kodu (code review), które rzeczywiście coś pozytywnego wnoszą do zespołu (zamiast frustracji) oraz jakich niebezpieczeńst unikać - ta prezentacja może Ci się przydać. W dużmy stopniu prezentacja pokrywa się z moim wcześniejszymi wystąpieniami na Agile 2009 w Chicago oraz JDD 2009, choć jest trochę nowych materiałów i przemyśleń. Ta prezentacja jest w odróżnieniu od poprzednich w języku polskim.

Transcript of InfoShare 2012 efektywne przeglądy kodu w zespołach agile [Polish]

Efektywne przeglądy kodu w zespołach agile

Tag cloud generated withhttp://www.wordle.net/Licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.

Wojciech SeligaSpartez Co-founder

Atlassian JIRA Development Team Lead

Plan to zło Planowanie to dobro

Picture courtesy of HelicoCC BY 2.0

Dlaczego przeglądy koduMityPułapkiEfektywnośćQ&A

Uwaga!

Prezentacja zawiera lokowanie :)

Nie jestem obiektywny. Reprezentuję firmy sprzedające

narzędzie do przeglądu kodu.

Z drugiej strony:Stosuję przeglądy kodu codziennie ...

Coprzeglądy kodumają wspólnego

z Agile?

Picture courtesy of Cat and GirlCC A-NC-SA 2.5

Picture courtesy of mil8 / CC BY 2.0

reużywalne komponenty

zasady, praktyki, trikiAPIs

design

styl/konwencje

Wdrażanie nowych ludzi do istniejącego kodu źródłowego

Mentorowanie junior developerów

Bezinwazyjne

Asynchroniczne

W dogodnej chwili

Powodujące mniej frustracji i rozproszania się dla senior developerów

Picture courtesy of eddidit / CC BY 2.0

Dzielenie się dobrymi praktykami inżynierskimi

Picture courtesy of Jordan Miller / CC 2.5

Photo Courtesy of U.S. Army

Picture courtesy of tinyfroglet / CC 3.0

Trudne przygotowanie

wybór kodu

zorganizowanie osób do przeglądu

znalezienie pasującego terminu

rezerwacja sali konferencyjnej

przygotowanie wydruków ...

Picture courtesy of jfdervin / CC BY-SA 2.0

więcej spotkań

rozproszenie uwagi

Kolejny przeszkadzający obowiązek

oderwanie się od pracy

Picture courtesy of gadl / CC BY-SA 2.0

Pożeracz czasu

dużo kodu do czytania wciąż i wciąż

„spanie” na spotkaniach

marnowanie czasu na proste rzeczy:konstrukcje powodujące ostrzeżenia

konwencję kodowanianazewnictwo

pokrycie testami

Ryzyko animozji

Brak konkretnych mierzalnych efektów

Picture courtesy of aussiegall / CC BY 2.0

Efektywne przeglądy kodu

Lekkie – prosty i elastyczny proces

Asynchroniczne

Wspierane przez narzędzia

Różnicowe gdzie tylko możliwe

Przejrzyste i trwałe, dostępne dla każdego

Przyjemne dla developerów – proste, szybkie

Prosty Proces

TODO – Kodowanie – Przegląd – QA – DONE

Limit Kanbanowy jest przydatny

Zakres przeglądurecenzenci

termin zakończenia

Dyskusja:Komentarze, Uwagi,

OdpowiedziPoprawki

KróciutkiePodsumowanie

Narzędzia

Proste i szybkie przeglądy

Im mniejsze przeglądy tym lepiejMałe częściej lepsze niż duże rzadziej

Rozsądna liczba recenzentów

1 2 3 4 5 60

5

10

15

20

25

30

Liczba recenzentów

Cza

s po

świę

cony

[min

]

Rozsądna liczba recenzentów

1 2 3 4 5 6 7 8 90

5

10

15

20

25

30

Liczba recenzentów

Licz

ba z

nale

zion

ych

błęd

ów n

a 1

KLO

C

Szybkie i przyjemne przeglądy kodu

deadline na jutro

niewielu recenzentów

z komentarzami od autora

post-commit zamiast pre-commit

Picture courtesy of Svadilfari / CC BY-ND 2.0

Niektóre zasady zwinnych przeglądów kodu

każdy może dołączyć i recenzować kod

każdy może rozszerzać zakres przeglądu

każdy może dołączać inne osoby

wszystko jest ogólnie-dostępne wewnątrz firmy

chodzi o naukę, a nie o oskarżanie się czy wojny

Picture courtesy of PantoDX / CC BY 2.0

Przeglądy kodu w Agile – niezrozumienie

fanatyczne poszukiwanie błędów

fałszywe przekonanie o braku błędów w sprawdzonym kodzie

śledzenie losu każdego pojedynczego komentarza czy uwagi do kodu

oczekiwanie twardych metryk

Picture courtesy of Juria Yoshikawa / CC BY-SA 2.0

Sztywny proces

Metryki

Micro-management

Zbyt duży narzut

Zespoły jednak ewoluują...

Największe początkowe zagrożenia

Picture courtesy of tms. / CC BY-NC-ND 2.0

Niespodziewane Korzyści

Znaczne ułatwienie przy zespołach rozproszonych geograficznie

Współpraca przy szczegółowym projektowaniu

Łatwiejsze do wdrożenianiż pair-programming

Różnica stref czasowych może być korzystna

Baza WiedzyPicture courtesy of david.nathan.cox / CC BY 2.0

Przeglądy Kodu a Pair Programming

tworzenie

współpraca

asynchroniczne synchroniczny

rozproszone

”represja” ”prewencja”dzielenie się

wiedzą

lepsza jakośćniższa bariera wyższa bariera

trwała

intensywny

weryfikacja

ekstensywne

nietrwała

później teraz

wspólna odpowiedzialność

fizycznie razem

Picture courtesy of Kevin Dooley / CC BY 2.0

Q&A

Picture courtesy of Mykl Roventine / CC BY 2.0

Dziękuję za uwagę

Twitter: @wseligawojciech.seliga@spartez.com

Wojciech Seliga