Programowanie w parach - Pair programming

Programowanie w parach dwóch współpracowników, 2007

Programowanie w parach to zwinna technika tworzenia oprogramowania , w której dwóch programistów pracuje razem na jednej stacji roboczej. Jeden, kierowca , pisze kod, podczas gdy drugi, obserwator lub nawigator , przegląda każdy wiersz kodu podczas jego wpisywania. Dwóch programistów często zamienia się rolami.

Podczas przeglądu obserwator bierze również pod uwagę „strategiczny” kierunek prac, wymyślając pomysły na ulepszenia i prawdopodobne przyszłe problemy do rozwiązania. Ma to na celu uwolnienie kierowcy od skupienia całej uwagi na „taktycznych” aspektach wykonywania bieżącego zadania, przy wykorzystaniu obserwatora jako siatki bezpieczeństwa i przewodnika.

Ekonomia

Programowanie w parach zwiększa liczbę osobogodzin wymaganych do dostarczenia kodu w porównaniu z programistami pracującymi indywidualnie. Jednak wynikowy kod ma mniej wad. Oprócz czasu opracowywania kodu inne czynniki, takie jak koszty wsparcia w terenie i zapewnienie jakości, również mają wpływ na zwrot z inwestycji. Programowanie w parach może teoretycznie zrekompensować te wydatki poprzez zmniejszenie defektów w programach.

Oprócz zapobiegania popełnianym błędom mogą istnieć inne niematerialne korzyści. Na przykład dzięki uprzejmości odrzucania połączeń telefonicznych lub innych rozpraszających uwagę podczas wspólnej pracy, robienia mniejszej liczby przerw w uzgodnionych odstępach czasu lub wspólnych przerw na oddzwonienie (ale szybki powrót do pracy, ponieważ ktoś czeka). Jeden członek zespołu może być bardziej skoncentrowany i pomagać w kierowaniu lub obudzić drugiego, jeśli straci koncentrację, a ta rola może się okresowo zmieniać. Jeden członek może mieć wiedzę na temat lub technikę, której nie ma drugi, co może wyeliminować opóźnienia w znalezieniu lub przetestowaniu rozwiązania lub pozwolić na lepsze rozwiązanie, w ten sposób skutecznie poszerzając zestaw umiejętności, wiedzę i doświadczenie programisty w porównaniu do pracy w pojedynkę. Każda z tych niematerialnych korzyści i wiele innych może być trudna do dokładnego zmierzenia, ale może przyczynić się do bardziej efektywnych godzin pracy.

Jakość projektu

System z dwoma programistami ma większe możliwości generowania bardziej zróżnicowanych rozwiązań problemów z trzech powodów:

  1. programiści wnoszą do zadania różne wcześniejsze doświadczenia;
  2. mogą na różne sposoby oceniać informacje istotne dla zadania;
  3. stoją w różnych relacjach z problemem z racji pełnionych ról funkcjonalnych.

Próbując podzielić się celami i planami, programiści muszą otwarcie negocjować wspólny kierunek działania, gdy pojawia się między nimi konflikt. Czyniąc to, rozważają większą liczbę sposobów rozwiązania problemu, niż mógłby zrobić pojedynczy programista. To znacznie poprawia jakość projektowania programu, ponieważ zmniejsza szanse wyboru złej metody.

Zadowolenie

W ankiecie internetowej przeprowadzonej wśród programistów w parach z 2000 roku, 96% programistów stwierdziło, że bardziej podoba im się praca podczas programowania w parach niż samo programowanie. Co więcej, 95% stwierdziło, że są bardziej pewni swojej pracy, gdy są zaprogramowani w parach.

Uczenie się

Wiedza jest stale dzielona między programistami w parach, czy to w branży, czy w klasie. Wiele źródeł sugeruje, że uczniowie wykazują większą pewność siebie podczas programowania w parach, a wiele z nich uczy się od wskazówek dotyczących zasad języka programowania po ogólne umiejętności projektowania. W „rozwiązłym parowaniu” każdy programista komunikuje się i pracuje ze wszystkimi pozostałymi programistami w zespole, a nie kojarzy się tylko z jednym partnerem, co powoduje, że wiedza o systemie rozprzestrzenia się po całym zespole. Programowanie w parach umożliwia programistom zbadanie kodu partnera i dostarczenie informacji zwrotnej, która jest niezbędna do zwiększenia ich własnej zdolności do rozwijania mechanizmów monitorowania własnych działań edukacyjnych.

Budowanie zespołu i komunikacja

Programowanie w parach umożliwia członkom zespołu szybkie udostępnianie, co zmniejsza prawdopodobieństwo, że będą mieli ukryte przed sobą plany. Pomaga to programistom w parze łatwiej nauczyć się komunikować. „To zwiększa przepustowość i częstotliwość komunikacji w ramach projektu, zwiększając ogólny przepływ informacji w zespole”.

Studia

Istnieją zarówno badania empiryczne, jak i metaanalizy programowania w parach. Badania empiryczne mają tendencję do badania poziomu produktywności i jakości kodu, podczas gdy metaanalizy mogą koncentrować się na błędach wprowadzonych w procesie testowania i publikowania.

Metaanalizy stwierdzono pary rozważyć kilka alternatywnych rozwiązań niż programistów pracuje sam, przybyć prostszych bardziej linkujących wzorów i wady projektowe złapać wcześniej. Wyraził jednak obawy, że na jego wyniki mogły mieć wpływ „oznaki stronniczości publikacji wśród opublikowanych badań dotyczących programowania w parach”. Stwierdzono, że „programowanie w parach nie jest jednakowo korzystne ani skuteczne”.

Chociaż programiści parami mogą wykonać zadanie szybciej niż programista solo, całkowita liczba osobogodzin wzrasta. Menedżer musiałby zrównoważyć szybsze ukończenie pracy i skrócony czas testowania i debugowania z wyższymi kosztami kodowania. Względna waga tych czynników może się różnić w zależności od projektu i zadania.

Korzyść z parowania jest największa w przypadku zadań, których programiści nie rozumieją w pełni przed ich rozpoczęciem: to znaczy trudnych zadań, które wymagają kreatywności i wyrafinowania oraz dla nowicjuszy w porównaniu z ekspertami. Programowanie w parach mogłoby być pomocne w osiągnięciu wysokiej jakości i poprawności w złożonych zadaniach programistycznych, ale również znacznie zwiększyłoby nakład pracy (koszt) programistyczny.

W przypadku prostych zadań, które para już w pełni rozumie, parowanie skutkuje spadkiem wydajności netto. Może to skrócić czas tworzenia kodu, ale także grozi obniżeniem jakości programu. Produktywność może również spaść, gdy używane jest połączenie nowicjusz-nowicjusz bez wystarczającej dostępności mentora, który mógłby ich szkolić.

Wskaźniki niewykonania

Istnieją wskaźniki, że para nie działa dobrze:

  • Odłączenie może się pojawić, gdy jeden z członków fizycznie odchodzi od klawiatury, uzyskuje dostęp do poczty e-mail, a nawet zasypia.
  • „Watch The Master” zjawisko może powstać, jeśli jeden członek jest bardziej doświadczony niż inne. W tej sytuacji młodszy członek może przejąć rolę obserwatora, zlecając większą część czynności kodowania starszemu członkowi pary. Może to łatwo doprowadzić do wycofania się.

Warianty parowania

Ekspert–ekspert
Parowanie ekspert-ekspert może wydawać się oczywistym wyborem dla uzyskania najwyższej produktywności i może przynieść wspaniałe rezultaty, ale często daje niewielki wgląd w nowe sposoby rozwiązywania problemów, ponieważ jest mało prawdopodobne, aby obie strony kwestionowały ustalone praktyki.
Ekspert–nowicjusz
Parowanie ekspert – nowicjusz stwarza wiele możliwości dla eksperta, aby był mentorem nowicjusza. To połączenie może również wprowadzić nowe pomysły, ponieważ nowicjusz jest bardziej skłonny do kwestionowania ustalonych praktyk. Ekspert, od którego wymaga się teraz wyjaśnienia ustalonych praktyk, również chętniej je kwestionuje. Jednak w tej parze onieśmielony nowicjusz może biernie „obserwować mistrza” i wahać się, czy wziąć w nim udział. Ponadto niektórzy eksperci mogą nie mieć cierpliwości potrzebnej do umożliwienia konstruktywnego udziału nowicjuszy.
Nowicjusz – nowicjusz
Parowanie nowicjusz-nowicjusz może przynieść wyniki znacznie lepsze niż dwóch nowicjuszy pracujących niezależnie, chociaż generalnie odradza się tę praktykę, ponieważ nowicjuszom trudniej jest wykształcić dobre nawyki bez odpowiedniego wzoru do naśladowania.

Zdalne programowanie par

Zdalne programowanie par , znane również jako programowanie w parach wirtualnych lub programowanie w parach rozproszonych , to programowanie w parach, w którym dwaj programiści znajdują się w różnych lokalizacjach, pracują za pośrednictwem wspólnego edytora w czasie rzeczywistym , współdzielonego pulpitu lub wtyczki IDE do zdalnego programowania par . Zdalne parowanie wprowadza trudności, które nie występują w przypadku parowania twarzą w twarz, takie jak dodatkowe opóźnienia w koordynacji, zależne bardziej od „ciężkich” narzędzi do śledzenia zadań zamiast „lekkich”, takich jak karty indeksowe, oraz utrata komunikacji werbalnej powodująca zamieszanie i konflikty o takie rzeczy, jak „kto ma klawiaturę”.

Wsparcie narzędziowe może być zapewnione przez:

  • Oprogramowanie do udostępniania całego ekranu
  • Multipleksery terminalowe
  • Wyspecjalizowane rozproszone narzędzia do edycji
  • Programy do rozmów głosowych lub oprogramowanie VoIP mogą być pomocne, gdy oprogramowanie do udostępniania ekranu nie zapewnia dwukierunkowej obsługi dźwięku. Korzystanie z zestawów słuchawkowych zapewnia wolne ręce programistów
  • Środowiska programistyczne w chmurze
  • Wspólne usługi programowania w parach

Zobacz też

Bibliografia

Linki zewnętrzne