Natomiast ów człowiek jest mega-oporny na jakiekolwiek uwagi, code-review.
Nikt nie lubi CR, ale jak ktoś może być oporny, to organizacja zespołu/projektu/procesu ma problem. Ustalcie jasne zasady dla wszystkich i regularnie wyciągajcie na światło dzienne ich naruszenia.
Ogólnie zamiast spojrzeć szerzej na to, co modyfikuje i poświęcić trochę czasu żeby zrobić coś bez długu technicznego - kodzi gdzieś na pałę w sumie mając gdzieś kto miał jaki zamysł.
A macie spisane, albo chociaż uzgodnione zasady? Jest jakaś osoba w roli architekta, czy dev leada?
Ostatnio wygląda to tak, że dostaję same bug-tickety po tym jak gość coś rozsypał.
Dopisuje testy, jak je zmieni i wyjdzie bug, to publiczne OPR. CR powinno bardzo wnikliwie przyglądać się zmianom już istniejących testów, bo generalnie to świadczy o tym, że albo ktoś napisał wujowe testy, albo ktoś dał ciała z projektem systemu i trzeba je zmienić, albo ktoś kto dorzucił własny kod leci w kulki.
W review jestem raczej przyzwyczajony do tego, że wszyscy dotąd ludzie biorą to na klatę w ramach różnych skrzywień masochistycznych i dążeń do perfekcji (czasami nawet w trosce o to, nad czym pracują), a jeżeli nie - to przynajmniej mają na to dobry argument.
Jak powinno wyglądać CR to osobna sprawa. Różni ludzie, różne przyzwyczajenia. Trzeba to od czasu do czasu przegadać, żeby nie czepiać się głupot, tylko czytelności kodu, błędów
Natomiast typ potrafi powiedzieć nie bo nie, bo tego nie było w tasku (jeżeli chodzi o jakiś lekki refactor albo sprzątanie po sobie), co pozostawia mnie w sumie bez słów. Klient go lubi, podejrzewam że po prostu bierze bardzo mało kasy więc rozchodzi się po kościach. Dużo by wymieniać, można sobie dopowiedzieć jakieś sytuacje - w sumie wszystko przerobiłem. Już mi się nie chce sprawdzać jego rzeczy.
Jak z tym walczyć, co robić?
Podstawowym sposobem na rozwiązywanie problemów w zespole jest sprawienie, że są one widoczne. Czyli wiadomo jaki jest stan oczekiwany, jakie są rozbieżności ze stanem faktycznym i kto je wprowadził. Część ludzi jest dostatecznie kumatych, żeby zrozumieć i zmienić swoje zachowanie, jak nie pomaga, to przy publicznej rozmowie o problemie wspomina się również kto jest jego przyczyną. Bardzo pomagają w tym narzędzia takie jak statyczna analiza kodu, analiza podatności (Sonarqube), CI (nikt nie może zrobić merge do main line jeżeli jego kod nie przejdzie automatycznych testów, skanów, ręcznego CR). Ważne jest też wskazanie dlaczego mamy takie reguły (bo programiści 90% czasu spędzają na poprawianiu kodu a jedynie 10% na jego pisaniu i warto zainwestować czas w pisanie możliwie bezbłędnego) i danie drogi wyjścia, czyli realnego wpływu na to jak się tworzy aplikację (a przynajmniej prawa do bycia wysłuchanym) i zastanowieniu się nad tym jak pomóc danej osobie w dostosowaniu się, czyli np. pair coding, jakieś wewnątrz zespołowe dyskusje, prezentacje zgodnych rozwiązań. Warto też unikać pyskówek, personalnych wycieczek, ogólnych argumentów "jesteś głupi", tylko skoncentrować się na rozbitych na czynniki pierwsze problemach, sposobach ich rozwiązania i sposobach na uniknięcie w przyszłości.
Przykładowo, ktoś wrzuca metody po 500 linii, albo klasy z wieloma zależnościami, to ustawia się blokującą merge regułę w Sonarqube, git blame dla już istniejącego kodu i rozdzielenie roboty po autorach.