Programowanie w parach, gdy kierowca i obserwator mają różne poziomy umiejętności i doświadczenie

30

Wiem, że programowanie w parach jest zwinną techniką tworzenia oprogramowania, w której dwóch programistów pracuje razem na jednym stanowisku roboczym. Jeden, kierowca, pisze kod, a drugi, obserwator, przegląda każdą linię kodu podczas wpisywania.

Ale zastanawiam się, czy strategia nadal działa w tej sprawie. Na przykład

  • jeśli mają zupełnie inny poziom umiejętności programowania.
  • jeśli jeden nigdy nie doświadczył problematycznej domeny, a inny ma
  • Czy nadal jest OK, jeśli mają niski poziom umiejętności programowania?

Czy możesz zasugerować strategię programowania par w powyższym przypadku?

Sakares
źródło
13
Upewnij się, że obydwoje zgadzają się co do tego, kto ma wyższy poziom umiejętności i powinien trenować drugiego. Jeśli te role / poziomy umiejętności nie są jasne, programowanie w parach prawdopodobnie nie zadziała i doprowadzi do konfliktu.
Giorgio,
Ale jeśli zrobisz to, co sugerujesz, może to być ogromna szansa na naukę.
Mawg

Odpowiedzi:

27

Zakładając, że bardziej doświadczona osoba w parze ma temperament, aby mentorować drugą osobę, powiązanie osoby z małym doświadczeniem w języku lub dziedzinie problemowej z doświadczoną osobą ułatwi transfer wiedzy. Mniej doświadczona osoba miałaby mentora, który udzieliłby im wskazówek dotyczących języka, domeny, aplikacji oraz najlepszych praktyk lub konwencji zespołu.

Na C2 wiki znajduje się interesujące streszczenie na temat transferu wiedzy za pomocą programowania w parach . Bardziej starsza osoba, która została powołana do roli mentora zespołu, wiele się nauczyła od młodszych programistów, a jego wiedza wzrosła nawet w wyniku połączenia z młodszymi, mniej doświadczonymi programistami. Istnieją również inne historie o tym, że eksperci-programiści współpracują z ekspertami w dziedzinie.

Thomas Owens
źródło
Zgoda. Mam juniora w zespole, a programowanie par znacznie poprawiło jakość jego kodu. Jednak bardzo pomocne było również sprawdzenie jego kodu w parach.
Sulthan
2
Musisz tylko uważać, aby osoba starsza nie była kierowcą w 100% przypadków.
HLGEM,
13
@HLGEM Twierdziłbym nawet, że mniej doświadczona osoba powinna być kierowcą przez większość czasu, podczas gdy bardziej doświadczona osoba przegląda kod pod kątem defektów i stylu lub pisze na nim testy.
Thomas Owens
1
Zgadzam się z @ThomasOwens; posiadanie mniej doświadczonego partnera przyspieszy jego „doświadczenie” szybciej niż jakąkolwiek inną metodę, jednocześnie umożliwiając im dzielenie się własnymi pomysłami i spostrzeżeniami z bardziej starszym partnerem. Nie potrwa długo, zanim ich poziom biegłości będzie znacznie bliższy.
Eric King
1
Zastanawiam się, czy to sprawia, że ​​starszy programista jest bardziej zobowiązany do praktykowania tego, co głosi?
JeffO
16

To właśnie zostało stworzone programowanie przypadków użycia pary: dzielenie się doświadczeniami między starą brodą i młodym konikiem polnym.

Jest to dwukierunkowe dzielenie: zwinne owady mają wiele do nauczenia dla reumatycznych mózgów.

mouviciel
źródło
1
Chociaż pewnie uważalibyście mnie za jednego, zastanawiałem się nad „mózgami reumatycznymi” ...
Marjan Venema
1
Nie sądzę, by można tu zastosować termin „historia użytkownika”. Historie użytkowników opisują wymagania biznesowe dotyczące oprogramowania.
Konrad Rudolph
Tak, myślę, że on ma na myśli „przypadek użycia”.
Jörg W Mittag
Przesłuchane: brak słowa na temat strategii postępowania w wymienionych przypadkach.
try-catch-wreszcie
10

Kiedy awansowałem do mojego obecnego zespołu, byłem nowicjuszem w J2EE, ale byłem ekspertem w tej dziedzinie. Mój starszy (nowy lider zespołu) był wykwalifikowany w J2EE, ale nie na platformie.

Myślę, że nauczyłem się więcej o Java2EE w ciągu tych 4 miesięcy z programowaniem parami niż czytaniem książki, a lider zespołu również dowiedział się o platformie.

Różnica w doświadczeniach między nimi jest kluczem do sparowania programowania imho.

dierre
źródło
2
Zgoda. Mogę sobie wyobrazić programowanie w parach ze sobą i myślę, że byłoby to bezcelowe. Luka jest tym, co tworzy różne perspektywy istotne dla sprawienia, aby 4 oczy obejmowały większy zakres na wykresie możliwości vin. Dwie osoby o identycznych umiejętnościach i doświadczeniach widziałyby te same rzeczy i nie odnosiłyby żadnych korzyści.
Jimmy Hoffa
5

Opiszę moje doświadczenie i spróbuję wyciągnąć z tego „strategię”.

Kiedyś sparowałem z kompletnym nieprogramowującym. Był ekspertem w temacie opracowanego przez nas oprogramowania. Przeciwnie, nie miałem doświadczenia w dziedzinie problemów. I on też był w tej chwili moim przełożonym (wiem, że to może brzmieć dziwnie :)

Główną zaletą tej metodologii było to, że musiałem wyjaśnić wdrożenie wielu rzeczy z jego dziedziny wiedzy, zapewniając w ten sposób dokładność wdrożenia i jego zrozumienie procesu, co oznaczało, że rozumiał, dlaczego zajęło to tyle czasu.

Kolejną korzyścią jest łatwe skupienie się na zadaniu, brak rozpraszania uwagi (ha-ha, wyobraź sobie otwarcie Twittera przed nosem szefa).

Czasami było to jednak dość onieśmielające, ponieważ nawet przerwa na herbatę stała się dość „odwracaniem uwagi od pracy” (nie z jego punktu widzenia; po prostu niewygodne było proszenie o przerwę i tak dalej).

Tak więc nie jest to tak naprawdę programowanie parami, ponieważ właściwie nie mógł przejrzeć kodu, który został wpisany. Wydawało się jednak, że to rozsądna strategia (przynajmniej przez jakiś czas). Ostatecznie zadziałało w ogóle ze względu na względną prostotę zarówno metodologii programistycznej (mam na myśli, że nie było w niej złożonych technik projektowania oprogramowania, takich jak Wzorce OOP) i tematyki. To nie zadziałałoby, gdybyśmy musieli opracować kompilator. Wierzę, że nadal mogłoby to działać, gdyby nie-programista obserwator uczestniczył w procesie opracowywania małych, jasno określonych utworów. Powiedzmy, że jest w porządku, aby obserwował programowanie funkcji „oblicza parametr X z Y i Z według danego algorytmu”, ale może nie być tak dobrze, aby obserwował cały proces projektowania systemu (co oznacza rozwój architektury oprogramowania, tj. Hierarchię zajęcia,

Myślę, że działałoby to jeszcze lepiej, gdyby miał jakieś podstawowe umiejętności programistyczne, ponieważ nie musiałbym wyjaśniać „czym jest tablica”.

Mam nadzieję, że to pomoże :)

Michael Pankov
źródło
To dobre, doświadczone wyjaśnienie!
Sakares,
2

Z mojego doświadczenia wynika, że ​​jeśli obaj programiści mają niski poziom umiejętności, może to stanowić problem. W takim przypadku często występuje tendencja do próbowania kopiowania i wklejania. Myślę, że dobrym pomysłem może być nie łączenie ze sobą dwóch początkujących programistów, dopóki nie osiągną określonego poziomu określonego przez zespół.

W przeciwnym razie programowanie w parach może być świetnym pomysłem, zakładając oczywiście, że dwóch facetów jest gotowych podzielić się tym, co wiedzą. Jest to nie tylko świetny sposób na informowanie wszystkich o kodzie źródłowym, ale także dobre miejsce na nowe pomysły i dyskusje.

minusSeven
źródło
Deweloperzy o niskim poziomie umiejętności rzadziej kopiują i wklejają podczas samodzielnego programowania? Zwykle dzieje się tak, gdy nikt nie patrzy.
JeffO
1

Tak długo, jak członkowie zespołu szanują się nawzajem, programowanie w parach może być korzystne bez względu na poziom doświadczenia programistów. Nawet jeśli młodszy programista wykryje kilka błędów składniowych (które wszyscy popełniamy!) Przed bardziej doświadczonym programistą, to wciąż zaoszczędzony czas na kompilowaniu kodu.

Myślę też, że może to otworzyć podejście programisty do możliwości innych członków ich zespołu, szczególnie jeśli mają otwarty umysł i oczekują, że każdy może cię czegoś nauczyć.

Mroczny rycerz
źródło