Jak powszechne jest programowanie par w miejscu pracy?

16

Zawsze intrygowało mnie programowanie parami, ale w ciągu 12 lat rozwoju nigdy nie pracowałem w miejscu, w którym stosowali tę praktykę, więc zawsze byłem sceptyczny co do tego, jak ludzie ją postrzegają.

Zastanawiam się, czy dzieje się tak z powodu pieniędzy / czasu (Pointy szef szefa spostrzega dwie osoby przy jednym komputerze pracujące na tym samym kodzie !!!! jak śmiesz!) Czy z innych powodów?

ozz
źródło
8
Myślę, że PHB może mieć rację w tej sytuacji. Dwie osoby (a zatem dwie pensje) za jedną produkcję to zasadniczo zła decyzja biznesowa. Nie ma wielu przypadków, w których programowanie w parach jest bardziej produktywne niż indywidualne, a przynajmniej nie w pełnym wymiarze godzin - więc po prostu nie robi się tak dużo poza mentoringiem nowych pracowników lub wspólnym pracą nad konkretnym problemem.
TZHX
3
Bardzo trudno jest przekonać spiczastego szefa, że ​​ma to wartość.
Walter
3
W przypadku nowego kodu myślę, że programowanie w parach ma wielką wartość. Pierwsza iteracja może zająć tyle samo czasu, ale edytor IME spędza znacznie mniej czasu debugowania. A gdy dwie osoby znają ten sam kod, debugowanie staje się łatwiejsze, ponieważ mogą one niezależnie wyglądać razem. „Biorąc pod uwagę wystarczającą liczbę gałek ocznych, każdy błąd jest przezroczysty”.
Michael K,
1
@Michael, nie zawsze, ale czasem myślę, że parowanie na starszym kodzie może być przydatne. Może rozbić silos i / lub zmniejszyć koszty refaktoryzacji. To powiedziawszy, całkowicie się zgadzam z tobą.
DevSolo,
5
@TZHX: „Dwie osoby na jedno wyjście to kiepski biznes”. To poważnie błędny argument i dobrze o tym wiesz (jak płacenie programistom za wiersz kodu). Programowanie w parach jest złożonym tematem i nie powinno być tak łatwe do odrzucenia.
Martin Wickman,

Odpowiedzi:

20

Mam ten sam koncert od 15 lat, a ostatnio (ostatnie 12-18 miesięcy) zaczęliśmy stosować techniki Agile. Tam, gdzie stosowane jest programowanie parami, historia wyników / funkcja została zaimplementowana na czas z mniejszą liczbą wad. Nadal nie sądzę, by był on wystarczająco często wykorzystywany.

Przed naszą adaptacją Agile jeden programista i ja od czasu do czasu dzielę się klawiaturą (może raz na 3-4 miesiące). Nasz zespół zarządzający wydawał się niechętny, ale zawsze był zadowolony z naszego nieformalnego parowania, ponieważ zazwyczaj wykonał kilka z następujących czynności:

  • zmniejszone silosy w zespole (ogromna wygrana, gdy zespół ma 6-8 deweloperów)
  • wytworzony kod z mniejszą ilością wad
  • każdy deweloper zazwyczaj zbierał z niego umiejętności

Powiedziałbym, że zarządzanie jest niechętne, ale jeśli możesz podjąć kroki dziecka i wykazać, że później funkcja ta jest lepsza (oszczędność kosztów) i / lub każdy (lub jeden) twórca podniósł pewne umiejętności (płacąc dalej), możesz nabrać siły, jeśli uważasz, że jest to praktyka, która pasuje Tobie lub Twojemu zespołowi.

DevSolo
źródło
świetny wgląd DevSolo, dzięki za udostępnienie. Zgaduję, że prawdopodobnie masz dość stabilny zespół (niski obrót personelu?)
OZZ
Zapraszamy. Nasze obroty są dość niskie ... 4 z nas dzieli to samo biuro od ponad 15 lat, chociaż 4 przeprowadzki (w 4 budynkach i 2 stanach)!
DevSolo,
Ironiczne, twój pseudonim to „DevSolo”;) nb moje doświadczenia zgadzają się z twoimi
ChrisAnnODell
11

Domyślam się, że deweloperzy prawdopodobnie będą mieli wiele oporów. Czy pamiętasz, że musiałeś pracować z ludźmi, którzy być może nie byli najbardziej zmotywowanymi osobami na świecie podczas studiów, a nawet szkoły średniej? Ci ludzie nadal istnieją. O ile nie masz zespołu złożonego ze wszystkich „najlepszych” osób, tego rodzaju konfiguracja wywoła u niektórych animozję.

Pemda
źródło
Bardzo prawdziwe Pemdas!
ozz
2
+1, niestety. Praca zespołowa to umiejętność, którą musisz rozwinąć, a jeśli nie chcesz, nie możesz. Być może właśnie to powinni zrobić menedżerowie programistów - znaleźć strukturę zespołu, która promuje największą produktywność wśród ludzi, których mają.
Michael K
4
Ten zawód wymaga kontrolowania ego. Nie zawsze jest to łatwe, ale nagrody będą niezwykle korzystne.
DevSolo,
@DevSole ... co to ma dokładnie wspólnego z moją odpowiedzią?
Pemdas
@Perndas, zakładałem, być może niepoprawnie, że opór byłby spowodowany ego. Przynajmniej kiedy to widziałem, wydaje się, że to jest powód. Widziałem tylko 2 (o ile pamiętam) deweloperów faktycznie się temu opierają. Jedno ego nie mogło zmieścić się w pokoju, drugie miało problemy z pewnością siebie.
DevSolo,
9

Nie zrobiłem tego oficjalnie, ale ilekroć utknę, zadzwonię do dewelopera i oboje wspólnie wypracujemy rozwiązanie. To świetny sposób na odrzucanie pomysłów, pozwalanie jednej osobie myśleć, podczas gdy druga implementuje, abyś nie stracił toku myślenia, ponieważ piszesz go.

Szkoda, że ​​nie zrobiono więcej.

CaffGeek
źródło
4
Innym narzędziem do użycia, jeśli nie jesteś zaznajomiony, jest „Rubber Ducking”. Zasadniczo połóż przedmiot na biurku jak gumową kaczkę (naprawdę używa zabawkowej Yody) i wyjaśnij mu problem. patrz c2.com/cgi/wiki?RubberDucking
DevSolo 25.01.11
Zamiast tego używam osoby siedzącej obok mnie ... nie możemy położyć rzeczy na naszych biurkach.
CaffGeek
Poważnie?
Michael K
@Michael ... nie masz pojęcia o zasadach, które tu mamy. A jednak kilka dobrych rzeczy przeważa nad wszystkimi złymi ... ledwo.
CaffGeek
Przykro jest słyszeć, że te nieuzasadnione zarządzanie regułami dotyczy programistów (to całkiem głupie, nie sądzisz? Muszą włożyć dodatkowy wysiłek, abyśmy byli szczęśliwi, aby to zrównoważyć)
Zekta Chan
9

Nie dbam o to:

1 - Lubię kodować swoją muzykę. Nie wszyscy chcą słyszeć, jak Zabójca uderza w ich uszy.

2 - Wychowałem się, biorąc pod uwagę, że patrzenie na ramiona ludzi jest bardzo niegrzeczne i czuję się bardzo nieswojo, gdy ludzie to robią.

3 - Myślę bardzo szybko, a kiedy szukam rozwiązania, kiedy zaczynam znaleźć odpowiedź, przeszkadzanie jest ostatnią rzeczą, której potrzebuję.

4 - Nie mogę od czasu do czasu robić przerw, aby przeglądać fora i grupy dyskusyjne. Niektórzy i tak mogą uważać to za niewłaściwe, ale uważam, że jest to bardzo ważne dla mojej ciągłej poprawy. Czasami jestem zbyt rozkojarzony, ale generalnie korzyść z mojej zwiększonej wiedzy przeważa nad jakimkolwiek spadkiem wydajności.

Przypuszczam, że może być inaczej w innych zespołach, ale kilka razy, kiedy coś mnie zaskakuje i POTRZEBUJĘ pomocy, prawie zawsze jestem tym, który ostatecznie wymyśli rozwiązanie. Jestem naprawdę dobry w tym, co robię, ale myślę, że może być więcej ... nie jestem pewien, w każdym razie stwierdzam, że lepiej mi po prostu rozwiązać ciężkie problemy i ogólnie lepiej zrobić to sam. Może to zabrzmi arogancko, ale to nie oznacza, że ​​to fałsz.

Rozważyłem, że może to pomóc innym w podjęciu niektórych moich technik, ale biorąc pod uwagę # 3, prawie nie byliby w stanie zadawać pytań, nie przerywając mojego myślenia.

To powiedziawszy, próbowałem od czasu do czasu. Czasami ma to niewielkie zalety, ale z pewnością nie widzę w tym spójnej rzeczy. System samotnych wilków działa dla mnie i wydaje się, że działa dla zespołu.

Edward Strange
źródło
2
@ Nie, bazując wyłącznie na # 2, nie jestem pewien, czy rozumiesz pojęcie programowania w parach. Chodzi o to, żeby nie patrzeć przez ramię. Pomysł, tak jak ćwiczyłem, polega na udostępnianiu komputera do pracy w tandemie. To nie jest programowanie master / slave, to programowanie równorzędne. Być może później jest to lepsze określenie ...
DevSolo,
Jest to całkowicie poprawne. Niektórzy chcą po prostu zostać sami, aby sami to odkryli.
MattC,
A także +1 za słuchawki. Dmucham metalem i / lub transiem przez cały dzień i denerwuję się, kiedy ludzie mówią mi o różnych sprawach. Czy nie mogą poczekać, aż skończy się moja ulubiona piosenka? : D
MattC
2
@Nieah: Czytanie listy wydaje się, że brakuje ci drobniejszych punktów programowania par. Nie twierdzę, że jest to dla wszystkich iz pewnością przejście od trybu kowbojskiego do trybu udostępniania wymaga czasu i wysiłku. Dokładnie tak, jak nauka czasu wymaga prawidłowego wykonywania TDD (lub jakiejkolwiek innej zwinnej praktyki w tym zakresie).
Martin Wickman
1
ciąg dalszy ...: „Senior” oznacza, że ​​może nie jesteś tym, który tworzy kod, ale pomaga młodszemu programistowi w opracowaniu sugestii. Nie jestem też największym fanem idei programowania w parach, ale widzę, że prawdopodobnie jest to głównie poza moją strefą komfortu. Wielu programistów lubi pracować nad własną stacją, ale muszę przyznać, że prawdopodobnie dowiem się więcej i znajdę lepsze rozwiązania, w których współpracowałem z innym programistą. Dlatego tak naprawdę chodzi o komfort osobisty, a nie o bardziej efektywną pracę.
Anne Schuessler
5

Programowanie w parach to świetny sposób na rozpoczęcie lub zrobienie czegoś niebanalnego i trudnego. Więcej rutynowych i prostych zadań lepiej wykonywać samodzielnie.

Brałem udział w wielu sesjach programowania par, zarówno w firmach startupowych / garażowych, jak i dużych korporacjach. Niezmiennie zdarzało się to tylko wtedy, gdy wprowadzano coś nowego i trudnego, czyli co najwyżej dwa razy w roku przez kilka tygodni. Jak często zdarza się to w Twojej firmie?

9000
źródło
na pewno rzadziej niż chciałbym.
ozz
5

Nigdy tego tak nie nazywaliśmy, ale już w ten sposób zawsze atakowaliśmy nowe problemy. Sparowalibyśmy się, aby zacząć pracę nad rozwiązaniem, ale zwykle wybijaliśmy się, aby indywidualnie dokończyć / wyczyścić szczegóły. Już nie tyle. Wydaje się, że staje się coraz rzadszy.

Brian Knoblauch
źródło
3

Niezbyt często. We wszystkich sklepach, w których byłem w ciągu ostatnich 10 lat, widziałem to raz. W najwolniejszym i najmniej wydajnym sklepie. Wydaje się, że tworzy hałaśliwe i stresujące środowisko. Jedna osoba kończy w ciągłym prowadzeniu samochodu i mówieniu, co uniemożliwia drugiej myślenie.

Zbierz zespół do recenzji kodu w grupach lub parach i zapewnij programistom własną przestrzeń. Na dłuższą metę będzie lepiej niż ściganie najnowszej mody Agile.

Servius
źródło