Jakie są możliwe wady programowania par? [Zamknięte]

22

Programowanie par jest obecnie dość znane.

Ma kilka zalet, takich jak:

  1. Programy z mniejszą liczbą błędów.
  2. Koszt utrzymania po produkcji jest znacznie niższy.
  3. Ustalone praktyki są kwestionowane, co skutkuje pojawieniem się nowych pomysłów.
  4. Programiści uczą się od siebie nawzajem.
  5. Programiści rozwijają umiejętności miękkie.

Ale jakie są wady programowania par?

wolny ptak
źródło
1
Czy „równoległość” w tytule pytania jest literówką?
5gon12eder
14
Masz na myśli inne niż fakt, że dwie osoby potrzebują takiej samej (może mniej) produkcji?
Robert Harvey
4
@ ThorbjørnRavnAndersen To prawdopodobnie mniej.
Robert Harvey,
4
@ ThorbjørnRavnAndersen Coś jest nie tak z matematyką. Zasadniczo to, co mówisz, to to, że ciągle jesteś w trakcie przeglądu peer / code. Trudno sobie wyobrazić, jak to jest bardziej oszczędne czasowo.
Robert Harvey
5
Można tego dokonać dość łatwo, bez rozpraszania w pełni rozwiniętym układem programowania par. Po prostu współpracuj z innymi programistami w tej roli, w miarę potrzeb.
Robert Harvey,

Odpowiedzi:

28

Chociaż programowanie w parach zyskało znaczną reputację, ma również kilka pułapek.

Niektóre z nich są następujące:

  1. W programowaniu parowym nie możesz usiąść i samodzielnie ocenić własnego kodu.
  2. Jedna z par może przestać być aktywnie zaangażowana.
  3. Sterownik musi „zaprogramować na głos”. Ciche programowanie zmniejsza korzyści.
  4. Wyprodukowanie tych samych funkcji kosztuje więcej roboczogodzin. Należy zachować równowagę między jakością kodu a zwiększonymi kosztami kodowania.
  5. Zjawisko „obserwuj mistrza” może wystąpić, gdy para doświadczonych i początkujących programistów łączy się w pary. Początkujący członek może zostać obserwatorem, a doświadczony członek ukończy większość kodowania.
  6. Kiedy dwóch doświadczonych użytkowników łączy się w pary, może powstać zjawisko „ego dewelopera”, przy czym każdy członek próbuje forsować swoje własne pomysły.
wolny ptak
źródło
4
2 i 5 można przeciwdziałać za pomocą parowania Ping-Ponga (bardzo szybkie przełączanie ról między sterownikiem a nawigatorem w cyklu TDD: Alice pisze test zakończony niepowodzeniem, Bob pisze kod do zaliczenia testu, Alice refactor, Bob pisze test zakończony niepowodzeniem, Alice pisze kod, aby zdać test, Bob refaktoryzuje, Alice pisze test nieudany…). W ten sposób kierowca i nawigator zmieniają role najpóźniej co kilka minut (więcej niż kilkadziesiąt sekund), a każdy członek otrzymuje równie duże i ważne zadania.
Jörg W Mittag,
5
4 brzmi oczywisto, ale nie jestem pewien. Na przykład wyłapywanie błędów i wczesne uzyskiwanie informacji zwrotnych może (ale nie musi) nadrobić podwójny czas pracy programisty.
Jörg W Mittag,
4
@ JörgWMittag (dotyczy: parowania Ping-Ponga) brzmi jak przepis na bardzo stresujący dzień pracy: / Mam nadzieję, że nigdy nie będę musiał programować w miejscu, w którym wymuszą tę lub inną ścisłą metodologię programowania par.
Andres F.,
4
Programowanie gry w ping-ponga wymaga, aby te dwie rzeczy były zasadniczo wymienne. Mam kolegę, w którym jedyną sensowną kombinacją programowania par jest zmuszanie go do myślenia i pisania (i rozważania). Pomaga mu skupić się i zrozumieć, co się dzieje.
Thorbjørn Ravn Andersen
3
Można również wspomnieć, że marnuje się trochę czasu na omawianie drobiazgowych szczegółów, podczas gdy w przeglądach kodu można skupić się tylko na ważnych aspektach.
Giorgio
24

Kilka razy próbowałem programować w parach, w tym w organizacji, która (krótko) rozważała wdrożenie go jako obowiązkowego procesu dla wszystkich inżynierów (można się domyślić, jak dobrze ten pomysł się sprawdził). Osobiście nienawidziłem tego.

Wymienione poniżej powody to tylko moje subiektywne doświadczenia i nie jestem w stanie „zmierzyć” ich wpływu w konkretny sposób. Ale tutaj wszystkie są takie same:

1 - Posiadanie „nawigatora” i „kierowcy” pomaga tylko wtedy, gdy ten pierwszy mówi, a drugi słucha.

Wszyscy spotkaliśmy programistów, którzy są uparci, gorliwi w kwestii teoretycznych obaw lub patologicznie niezdolni - psychologicznie - do „wyrzucenia” starej pracy, gdy ktoś sugeruje problem. Wszyscy wiemy, że osoby są zbyt nieśmiałe lub niepewne, aby zgłaszać obawy lub sugerować przypadki narożne.

Po sparowaniu tego rodzaju programistów nawigator szybko przyjmuje pasywną rolę, a kończy się na samodzielnym programowaniu z automatycznym przeglądem kodu. To monumentalne marnotrawstwo zasobów.

2 - Parowanie uniemożliwia kreatywność.

W przeciwieństwie do tego, co wcześniej uważano za wartość „burzy mózgów w grupach”, w dzisiejszych czasach panuje zgoda, że ​​twórcza wiedza wymaga niezależności i autonomii . Kiedy pracujesz sam, możesz szybko zhakować jakiś szalony pomysł, aby sprawdzić, czy jest to rzeczywiście wykonalne. Możesz bez słów złożyć jakiś dziwny prototyp, a jeśli zawiedziesz, to nie ma znaczenia, bo nikt nie wie .

Porównaj to do parowania: kiedy chcę wypróbować jakąś nową koncepcję, muszę przekonać mojego partnera, omówić go przez wdrożenie, krok po kroku i mam nadzieję, że nie ocenią mnie, jeśli się nie powiedzie. Tego rodzaju środowisko jest toksyczne dla tworzenia nowych pomysłów.

3 - Najniższy wspólny mianownik.

Kiedy para nie może rozwinąć nowych pomysłów, jak wyżej, lub gdy ludzie nie mogą zgodzić się co do jakiejś fundamentalnej zasady, w jaki sposób należy zaprojektować cechę, to wychodzi na jaw zagmatwany projekt, który próbuje pójść na kompromis i nie satysfakcjonuje nikogo.

Jeśli połączysz programistę, który tworzy wspaniałe, elokwentne, niebiańskie abstrakcje programowania funkcjonalnego z szybkim i brudnym maniakiem wydajności, kod, który wspólnie stworzą, zwykle nie będzie ani strasznie elegancki, ani szczególnie szybki.

4 - Brak autonomii i gwałtowna przejrzystość.

Gwałtowna przejrzystość to fraza, którą wyciągnąłem z umiarkowanie znanej (i dość kontrowersyjnej) polemiki przeciwko metodologii Scrum. Opisuje sposób, w jaki niektóre organizacje infantylną programistów i traktują ich z podejrzeniem zwykle zarezerwowanym dla pracowników nieprofesjonalnych.

Cokolwiek myślisz o „szkodach” powodujących, że praca programistów jest całkowicie przejrzysta (i możesz nie zgodzić się, że to rzeczywiście szkoda), wiele osób ceni sobie ich autonomię i zdolność do samodzielnej pracy, ufając, że zrobią to, co należy. To ważna potrzeba psychologiczna, a zmuszenie programistów do parowania (jak widziałem w co najmniej jednym sklepie) spowoduje, że pracownicy będą przerażeni, zdenerwowani i wyobcowani.

5 - Niektórzy programiści po prostu nie grają dobrze w parach.

Niektóre osoby nie zachowują się lub nie mogą odpowiednio zachowywać się w sparowanym środowisku. Mogą mieć złą higienę, złe nawyki pracy, szorstką osobowość, „głośny” i „intensywny” sposób lub całą masę innych cech, które czynią ich świetnymi indywidualnymi pracownikami, ale słabymi programistami par.

Czy potrafisz to rozwiązać? Nie całkiem. Zmiana osobistego zachowania jest trudna. Sklep zajmujący się programowaniem par musi być bardzo ostrożny przy zatrudnianiu i poświęcić dużo czasu na sprawdzenie, jak ktoś działa i czy będzie w stanie dobrze współpracować z rówieśnikami. Jednak silniejsze dyskryminowanie osobowości oznacza, że ​​zatrudnienie potrwa dłużej, chyba że rozluźnisz swoje standardy umiejętności i wiedzy specjalistycznej.

Jimmy Breck-McKye
źródło
3
Chociaż podoba mi się wyrażenie „gwałtowna przejrzystość”, z mojego doświadczenia wynika, że ​​preferowana metodologia (scrum / agile lub coś bardziej tradycyjnego) nie ma związku z tym, czy programiści są traktowani jak profesjonaliści, czy nie. Dysfunkcyjne organizacje będą traktować profesjonalistów jak dzieci, niezależnie od tego, czy (udają) postępują zgodnie ze Scrumem lub CMMI.
David
1
„Porównaj to do parowania: kiedy chcę wypróbować jakąś nową koncepcję, muszę przekonać mojego partnera, omówić go przez wdrożenie, krok po kroku, i mam nadzieję, że nie ocenią mnie, jeśli się nie powiedzie. środowiska jest toksyczny dla tworzenia nowych pomysłów. ”: Nie chodzi tylko o osąd, chodzi o szybkość. Nie chcesz się rozpraszać, gdy masz pomysł, chcesz zapisać tyle, ile możesz, tak długo, jak jesteś w ruchu. Programowanie w parach aktywnie uniemożliwia to.
Giorgio
1
Po zapisaniu wszystkich pomysłów możesz je uporządkować, być może następnego dnia, a następnie pozwolić koledze na dokładną recenzję, np. Na narzędziu takim jak tablica recenzji, aby mieli cały czas na skończone pomysły i pomyśl o tym bez presji czasu. Programowanie w parach również temu zapobiega, ponieważ próbuje połączyć kodowanie i przegląd kodu w jedno działanie.
Giorgio
2
@ Jimmy: Gdybyś napisał pięć odpowiedzi zamiast jednej odpowiedzi z pięcioma punktami, dostałbyś ode mnie pięć głosów pozytywnych.
Giorgio
Absolutnie zgadzam się, że eksperymentowanie wymaga cichej i szybkiej pracy - dokładne przeciwieństwo tego, czego wymaga parowanie. Być może parowanie działa dobrze dla programistów przeprowadzających konserwację lub dodających dyskretne funkcje do dużego, istniejącego systemu korporacyjnego. Jestem jednak pewien, że nie przydaje się do pracy wymagającej odkryć, nowych technologii, pomysłowości lub kreatywnych sposobów pracy z trudnymi ograniczeniami.
Jimmy Breck-McKye,
12

Zależy od twojej sytuacji lub perspektywy.

Programowanie w parach jest dobre dla organizacji. Ale czy to jest dobre dla jednostki?

W końcu jest to metoda oszczędnościowa (wczesna informacja zwrotna) i metoda wydajności; Tu nie chodzi o ciebie, ale o projekt, produkt, firmę ($$).

Chociaż możesz mieć osobiste korzyści, nie są one powodem ani końcem żadnej metodologii rozwoju. Na przykład programowanie par (w pełnym wymiarze godzin) również powstrzymuje cię przed rozluźnieniem, surfowaniem itp., Musisz uzasadnić swoje przerwy wobec partnera.

Twój (obrotowy) partner będzie najlepszą kamerą monitorującą: zwiększa się intensywność pracy.

Lub poprzez rozpowszechnianie wiedzy jednostka staje się mniej ryzykowna dla firmy (np. Nie może opuścić firmy z niezbędną wiedzą) i ma mniej „kart przetargowych”.

Jestem pewien, że znajdziesz więcej punktów, czytając artykuły twierdzące bardziej krytycznie z TWOJEJ rzeczywistej sytuacji / stanowiska w firmie, a nie z perspektywy swojego kierownika.

Prawie wszystkie metodologie zostały napisane z perspektywy menedżera.

Gość
źródło
Jeśli nie jesteś właścicielem firmy, otrzymasz pieniądze za generowanie kodu. Im lepszy kod, tym lepiej dla swojego pracodawcy - myślenie o sposobach posiadania żetonów negocjacyjnych przeciwko swojemu pracodawcy jest moim zdaniem niezrozumieniem, co czyni cię cennym w pierwszej kolejności. Uważam, że PP jest tak intensywny, że nie możesz tego robić cały dzień, ale automatycznie potrzebuje odpoczynku.
Thorbjørn Ravn Andersen
7
Ponieważ niektórzy ludzie są zmuszeni do życia z „bycia wartościowym dla pracodawcy”, muszą również liczyć z własnym interesem, a nie tylko z myślą o interesach swoich pracodawców, takich jak stwory.
Gość
1
@ ThorbjørnRavnAndersen nie żyjemy w idealnym świecie, w którym wszyscy płacą podatki i wszyscy otrzymują rekompensatę na podstawie zasług.
Den
1
@ ThorbjørnRavnAndersen Im lepszy kod, tym lepiej dla mojego pracodawcy? Chciałbym żyć w takim świecie, w moim świecie liczy się produkowanie funkcjonalności tak szybko, jak to możliwe, gdzie jakość kodu jest jedynie pośrednią wartością miękką, która nie powinna mieć więcej czasu niż to absolutnie potrzebne. Błędy są w porządku, zwykle nie są poważne i łatwo je naprawić.
Alex
@Alex „zwykle nie surowe” - tęsknię za tym światem: D
Gusdor
5
  1. Nagle musisz teraz powiedzieć komuś, kiedy chcesz iść do toalety lub napić się kawy. Przynajmniej nie trzeba prosić o pozwolenie.

  2. Musisz poradzić sobie ze standardami higieny drugiej osoby.

Legowisko
źródło
4

Oprócz innych odpowiedzi:

  1. Wiele firm, z którymi pracowałem, wydało programistom laptop (na miejscu u klienta - łatwiej zabezpieczyć sprzęt, jeśli zabrano go do domu po pracy, będąc w stanie wykonać dziwną robotę z domu przez VPN w mgnieniu oka itp.) Wiele lat wcześniej miałem problemy z widzeniem na ekranie laptopa innej osoby („kierowcy”) z perspektywy surfowania na ramionach - wiek nie poprawi tego (a niektóre ekrany stają się trudne do odczytania poza idealnym kątem widzenia).

    Dlatego też parujący programiści będą potrzebować odpowiednio dużych ekranów, co zwiększy koszt sprzętu i ograniczy możliwość dostosowania do lokalizacji. Dla niektórych może nie stanowić problemu, w innych przypadkach będzie stanowić problem.

  2. Odkryłem również, że różnice w preferencjach higieny osobistej (w tym palenie, jedzenie i picie), a także starcia osobowości, muszą ograniczać wydajność. Łatwo jest powiedzieć dwóm programistom, by „wyssali to i dogadali się”, często spowoduje to, że ludzie będą raczej trzymać usta zamknięte i cicho sabotować się nawzajem poprzez pasywno-agresywne działania, aby wyrazić swoje urazy wobec siebie nawzajem.
  3. Hałas. Ja, na przykład, lubię ciche środowisko pracy. Nie wyobrażam sobie ciągłej rozmowy z niektórymi grupami programistów parowych (ponieważ trzeba rozmawiać w celu komunikacji). Nawet muzyka wokalna na moich słuchawkach ma tendencję do zakłócania koncentracji (nijakie instrumenty do słuchania w biurze ...). Myślę, że można to złagodzić, przenosząc się z wszechobecnego biura na otwartym planie do dedykowanych 2-osobowych pomieszczeń biurowych, ale to znów zwiększy koszty.

Anegdoty dla twojej rozrywki:

  • Poprzedni pracodawca dostał kiedyś wykonawcę z innego kraju (aby zachować anonimowość, aby chronić winnych). Pracodawca zapewnił zakwaterowanie, ale nie transport. Ponieważ wspomniany wykonawca mieszkał wzdłuż mojej drogi do pracy, zostałem zgłoszony na ochotnika, aby go zabrać i ponownie podrzucić. Powiedzmy, że jego higiena osobista nie była na tym samym poziomie, do czego jestem przyzwyczajony, a on również palił mocno („najsilniejszy!”), Podczas gdy ja nie. Podczas naszej 15-minutowej wycieczki do biura trzymałem opuszczone okno - nawet zimą - co nie zapobiegło zapachowi mojego samochodu jak zwietrzała palarnia po 3-miesięcznym okresie pracy kolegi (nie, on nie palił w samochodzie , ale zrobił to, czekając na mnie).
  • Nie zajmowaliśmy się również programowaniem parami, ale siedzieliśmy obok siebie przy stole konferencyjnym (przez pewien czas). Po około miesiącu na sztucznym drewnie stołu wokół ładnej dłoni myszy kolegi pojawił się ładny brązowy pierścień. W tym momencie dostałem otwarte biurko tuż przy otwartym planie call-center, co wolałem (z pewną pomocą słuchawek).
  • Potem jest wszechobecny napój biurowy: kawa. Chociaż go piję, potrafię sobie radzić bez niego i nie piję tak często, jak inni współpracownicy. Oddech z bliskiej odległości może być bardzo nieprzyjemny - podobny do zapachu zapomnianego pustego kubka. Nazwijmy zapach „mugolskim” ...
fr13d
źródło
3

Myślę, że programowanie w parach kończy się niepowodzeniem z powodów społecznych i praktycznych. Zasadniczo prosisz jedną osobę, aby pracowała pod ciągłym nadzorem, a druga, aby robiła tylko dziury.

To, co nieuchronnie dzieje się po pewnym czasie, polega na tym, że para rozdzieliła się na „sprawdzanie wiadomości e-mail” lub „nadal źle sprawdzasz sprawę na żywo” itp.

Zamiast poprawiać kod wyjściowy, objętość jest zmniejszana. Zarówno ze względów praktycznych „muszę iść na lunch / spotkanie zsynchronizowane z tobą”, jak i towarzyskich „Po prostu czekam, aż Bob skończy to, co robi, zanim zapytam o ponowne połączenie, nie chcę być postrzegany jako dokuczliwy”

Jeśli chodzi o dumne zalety, istnieje wiele powszechnych praktyk, które osiągają je w prostszy i skuteczniejszy sposób

Ewan
źródło
2

Powiedzenie dwóm starszym programistom, aby zrobili „programowanie bólu”, jeśli są pewni, że da się to zrobić, jest jego największą wadą.

klm_
źródło