Pair programming to metoda, która może przynieść wiele korzyści zarówno programistom, jak i całej firmie, w której pracują. Jeśli zastanawiasz się, czy i kiedy warto ją stosować, a także dlaczego wciąż ma ona wielu przeciwników – zapraszamy do lektury.

Co to jest pair programming?

5 Key Benefits of Pair Programming in IT projects – Co to jest pair programming?

Pair programming to metoda programowania, polegająca na wspólnej pracy nad jednym kodem dwóch programistów, korzystających z tego samego komputera. Została stworzona przez Kenta Becka i jest częścią metodyki Extreme Programming, mającej na celu stworzenie najwyższej jakości oprogramowania.

Pair programming to wspólna praca dwóch programistów nad jednym kodem, korzystających z tego samego komputera

W pair programming jeden z developerów, który pełni funkcję tzw. “drivera” pisze kod, podczas gdy drugi (“navigator”) obserwuje i analizuje każdą napisaną linijkę kodu, szuka ewentualnych błędów, a jeśli zajdzie taka potrzeba proponuje inne, lepsze rozwiązania. Navigator często także podpowiada i instruuje drivera, jak i dlaczego powinien napisać poszczególny fragment kodu.

Dlaczego nie wszyscy developerzy lubią pair programming?

5 powodów, dla których warto stosować pair programming w projektach IT – Dlaczego nie wszyscy developerzy lubią pair programming?

Pair programming budzi wiele kontrowersji wśród developerów. Głównym powodem jest to, że osoba pełniąca funkcję drivera może czuć się nieswojo, kiedy ktoś analizuje każdy element jej pracy. Niektórzy uważają, że to tak, jakby inny pracownik wciąż patrzył im na ręce, co dodatkowo ich stresuje i zmniejsza wydajność.

Pair programming może mieć także negatywne skutki, jeśli chodzi o relacje w zespole. Kiedy dwóch pracowników bardzo blisko ze sobą współpracuje i zdarzy się, że mają odmienne zdania na temat tego, jakie rozwiązanie będzie lepsze – wówczas mogą pojawić się konflikty.

Kolejna kwestia, na którą powołują się przeciwnicy tej metody to strata czasu i pieniędzy. Navigator, który tylko nadzoruje poprawność kodu, mógłby przecież w tym czasie również programować, dzięki czemu oddzielnie byliby w stanie napisać więcej linijek kodu. Jak wiemy, płace programistów nie należą do niskich, w związku z czym każda “stracona” godzina pracy jest tu bardzo istotna.

Dlaczego warto stosować pair programming?

Wiele znanych firm z sektora IT, takich jak chociażby Stack Overflow korzysta z tej metody. Zdaje sobie bowiem sprawę, że korzyści programowania parami znacznie przewyższają jego koszty. Największe plusy pair programming to:

1. Zwiększenie efektywności

5 powodów, dla których warto stosować pair programming w projektach IT – 1. Zwiększenie efektywności

Większość badań sprawdzających efektywność pair programming potwierdza, że metoda ta bardzo korzystnie wpływa na efektywność pracy programistów. Teza ta została potwierdzona już w 1998 roku przez Johna T. Noska, który w artykule The Case for Collaborative Programming wykazał, że programiści pracujący wspólnie nad jednym kodem potrzebują około 30% mniej czasu niż ci kodujący w pojedynkę. 

2. Zmniejszenie liczby błędów

5 Key Benefits of Pair Programming in IT projects – 2. Zmniejszenie liczby błędów

Dzięki temu, że dwie osoby czuwają nad jakością kodu, ryzyko pojawienia się błędów znacznie się zmniejsza. Badanie The Costs and Benefits of Pair Programming z 2013 roku wykazało, że praktyka ta co prawda wydłuża pracę nad kodem, ale jest to zaledwie 15% i w zamian za to zmniejsza liczbę błędów o 15%.

3. Możliwość wymiany wiedzy

5 powodów, dla których warto stosować pair programming w projektach IT – 3. Możliwość wymiany wiedzy

Nie da się ukryć, że programowanie w parach jest szczególnie korzystne dla początkujących programistów, którzy mogą kodować wraz ze starszymi stażem współpracownikami. Wówczas wiedza, jaką wyciągną pracując w ten sposób jest ogromna. Jest to jednak korzyść obustronna, ponieważ nawet mniej doświadczone osoby mogą przecież zadawać trafne pytania czy proponować lepsze rozwiązania. Dla osób z większym stażem jest to także szansa sprawdzenia się w roli mentora, który może podzielić się swoją wiedzą z innymi.

4. Pomoc przy wdrażaniu nowych pracowników

5 powodów, dla których warto stosować pair programming w projektach IT – 4. Pomoc przy wdrażaniu nowych pracowników

Pair programming świetnie sprawdza się, kiedy chcemy wdrożyć nowych pracowników. Nawet kilka godzin wspólnej pracy nad projektem pozwoli szybciej i lepiej zrozumieć działanie danego systemu. W tym przypadku można śmiało stwierdzić, że jest to oszczędność czasu. Dzięki temu, że nowy pracownik może na bieżąco uczyć się i zadawać pytania, nie będzie musiał tracić wielu godzin na samodzielne zrozumienie danego kodu.

5. Skuteczna metoda rekrutacyjna

5 powodów, dla których warto stosować pair programming w projektach IT – 5. Skuteczna metoda rekrutacyjna

Programowanie w parach sprawdza się nie tylko w sprawnym realizowaniu danych projektów. Pozwala bowiem także szybko i skutecznie ocenić umiejętności osób dopiero ubiegających się o pracę. Sprawdzenie na żywo, jak dana osoba pisze kod oraz jak radzi sobie z napotkanymi problemami to świetny sposób, aby wybrać najlepszego kandydata do pracy.

Pair programming – nasza opinia

Programowanie w parach to także metoda praktykowana przez naszych programistów. Dlatego o opinię na jej temat zapytaliśmy Krzysztofa Kodrzyckiego, Software Developera w WEBSENSA.

Krzysztof Kodrzycki – Software Developer w WEBSENSA

Pair programming bywa bardzo użytecznym sposobem programowania, w szczególności przy realizacji trudniejszych zadań, które nie mają oczywistego rozwiązania. Jednak metoda ta nie zawsze zadziała. Po pierwsze, ze względu na terminy realizacji zadań wyznaczone przez management, które często nie pozwalają realizować jednego zadania przez dwóch programistów równolegle. A po drugie, ze względu na to, że niektóre osoby potrzebują całkowitego spokoju przy programowaniu, w związku z czym taka współpraca z innym programistą może sprawiać, że dana osoba będzie nieefektywna.

Bardzo cenię w tym stylu pracy pewnego rodzaju code review, które jest robione w czasie pisania kodu, a także możliwość szybkiego uczenia się poprzez obserwowanie, jak inna osoba rozwiązuje dany problem. Dodatkowym atutem pair programmingu jest większa szansa na natychmiastowe wychwycenie błędów oraz możliwość zadawania na bieżąco pytań do właśnie powstającego kodu.

Poza pracą w firmie taki sposób programowania miałem okazję wykorzystywać na różnego rodzaju hackathonach. Podczas pair programmingu zwróciłbym uwagę na komunikację pomiędzy programistami (jeśli ktoś ma jakieś pytanie to powinien je od razu zadawać) i zmiany roli z „obserwatora” na „osobę piszącą kod” (i vice versa) w miarę stałych interwałach czasowych.

A jakie jest Wasze zdanie na temat pair programming? Czy testowaliście kiedyś tę metodę w Waszych zespołach? Jeśli tak – koniecznie podzielcie się swoimi doświadczeniami w komentarzach na Facebooku lub Linkedinie!

Sources:

1. Remote Pair Programming: 7 Collaborative Coding Tools | SitePoint

2. Cockburn A., Williams L., The Costs and Benefits of Pair Programming

3. Nosek J., The Case for Collaborative Programming

4. 10 Pair Programming Best Practices Questions & Answers