Wskazówki, jak przekonać szefa, że ​​recenzja kodu jest dobrą rzeczą [zamknięte]

20

Załóżmy, że pracujemy w hipotetycznej firmie, która ma kilku programistów, którzy rzadko pracowali razem nad projektami, a Szef nie wierzył, że recenzje kodu są warte czasu i kosztów.

Jakie są różne argumenty, które można przedstawić w tym scenariuszu, które przedstawią zalety przeglądu kodu? Ponadto, jakie są potencjalne argumenty przeciwko przeglądowi kodu tutaj i jak można temu przeciwdziałać?

Kevin D.
źródło

Odpowiedzi:

25

Jeśli musisz usprawiedliwić się tak podstawowymi sprawami, masz większy problem.

Jesteś ekspertem, Twój zespół powinien zdecydować, jakich praktyk używasz. Może powinieneś zacząć przekonywać swojego szefa o tej bardzo ważnej zasadzie.

Twój szef powinien zdecydować, CO robić, a co ważniejsze DLACZEGO to robić. Powinieneś zadbać o JAK zbudować

(nie oznacza to, że nie możesz zasugerować, co i dlaczego oczywiście robisz w swoim towarzystwie). Świetny szef powinien zachęcać swoich pracowników do udziału w strategii przedsiębiorstwa)

Jednak oto, jak przeglądam recenzje kodów równorzędnych:

Ponieważ programowanie jest bardzo intensywną pracą intelektualną, jedna osoba nie może zapewnić, że wszystko jest idealne. Dlatego przegląd kodu zapewnia, że:

  • luki lub błędy zostaną wykryte przed wysłaniem aplikacji
  • ciągła wzajemna edukacja między programistami (prawie za darmo)
  • standard zgodności z kodem dla łatwiejszej konserwacji aplikacji
  • kod odpowiada wymaganiom

Wszyscy czerpią z tego bezpośrednie korzyści:

  • programista, który zwiększa swoją wiedzę i może przekazać swoją wiedzę swoim kolegom z zespołu
  • klient / użytkownik, który ma mniej błędów i mniej wydaje na utrzymanie
  • szef, który ma więcej zadowolonych klientów / użytkowników i wydaje mniej na szkolenia
komar
źródło
1
Można wspomnieć, że wyłapuje średnio 65% defektów i nie tylko, ale wyłapuje wiele z tych, których testy jednostkowe na ogół nie.
Spudd86,
Czy masz link do badania, którym mogę się podzielić, abym mógł z niego korzystać w przyszłości?
2
Ze slajdu 21 prezentacji Grega Wilsona zatytułowanego „Bits of Evidence” twierdzi, że „rygorystyczne kontrole mogą usunąć 60–90% błędów przed rozpoczęciem pierwszego testu. (Fagan 1975)” Ma świetne cytaty. :)
Scott Whitlock,
7

Przegląd kodu może zaznajomić wielu programistów z tym samym kodem. To coś dobrego. Co jeśli oryginalny autor zdecyduje się rzucić lub gorzej, coś mu się stanie. Jeśli przeglądy kodu są przeprowadzane regularnie, inni mogą szybko przejąć kontrolę.

Uczestnicy mogą być w stanie wykryć potencjalne błędy lub problemy z wydajnością podczas przeglądania kodu. Zmniejsza to QA i wysiłek rozwojowy. Może to zrekompensować dodatkowe koszty związane z przeglądami kodu.

Recenzje kodu promują dzielenie się wiedzą. Rówieśnicy mogą powiedzieć lepsze lub alternatywne sposoby robienia rzeczy. Sam wiele się nauczyłem od moich kolegów poprzez przeglądy kodu.

Recenzje kodu pomagają wzmocnić wytyczne dotyczące kodowania, a następnie zespół. Jeśli zespół go nie ma, należy to naprawić. Kod ma być napisany raz i przeczytany wiele razy. Wskazówki dotyczące kodowania są krokiem w kierunku czytelnego kodu. Kod powinien być czytelny dla użytkowników. Czy jest lepszy sposób niż przeglądanie kodu w celu zapewnienia czytelności?

aufather
źródło
4

Wiele świetnych odpowiedzi tutaj. Niektóre rzeczy, które chciałbym dodać:

Gdy musisz wyjaśnić kod komuś innemu, często w trakcie wyjaśniania deweloper może nagle zdać sobie sprawę, że ma błąd. Widziałem to raz po raz, że deweloper zatrzymuje się martwy w swoich śladach i mówi „och, czekaj, to źle”, zanim recenzent zrozumie to wystarczająco dobrze, aby zobaczyć błąd.

Znajomość twojego kodu zostanie sprawdzona przez kogoś innego, daje ci większą motywację do korzystania ze standardów kodowania (ułatwiając konserwację) lub korzystania z mniej „kowbojskich” metod, których nikt poza tobą (a czasem nawet tobą) nigdy nie zrozumie. Nie chcesz się wstydzić, kiedy pokazujesz swój kod komuś innemu, więc lepiej go wykonasz. Z powodu czynnika zakłopotania pozostawia mniej kodu komentowanego: „Nie wiem, dlaczego to działa, ale nie zadzieraj z tym”. w bazie kodu.

Programiści, którzy potrzebują szerszego nadzoru lub szkolenia, są łatwo identyfikowani. Tak samo są niekompetentni. Im szybciej znajdziesz i rozwiążesz problemy z wydajnością, tym lepiej dla całego zespołu i tym wyższa będzie jakość aplikacji. Dobrze jest znaleźć te informacje, zanim weźmiesz nowego faceta, który potrzebuje szkolenia, i przydzieli go do najtrudniejszej, najbardziej krytycznej części twojej aplikacji.

Czasami jest to tylko kwestia skorygowania nieporozumienia, które pozwoli zaoszczędzić popełnienia tego samego błędu w wielu innych miejscach. Na przykład ostatnio przeglądaliśmy niektóre SQL pod kątem złożonych raportów i stwierdziliśmy, że kilku naszych nowych deweloperów miało to samo nieporozumienie co do tego, gdzie znaleźć konkretną informację w bazie danych (wprawdzie miejsce, które wybrali, wydawało się logiczne, co jest kwestią projektu bazy danych też trzeba to naprawić), co miałoby kluczowe znaczenie dla poprawnego napisania wszystkich raportów. Po znalezieniu problemu i naprawieniu go w pierwszych raportach, które napisali, udało się uniknąć tego samego błędu w pozostałych raportach. I coś, co starsi (z czasem pracujący tutaj nie starzejący się) deweloperzy byli tak przyzwyczajeni, że nie sądzili, że trzeba to wyjaśnić.

Juniorzy mogą uczyć się na bardziej zaawansowanym kodzie napisanym przez seniorów (którzy na przykład lepiej rozumieją wychwytywanie błędów i przypadki brzegowe), a seniorzy mogą uczyć się na podstawie nowych technik stosowanych przez juniorów, na które jeszcze nie byli narażeni.

Czasami ludzie pracujący nad różnymi, ale powiązanymi częściami aplikacji, zdają sobie sprawę, że idą w dwóch różnych i wzajemnie się wykluczających kierunkach. Ups, teraz łatwiej to naprawić.

Nie jest tak łatwo wkraść się w wartości zakodowane na stałe, które z czasem będą się zmieniać, aby wszystko zaczęło działać. Zapobiega to wielu przyszłym błędom, takim jak rzeczy, które zmieniają się na początku każdego roku obrotowego.

Czasami utknąłem, jak coś zrobić i nauczyłem się nowej techniki, której właśnie chciałem od kodu recenzującego czyjeś rzeczy.

Jeśli znasz sposób, w jaki myślą inni członkowie zespołu (który przegląd kodu pomoże ci to zrozumieć), łatwiej będzie później rozwiązać problemy, ponieważ zaczniesz od zrozumienia, w jaki sposób Joe podszedłby do tego rodzaju podejścia problem.

HLGEM
źródło
2

Oprócz dzielenia się wiedzą, o której wspominali inni, znajdź przykłady błędów, które zostałyby znalezione podczas przeglądu kodu i zmierzyć, ile czasu zajęło ich naprawienie - obejmuje to czas poświęcony na zbadanie problemu i wydanie poprawionej wersji, a także faktyczny czas naprawienia błędu.

Weź ten koszt, który prawdopodobnie będzie wymagał co najmniej kilku dni, i porównaj go z czasem, który poświęciłbyś na przegląd kodu i działanie na wyniki.

To pokaże szefowi, że recenzje kodu są warte tego kosztu.

ChrisF
źródło
2

Recenzje kodu mogą:

  • Doprowadzić do opracowania biblioteki kodów, którą można udostępniać
  • Zapewnij jednolitą konwencję nazewnictwa dla zmiennych, stałych, tabel bazy danych
  • Pomóż usprawnić procesy
  • Może również prowadzić do przeglądu procesu odkrywania i zbierania wymagań
  • Doprowadzić do opracowania widżetów, które możemy sprzedawać jako dodatki do aplikacji. ( Zbuduj go, gdy otrzymasz zapłatę za każdym razem, gdy go wdrożymy )
  • Prowadzić do nowych produktów

Cons

  • Nie mamy na to czasu

Jeśli to prawda, to dlaczego zawsze wydaje się, że mamy czas zrobić to dwa lub trzy razy dla tego samego klienta, ale nigdy nie mamy wystarczająco dużo czasu, aby zrobić to dobrze za pierwszym razem.

Michael Riley - AKA Gunny
źródło
0

Jeśli potrzebujesz odwołać się do dokumentu, nie będę szukał dalej niż ceniony „Kod ukończony”. Książka opisuje w nim liczbę błędów wykrytych podczas testów jednostkowych w porównaniu z recenzją. To zdumiewające. Testy jednostkowe, jeśli pamięć dobrze mi służy, wychwytują tylko ~ 30% wszystkich błędów, podczas gdy formalne oceny równorzędne wychwytują ~ 70%.

Weź te informacje, pokaż mu w książce i odwołaj się do jego strony finansowej. Przepuszczanie błędów trwa znacznie dłużej i jest znacznie droższe niż wczesne wykrywanie.

pszenica
źródło
0

Co powiesz na uruchomienie wersji demonstracyjnej (tygodniowego projektu typu „myszki miki”) wykonanej równolegle przez dwa zespoły, jeden z wykorzystaniem przeglądu kodu, drugi nie.

Pod koniec tygodnia, oceniając jakość pracy każdego zespołu, jestem całkiem pewien, że recenzenci kodu wypadną lepiej.

Jas
źródło
4 osoby w każdym zespole = 8 osób = 2 miesiące wynagrodzenia. Będzie to wymagało sporo zręcznej perswazji w wielu organizacjach :)
Michael Durrant
0

Podczas prezentacji skup się na większym obrazie.

Wymień zalety (lepszy kod, mniej błędów, mniej ponownych zapisów itp.) I wymień przegląd kodu jako jedną z technik, które byś polecił.

Chciałbym uczynić to częścią większego obrazu kunsztu programistycznego

  • recenzje kodu
  • testy
  • retrospektywy
  • dzielenie się wiedzą
  • Edukacja
  • recenzja książki
  • wykłady w porze lunchu

Przygotuj się do samodzielnego wykonywania wielu zadań związanych z promowaniem tych zasad.
Przede wszystkim nie oczekuje się, że perswazja będzie czymś w rodzaju „jednego spotkania i zrobionego”.
Z czasem powinieneś budować obudowę ze spokojem i konsekwencją. Kiedy najbardziej denerwują Cię błędy, które zostały naprawione za pomocą lepszych technik, często jest to najgorszy czas, aby przedstawić swoją sprawę, ponieważ istnieje większe prawdopodobieństwo, że będziesz zbyt emocjonalny i mniej racjonalny. Może się to wydawać nieco sprzeczne z intuicją, ale tego nauczyłem się przez 30 lat programowania. Oczywiście ymmv.

Michael Durrant
źródło