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

31
Efektywne przeglądy kodu w zespołach agile Tag cloud generated with http://www.wordle.net/ Licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License. Wojciech Seliga Spartez Co-founder Atlassian JIRA Development Team Lead

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]

Page 1: 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

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

Plan to zło Planowanie to dobro

Picture courtesy of HelicoCC BY 2.0

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

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

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 ...

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

Coprzeglądy kodumają wspólnego

z Agile?

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

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

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

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

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

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

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

Dzielenie się dobrymi praktykami inżynierskimi

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

Picture courtesy of Jordan Miller / CC 2.5

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

Photo Courtesy of U.S. Army

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

Picture courtesy of tinyfroglet / CC 3.0

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

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

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

więcej spotkań

rozproszenie uwagi

Kolejny przeszkadzający obowiązek

oderwanie się od pracy

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

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

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

Ryzyko animozji

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

Brak konkretnych mierzalnych efektów

Picture courtesy of aussiegall / CC BY 2.0

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

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

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

Prosty Proces

TODO – Kodowanie – Przegląd – QA – DONE

Limit Kanbanowy jest przydatny

Zakres przeglądurecenzenci

termin zakończenia

Dyskusja:Komentarze, Uwagi,

OdpowiedziPoprawki

KróciutkiePodsumowanie

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

Narzędzia

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

Proste i szybkie przeglądy

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

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

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

]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Picture courtesy of Kevin Dooley / CC BY 2.0

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

Q&A

Picture courtesy of Mykl Roventine / CC BY 2.0

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

Dziękuję za uwagę

Twitter: @[email protected]

Wojciech Seliga