Jakie są typowe procesy sprawdzania kodu i co jest uważane za złe?


16

Moja firma niedawno zaczęła przeprowadzać sformalizowane przeglądy kodu. Proces przebiega w następujący sposób: prześlesz do github, poprosisz o żądanie ściągnięcia, kod zostanie sprawdzony przez około trzy osoby, a jeśli wszystko przejdzie, twój kod wejdzie.

Proces wydaje się być sprawiedliwy, jednak trzy osoby, które dokonują recenzji kodu, nie wydają się uczciwe. Zauważam, że kiedy poddaję kod do sprawdzenia, dostaję od 100 do 200 komentarzy. Najwyższy numer dla mnie to 300 komentarzy raz. Oczywiście można by pomyśleć, że to duże zmiany, ale mogą to być również bardzo małe zmiany z mniej niż 50 liniami kodu (w tym testy jednostkowe). Wszystkie komentarze są uważane za „konieczne” i bez argumentów.

Mając to na uwadze, moim głównym problemem tutaj jest to, że wydaje się nieco przesadne. Rozmawiałem z grupą i powiedzieli mi w zasadzie, że to, że miałem tyle lat rozwoju w php, nie oznacza, że ​​jestem „programistą”. Oczywiście wydaje się to bardziej bolesne niż nie. Zauważam również, że w grupie nie wydają się tak dużo komentarzy i przez większość czasu ignorują lub w inny sposób ignorują inne komentarze lub sugestie, rzadko akceptują to jako ważny punkt, nawet jeśli coś jest zepsute.

Więc moje pytanie brzmi, czy to jest sprawiedliwe? Czy często?


3
Jakie masz komentarze? Wydaje się, że bardzo. Czy formatuje komentarze? Kodowanie? Trudno jest odpowiedzieć, nie wiedząc więcej o naturze komentarzy (a może dokładnie to, co w twoim kodzie wywołało komentarze).
MetalMikester,

1
Hej - nie jestem pewien, czy jest to właściwy termin, ale jest to głównie ogólne „najlepsze praktyki” komentarze, takie jak zmiana nazw zmiennych, przenoszenie funkcji, zmiana nazw funkcji w górę 3-5 razy itd. Zainstalowaliśmy phpcs, więc formatowanie jest prawidłowe.
user1207047,

Zapomniałem też wspomnieć o tym bilecie, w rzeczywistości jestem deweloperem poziomu 3 w tej firmie. Mam certyfikat php i od 8 lat świetnie sobie radzę. Dopiero niedawno zaczęło się to dziać. Mam na myśli, że chciałbyś myśleć, że po 8 latach będziesz wiedział coś dobrze?
user1207047,

1
„Mam na myśli, że ktoś chciałby myśleć, że po 8 latach będziesz wiedział coś dobrze?” - Cóż, byłbyś zaskoczony ... Rzeczy, które czasem widzę w pracy ...
MetalMikester

Odpowiedzi:


15

Wszystkie komentarze są uważane za „konieczne” i bez argumentów.

IMHO to prawdziwy problem, ponieważ nie ma w tym priorytetów. Gdy dojdziesz 100-300 komentarze, nie muszą być niektóre z nich ma pierwszeństwo A (Real bugów), niektóre z nich prio B (może prowadzić do błędów późniejszych), a niektóre z nich prio C (wszystko). Powiedz kolegom, że chcesz uszanować wszystkie ich życzenia, ale wprowadzić zmiany w życie, a twój czas jest ograniczony, nalegaj na ustalenie priorytetów. Następnie zacznij od ustalenia komentarza na temat prio A, a jeśli naprawdę będziesz miał na to więcej czasu, możesz zacząć od B (jeśli masz szczęście, twój szef zrozumie, że ustalenie prio B i C nie jest tak ważne i da ci kilka ważniejszych zadań zamiast marnowania czasu).


Wiele razy próbowałem prosić o pierwszeństwo komentarzy. Dostaję coś takiego jak „miło mieć” i „wymagane”. Okazuje się, że zdecydowana większość z nich jest „wymagana”.
user1207047,

2
Widziałem, jak to się dzieje, gdy konkretny programista otrzymuje wiele akcji z recenzji, aby zapobiec zepsuciu kodu w innych obszarach programu. Byłoby to jednak dla wyjątkowo słabego programisty, który jest „zmuszony” do projektu, a lider nie może się go pozbyć z powodu decyzji zarządczych.
Dunk

2
Wiesz @Dunk, myślę, że tu jesteś. Twój komentarz naprawdę trafił do domu i zaakceptowałem tę odpowiedź, ponieważ nie sądzę, żebym mógł zaakceptować komentarz. Jestem „outsiderem” tej grupy i zdaję sobie teraz sprawę, dlaczego wewnętrzny krąg robi coraz lepsze i szybsze recenzje, a ci z zewnątrz nie. Zostałem „zmuszony” do tego zespołu przez kierownictwo, tak i jesteśmy „zmuszeni” do współpracy. Brzmi to bardzo rozsądnie i logicznie wyjaśnia, dlaczego jest ostrzejsze. To lub ja naprawdę śmierdzę kodowaniem. Jedynym sposobem, aby to ustalić, jest udanie się do innej grupy / firmy i przekonanie się sam.
user1207047,

4
@ user1207047: Nie powinieneś akceptować odpowiedzi, ponieważ podoba ci się jeden z poniższych komentarzy, ponieważ jest on niezgodny ze standardami i celem witryny (myślę, że wyczuwam tutaj wzór). W tym celu dostępna jest funkcja komentowania.
webbiedave

10

Przeglądy kodu mogą być procesem dzielącym.

Jesteś jednak na ważnym skrzyżowaniu. Dokonaj przemyślanej analizy ich recenzji. Czy identyfikują problemy związane z wybieraniem nitów, czy podkreślają poważne wady stylu i logiki?

Jeśli jest to pierwsze, zalecam pracę nad rozwiązaniem (nowe zadanie lub nowe procesy sprawdzania kodu).

Jeśli to drugie, zalecam dużo czytania i studiowania kodu, aby spróbować poprawić swój kod do profesjonalnej jakości.


Hej, dobre myśli. Z tego, co mogę zebrać, niektóre z nich są rzeczywiście przemyślaną analizą, ale większość z nich wydaje się wybierać nitki, takie jak funkcje przenoszenia lub zmiany nazw. Problem polega na tym, że kiedy wyjaśniają swój proces myślowy, ma to sens, ale między sobą nie robią tego samego i popełniają te same błędy, co ja.
user1207047,

Co więcej, przegląd kodu jest tak głęboki, że zapominam o tym, co robiłem, i tworzyłem więcej błędów naprawiających aplikację z powodu nadmiernej setki komentarzy. Na przykład, pewnego razu kazano mi przepisać dużą część kodu. Wcześniej kod był poprawny i funkcjonalny. Po przejrzeniu kodu i prawie 150 komentarzach, oryginalna funkcja i poprawność zniknęły, a mnóstwo błędów zostało wstawionych. Kiedy zdałem sobie z tego sprawę i naprawiłem, powiedziano mi zasadniczo: „Tak, nasz proces sprawdzania kodu czyni cię niesamowitym programistą, ponieważ teraz cofasz się i naprawiasz i łatwiej to zrobić”.
user1207047,

8
@ użytkownik: nazywanie metod / funkcji jest ważne, niekoniecznie wybieranie nitów. Jeśli źle się nazywasz, może to być denerwujące dla twojego zespołu. Jeśli nie możesz wymyślić jasnej nazwy, prawdopodobnie nie jest to dobra funkcja. Wydaje się, że jesteś „nowym” facetem, a pozostali najwyraźniej mają metodę na swoje szaleństwo, o której zapewne rozmawiali wiele razy wcześniej. Dlatego przyczyną jest mniej komentarzy. Sugeruję, abyś dowiedział się, czego chcą i postarał się dostosować, a nie tyłki. Zdobądź trochę szacunku, a wtedy będziesz w stanie zaoferować alternatywne pomysły, które spotkasz z otwartym umysłem.
Dunk

1
@ użytkownik: Wygląda na to, że potrzebujesz standardów kodowania / projektowania.
Dunk

2
@ użytkownik: Wszystko, co możesz zrobić, to spróbować pracować w systemie i pokazać, że jesteś graczem zespołowym. Jeśli to zrobiłeś. wtedy albo twoja percepcja jest nieprawidłowa, masz do czynienia z irracjonalnymi ludźmi, oni postrzegają twoje podejście jako kontrowersyjne LUB to po prostu paskudna polityka biurowa. Jedynymi, nad którymi masz kontrolę, są twoje nastawienie / postrzeganie. Jeśli jesteś przekonany, że w jakiś sposób nie inicjujesz problemu, nie wiem, dlaczego miałbyś zostać. Znajdź miejsce, w którym praca jest przyjemna, ponieważ ludzie się dogadują. Jeśli te same problemy występują gdzie indziej, spójrz w lustro.
Dunk

5

Z twoich komentarzy wynika, że ​​twoi koledzy używają procesu przeglądu kodu do uzgodnienia metodologii lub dopracowania kodu. Właśnie zacząłem robić recenzje kodu, takie jak Ty, i zauważam, że czasami dyskutujemy dużo o rzeczach, które są tylko podejściami do implementacji lub ulepszeniami. Nie jest to wcale takie złe, o ile jest to uzasadnione (300 komentarzy wygląda dla mnie zbyt wiele, co musi wyglądać jak wątek reddit)

Być może musisz uzgodnić pewne decyzje architektoniczne dotyczące kodu, zanim zaczniesz go implementować, a może po prostu zgadzasz się co do konwencji nazewnictwa, wzorców i dobrych praktyk, aby wszyscy wiedzieli, co to jest uważane za „dobry kod”.

Jeśli przestrzegasz standardów kodu, jak mówisz, a kod działa zgodnie z przeznaczeniem, nie powinno być tak wielu komentarzy, więc albo używają Twojego kodu jako forum, albo trollują cię, jak się wydaje, że wskazujesz.

Starałbym się krytykować siebie, brać udział w rozmowach i widzieć przyczynę wszystkich tych komentarzy, a może rozmawiać z nimi w konstruktywny sposób, aby zobaczyć, dlaczego są tak niezadowoleni z twojego kodu i jeśli możesz kodu w sposób, który sprawia, że ​​wszyscy są szczęśliwi, a praca nie utknie w przeglądzie kodu.

Właśnie czytam twoje ostatnie komentarze, czasami, gdy nie zgadzasz się z kodem, możesz go przejrzeć sto razy i zaproponować zmiany wszędzie, które Cię nie uszczęśliwią, bo prawdziwy powód, dla którego podjąłbyś inną decyzję architektoniczną i po prostu nie podoba ci się ten kod, bez względu na to, ile razy go refaktoryzujesz. Jak mówię powyżej, być może musisz wcześniej uzgodnić podejście do kodu, więc pisząc go, wiesz, czego się od niego oczekuje, a zatem twój kod byłby dla nich bardziej rozsądny.


1
100% zgadza się z ostatnim akapitem: przed wdrożeniem należy omówić planowany projekt. Przynajmniej zaczynasz od rzekomo akceptowalnego frameworka. Następnie po wdrożeniu może być warto spróbować jeszcze raz omówić ostateczny projekt (nie kod). Następnie zmodyfikuj kod, aby pasował do wyniku końcowej dyskusji na temat projektu. Jeśli po kilku próbach nie poprawi to sytuacji, powinno to oznaczać, że pozycja jest po prostu źle dopasowana i powinieneś zacząć szukać gdzie indziej.
Dunk

4

Z tego, co mówisz, wydaje mi się, że mogą mieć uprzedzenia wobec programistów php, a zatem próbują znaleźć każdą rzecz, która jest zła w twoim kodzie, aby udowodnić ich rację .¹

Jeśli chodzi o samą recenzję kodu, uważam, jak już powiedziałeś, że tak ogromna liczba drobnych komentarzy jest mniej pomocna niż kilka dobrych i uzasadnionych uwag. I chociaż mam ograniczone doświadczenie w zakresie recenzji kodu, następująca technika sprawdziła się w zespołach, w których pracowałam w przeszłości.

  • Przede wszystkim należy użyć statycznego analizatora kodu, aby zidentyfikować większość problemów przed przeglądem kodu. Np .: uruchomienie kodu za pomocą Sonaru, Linta lub innego dobrego analizatora kodu powinno pomóc ci pozbyć się większości drobnych problemów. Zwłaszcza, że ​​twoi recenzenci mogą definiować profile niestandardowe, aby zapewnić wszystko, od umieszczania nawiasów, białych znaków, komentarzy, prawidłowego nazewnictwa zmiennych i wiele więcej ...
  • Po drugie, wydaje mi się, że dobrze działa, jeśli podzielisz komentarze na różne kategorie. Na przykład dwie kategorie, w których jedna grupa zawiera małe rzeczy, które należy wziąć pod uwagę i zastosować w przyszłości. I druga grupa dla tych komentarzy, które wymagają natychmiastowej modyfikacji kodu, która wymagałaby kolejnego zatwierdzenia i późniejszej recenzji. Oczywiście liczba komentarzy w drugiej grupie powinna być mniejsza.

Co więcej, muszę powiedzieć, że moje pierwsze prawdziwe recenzje kodu zawierały także więcej komentarzy, niż początkowo się spodziewałem. Jednak nigdy nie uważałem tego za coś złego. Jeśli nadal uczysz się na podstawie ich komentarzy² i chcesz zastosować te nowo wyuczone techniki / najlepsze praktyki w swoich przyszłych kodach, komentarze powinny być mniejsze. Z pewnością tak było w moim przypadku ;-)

¹ Z mojego doświadczenia wynika, że ​​zdarza się to często, ponieważ wielu programistów twierdzi, że php jest najbardziej złym językiem programowania, z którego korzystają najbardziej niedoświadczeni programiści. Oddalam się od tego stwierdzenia, ponieważ wierzę, że świetne oprogramowanie można napisać w dowolnym języku!

² Zakładając, że choć komentarze są przesadzone, zawiera się w nich pewna wartość


Z całego serca zgadzam się z tym, co powiedziałeś. To doświadczenie edukacyjne i należy się uczyć. Trwa to jednak wystarczająco długo, aż wydaje się, że tak nie jest. Albo robię się głupszy, albo dzieje się coś innego. Podejrzewam, że jeśli każde żądanie ściągnięcia generuje setki komentarzy, to cały czas bardzo się mylisz lub w grę wchodzi coś innego, co nie pokrywa się z tym, co twierdzą, że próbują zrobić. Albo powiedzą: „Dobrze, przestańmy się uczyć” albo przejdźmy do sedna. Przynajmniej tak to widzę.
user1207047,

1
@ user1207047 Po przeczytaniu twoich odpowiedzi na inne odpowiedzi, wydaje mi się, że znasz już odpowiedź na swoje własne pytanie .. :-) Wydaje się całkiem jasne, że coś jest podejrzane w twoich recenzjach kodu. Może czas porozmawiać z przełożonym lub poprosić o przeniesienie do innego zespołu?
Jérôme,

3

Czy ktoś rutynowo otrzymuje ponad 100 komentarzy w recenzjach kodu? Powiedziałbym, że nie. Czy zdarza się, że ludzie, których jakość kodu „pozostawia wiele do życzenia”, otrzymują absolutnie dużo komentarzy.

Zależy to jednak również od „reguł” procesu przeglądu kodu. KAŻDY ma własne pomysły na to, jak coś należy zrobić. Jeśli proces sprawdzania kodu pozwala na komentarze w postaci „Powinieneś to zrobić w ten sposób zamiast w ten sposób”, prawdopodobnie dostaniesz DUŻO komentarzy nawet dla odpowiedniego kodu. Jeśli proces ma na celu wykrycie „wad”, liczba komentarzy powinna być znacznie mniejsza.

Z mojego doświadczenia wynika, że ​​recenzje, które pozwalają na „sugestie” dotyczące alternatywnych metod, są marnowaniem czasu. Te „sugestie” powinny być obsługiwane osobno poza procesem przeglądu. Recenzje defektów są bardziej przydatne, ponieważ pozwalają ludziom skupić się na błędach zamiast „dlaczego nie zrobiłeś tego tak, jakbym to zrobił?”. Jest to również bardziej przydatne, ponieważ nie można odmówić błędu, jeśli ktoś go znajdzie. Zatem nie ma zranionych uczuć, ale raczej wdzięczność.

AKTUALIZACJA: Mimo wszystko, niektóre kody są po prostu złe, nawet jeśli nie zawierają wad. W takim przypadku komentarz do recenzji powinien być pojedynczym komentarzem, który mówi coś w rodzaju. „Ten kod musi zostać wyczyszczony. Odłóż recenzję do czasu omówienia kodu z [twoje imię tutaj].” W takim przypadku dalszy przegląd kodu powinien zostać zatrzymany do momentu skorygowania komentarza.

AKTUALIZACJA2: @ Użytkownik: Czy omawiasz swój kod / projekt z jednym z nich podczas jego opracowywania, abyś mógł zaimplementować to, czego szukają, zanim zajdziesz daleko na swój sposób? Zmieniasz coś w tym, jak rozwijasz kod na podstawie ich sugestii, czy nadal myślisz, że po swojemu jest dobrze? Czy uczysz się czegoś na podstawie ich komentarzy?

Kiedy jestem liderem projektu, odpowiadam za WSZYSTKIE produkty pracy. Jeśli zatwierdzę produkt roboczy, twierdzę, że produkt jest akceptowalny. Chcę mieć reputację w budowaniu produktów wysokiej jakości. Tak więc mam oczekiwania i nie zaakceptuję mniej niż zadowalające. Jednocześnie staram się uczyć i wyjaśniać powody moich preferencji. Te preferencje nie zawsze są idealne (szczególnie w oczach innych), ale większość z nich pochodzi z doświadczenia. Zwykle reakcja, aby uniknąć powtórzenia złych. W związku z tym istnieje kilka moich osobistych „sticklerów”, które są niezbędne, aby uzyskać moją zgodę, niezależnie od odpowiedzi.

Z drugiej strony musisz poznać oczekiwania niezbędne do zatwierdzenia produktów do pracy. Możesz się nie zgodzić, ale ponieważ wydaje się, że nie masz uprawnień do nadrzędnego rządzenia, dowiedz się, czego się spodziewać. Wątpię, aby zespół próbował sprawić, byś poniósł klęskę. To sprawia, że ​​również źle wyglądają. W związku z tym po prostu pokaż, że chcesz się uczyć (nawet jeśli nie jesteś), weź to, co mówią, i postaraj się dostosować do ich preferencji, a zapewne ich nie wycofasz. Może znajdź ten, który możesz przynajmniej tolerować i sprawdź, czy zrobią to z ręką na rękę, by nauczyć cię swoich sposobów. Kto wie, w trakcie tego procesu możesz nauczyć się czegoś, co naprawdę może przenieść twoje umiejętności na wyższy poziom.


Zgodziłem się i na tej podstawie nie usłyszycie ode mnie żadnych argumentów. Jednak proces nie jest taki. Mówią, że tak, i w większości przypadków wydaje się, że tylko ludzie spoza tych trzech grup są pod większą kontrolą niż oni sami. Twierdzą, że inni są złymi programistami, ale są jedynymi „programistami” w zespole.
user1207047,

Jedną rzeczą jest jednak to, że jeśli nie rozumiesz kodu lub programista wymyślił koło zamiast używać istniejącej metody lub jeśli jego metoda ma cykliczną złożoność wynoszącą 50, to z pewnością jest to przypadek komentarza, nawet jeśli nie ma błędu. Trudno odczytać kod i powielanie jest zobowiązaniem, nawet jeśli nie jest to błąd. Dlatego nigdy nie waham się wskazać, że zmienna jest źle nazwana lub że rozwiązanie wprowadza sprzężenie czasowe, które utrudnia zrozumienie kodu. Dług techniczny musi być zarządzany.
Laurent Bourgault-Roy,

1
@Laurent: Wiem, co mówisz i na wiele sposobów się zgadzam. Jednak to otwiera puszkę robaków, które mają tendencję do śnieżki. Jeśli Twoja firma ma fundusze i harmonogram, aby umożliwić przegląd kodu, aby podjąć znaczną część wysiłku, to jest w porządku (jak projekty sprzętu medycznego / samolotów). Ale większość projektów nie ma luksusu. Dlatego bardzo pomocne jest ograniczenie zakresu komentarzy do recenzji. Aby zrównoważyć twoje obawy, zadaniem SW jest nadzorowanie programistów i ich pracy. Powinni wiedzieć, kogo najbardziej uważnie monitorować i jak naprawić problemy przed przeglądaniem kodu.
Dunk

Będziemy musieli się tu zgodzić :). Dług techniczny jest czymś, co będziesz musiał wcześniej lub później spłacić (a im więcej czekasz, tym więcej płacisz odsetek). Nie zaoszczędzisz ani grosza opóźniającego sprzątanie. Jeśli nie poświęcisz teraz czasu na oczyszczenie go, następna zmiana może kosztować podwójną ilość czasu, ponieważ trudno będzie ci zrozumieć kod. Pracuję z 8-letnią bazą kodu, a rozwój został spowolniony ze względu na problemy z jakością. Mamy teraz oficjalną zasadę „jakości wewnętrznej nie można negować”. Mogę zaświadczyć, że to nas uratowało!
Laurent Bourgault-Roy,

Ponownie przeczytam twój komentarz i zdaję sobie sprawę, że może mamy inne spojrzenie z powodu naszej metodologii. Pracuję w zespole Agile, w którym nie ma żadnych szans. Ponieważ wszyscy jesteśmy równi i wszyscy jesteśmy odpowiedzialni za jakość kodu, wszyscy musimy się monitorować. A przegląd kodu odbywa się co 3-4 godziny przed każdą integracją. Więc wyczyszczenie dużej prośby o ściągnięcie zajmuje kilka godzin, jeśli jesteśmy bardzo nazistowscy lub zrobiliśmy refaktor, który wpłynął na starą i kruchą część oprogramowania. Dlatego widzę komentarz dotyczący jakości kodu jako „bez biggy”.
Laurent Bourgault-Roy,

2

Kilka ważnych różnic w procesie inspekcji naszego zespołu:

  • podstawą inspekcji jest lista kontrolna opracowana przez cały zespół.
  • Koncentracja to wady (teraźniejszość i przyszłość), a nie styl ze względu na styl.
  • Trzej inspektorzy (w tym autor) siedzą razem, aby przejrzeć komentarze. Pozostają tylko komentarze z większością głosów.

2

Dla 50 LOC 300 komentarzy wydaje się nieco przesadzonych i - wow - 3 recenzentów na każde żądanie ściągnięcia? Twoja firma musi mieć dużo zasobów.

Z mojego doświadczenia w zakresie przydatnego procesu sprawdzania kodu muszą istnieć pewne zasady i / lub wytyczne:

  • Priorytet komentarzy
  • Klasyfikacja komentarzy (błąd, styl kodu itp.)
  • Uzgodniona architektura / projekt do naśladowania
  • Uzgodniony styl kodu

Jeśli recenzenci nie otrzymają pierwszeństwa, poproś odpowiedzialnego kierownika projektu / kierownika zespołu; osoba odpowiedzialna za koszty powinna mieć opinię na temat priorytetów.

Jeśli masz zdefiniowaną architekturę, powszechne zrozumienie, jakich wzorców projektowych używasz w projekcie i uzgodnionego stylu kodu, komentarze w recenzjach powinny dotyczyć tylko „rzeczywistych problemów”, takich jak kwestie bezpieczeństwa, niezamierzone błędy, przypadki narożne nie ujęte w określonym architektura itp.

Jeśli Twój zespół programistów nie zgodził się na „problemy smakowe” (np. Czy zmienna członkowska powinna zaczynać się od „m_”), to każdy recenzent zmusi cię do przestrzegania jego stylu, co jest po prostu stratą czasu / pieniędzy.


1

To naprawdę brzmi jak problem z komunikacją. Oczekujesz, że Twój kod nie jest wystarczająco zły, aby zasłużyć na 300 komentarzy. Recenzenci wydają się sądzić, że potrzebujesz dużo informacji zwrotnych. Asynchroniczne kłótnie w przód i w tył marnują dużo czasu. Do licha, pisanie 300 komentarzy to PRAWDZIWA strata czasu. Jeśli to nie wszystkie wady, to możliwe, że jako nowy członek zespołu nie znasz jeszcze stylu zespołu. To normalne i należy się czegoś nauczyć, aby przyspieszyć cały zespół.

Moja sugestia to oszczędność czasu. Przyspiesz sprzężenie zwrotne. Ja bym:

  • Wykonuj więcej okresowych recenzji, aby uniknąć popełnienia tego samego błędu i wygenerowania tego samego komentarza 50 razy
  • Usiądź z recenzentem, który przegląda Twój kod, abyś mógł porozmawiać o pojawiających się problemach, unikając w ten sposób udokumentowania 300 „problemów”, które zostaną wymazane przy następnym zatwierdzeniu
  • Połącz się z jednym z tych „prawdziwych” programistów przez jakiś czas, pisząc kod, aby zobaczyć, co zrobiliby inaczej

Ludzie mogą się kłócić przeciwko parowaniu, ponieważ „potrwa to dłużej”, ale oczywiście nie jest to problemem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.