wSołtysiak BlogPraktycznie o tworzeniu oprogramowania i nie tylko
18 października 2024

Przepis na warsztaty Pair Programming

W tym wpisie chciałbym podzielić się pomysłem oraz sposobem na realizacje dwugodzinnych warsztatów dla programistów, w ramach których uczestnicy poznają Pair Programming oraz mogą lepiej się zintegrować. Zajęcia skupiają się na części praktycznej, która jest doprawiona szczyptą rywalizacji.

Efekty Pair Programmingu z kotem

Miałem okazje przeprowadzić takie warsztaty ze swoim zespołem, więc to, co czytasz, jest formułą ulepszoną o moje doświadczenie i informacje zwrotne. Mimo kilku potknięć całość została odebrana bardzo pozytywnie i wierzę, że może się to również spodobać innym osobom.

Zakładam, że wiesz, na czym polega Pair Programming i masz w nim doświadczenie. Jako bazę pod część teoretyczna polecam ten artykuł. W związku z tym nie będę wchodził w szczegóły tej metodyki.

Zachęcam także do dostosowania przedstawionego planu do swoich potrzeb.

Kwestie organizacyjne

  • Czas trwania: min. 2 godziny
  • Liczba uczestników: parzysta, min. 4 osoby
  • Forma: dowolna — na żywo, zdalnie, hybrydowo
  • Wymagane doświadczenie uczestników: brak

Zajęcia powinny trwać minimum dwie godziny. Wychodzę z założenia, że warsztaty powinny być jak najbardziej praktyczne. Na część teoretyczną oraz wnioski przeznaczone jest około 45 minut. Pozostały czas to praca w parach. Taka ilość czasu wystarczy, żeby rozgryźć zadanie, a równocześnie się nim nie znudzić.

Ze względu na temat warsztatów najlepiej, jeżeli liczba uczestników będzie parzysta. Jeżeli brakuje osoby do pary, to jako osoba prowadząca możesz dołączyć do części praktycznej. Biorąc pod uwagę aspekt rywalizacji, potrzebujemy minimum dwóch par.

Forma warsztatów może być dowolna, jednak w zależności od sposobu przeprowadzenia warsztatów należy zadbać o różne kwestie.

W przypadku organizowania warsztatów na żywo istotne będzie zapewnienie rzutnika na część teoretyczną oraz odpowiednio dużej sali konferencyjnej lub kilku małych salek do pracy w parach.

Komfort pracy w parach jest tutaj najważniejszy. Stoły powinny być na tyle duże, żeby dwie osoby mogły wspólnie wygodnie pracować. Odległość pomiędzy parami powinna pozwalać na swobodną rozmowę bez przeszkadzania innym. Dodatkowo rekomenduję, aby uczestnicy pracowali na własnym sprzęcie.

Jeżeli zdecydujesz się na formę hybrydową, pamiętaj dodatkowo o dobrym mikrofonie i nagłośnieniu. Przyda się to w części z wnioskami, która ma formę dyskusji. Zapobiegnie to wykluczeniu z niej osób zdalnych.

Forma zdalna jest najprostsza w przygotowaniu. Wystarczy dowolne oprogramowanie komunikacyjne z funkcją tworzenia pokoi oraz udostępnianiem ekranu.

Uczestnikiem może być każdy, kto potrafi programować. Osoby nie muszą mieć równego poziomu doświadczenia. Duże rozbieżności w doświadczeniu możesz wyrównać przez odpowiednie dobranie osób w pary.

Przebieg warsztatów

Po zadbaniu o całą otoczkę możemy przejść do planu akcji, krok po kroku.

Wprowadzenie w temat Pair Programming (15 min)

Warsztaty zaczynamy od części teoretycznej, w której wyjaśniamy, na czym polega Pair Programming oraz jakie korzyści przynosi. Istotne w tej części jest podkreślenie, że to nie jest wyłącznie tworzenie kodu przez dwie osoby, ale także wzajemna nauka oraz możliwość na dokładniejsze zrozumienie problemu i finalnie wytworzenie lepszego rozwiązania niż w pojedynkę.

Następnie warto przedstawić podejście “Kierowca i Pilot” (Driver and Navigator). Dzięki temu nadamy ramy pracy w parach przez określenie ról i obowiązujących zasad zamiany.

Polecam wspomnieć o najczęściej popełnianych błędach, szczególnie w roli pilota. Pozwoli to na ich uniknięcie i w efekcie przyjemniejszą pracę.

Ponownie polecam zajrzeć do tego artykułu, który może posłużyć jako podstawa do wykonania własnej prezentacji.

Wytłumaczenie zasad zadania praktycznego (5 min)

Po wytłumaczeniu idei Pair Programmingu możemy przejść do wyjaśnienia zadania, na którym skupią się uczestnicy.

Warsztaty mają ograniczony czas, więc bardzo ważnym jest wybranie takiego zadania, które spełnia zasadę ”easy to learn, hard to master”. Podejmowany problem powinien być prosty oraz znany każdemu uczestnikowi, ale równocześnie ciężki do rozwiązania na zadowalającym poziomie. Wykonane zadanie powinno dać się ocenić, tak aby na końcu wyłonić zwycięską parę.

Na moich warsztatach postawiłem na grę Elevator Saga i jej przykładem posłużę się dalej. Jeżeli jednak masz inny pomysł albo odstrasza Cię (lub uczestników) JavaScript to zachęcam do znalezienia innych gier lub stworzenia czegoś własnego.

Elevator Saga to bardzo wdzięczny wybór. Każdy wie, jak działa winda, jednak zaprogramowanie kilku wind w efektywny sposób jest sporym wyzwaniem. Gra udostępnia API wraz z dokumentacją1. W ciągu półtora godziny można ze spokojem wgryźć się w problem i przejść do bardziej wymagających poziomów. Elevator Saga posiada statystyki, więc określenie zwycięzcy nie jest problemem.

Dobranie w pary (5 min)

Podział na pary może odbyć się na wiele sposobów. Zachęcam do wylosowania par, zamiast dawania wolnej ręki w wyborze partnera. Zapobiegnie to sytuacji, gdzie pary będą składać się z osób, które często ze sobą współpracują. Pozwoli to na lepszą integrację grupy.

Poniżej kilka sposobów losowania:

  • poproś o odliczanie do N/2 (gdzie N to liczba uczestników)
  • wypisz imiona na kartkach i poproś o losowanie
  • użyj narzędzia do losowania (wpisz w wyszukiwarkę “random pair generator”, “random team generator”)

W przypadku bardzo dużego rozstrzału umiejętności uczestników możesz zdecydować się na przydział z góry, tak aby w parze była zawsze osoba początkująca oraz ktoś doświadczony.

Jeśli wybrałeś formę hybrydową, sugeruję zrobienie osobnych par stacjonarnych oraz zdalnych.

Rozwiązywanie zadania (min. 1h 15 min)

Następnym etapem warsztatów jest praca w parach nad zadanym problemem. Jest to najważniejsza część zajęć, jednak dla prowadzącego to czas na złapanie oddechu. Nie oznacza to jednak bezczynności i bierności.

Obserwuj uczestników oraz bądź gotowy na pytania, ale nikogo nie rozpraszaj. Pilnuj, żeby osoby zmieniały się w swoich rolach. Dobrą metodą jest przypominanie, że upłynął już czas przypadający na jedną turę.

Ogłoszenie wyników, omówienie rozwiązania (15 min)

Po ogłoszeniu zakończenia prac przyszedł moment na wyłonienie zwycięskiej pary. Miło będzie docenić najlepsze rozwiązanie brawami oraz “uściskiem dłoni prezesa”.

Warto poprosić zwycięzców o krótkie podsumowanie ich algorytmu oraz kodu. Rozwiązania potrafią zaskoczyć i mogą prowadzić do ciekawej dyskusji.

Podzielenie się wnioskami po sesji Pair Programming (min. 15 min)

Ostatni etap warsztatów skupiający się na wnioskach po praktycznej części proponuję poprowadzić w formie luźnej dyskusji. Przygotuj wcześniej kilka pytań, które pozwolą rozpocząć rozmowę, a następnie przejdź w rolę moderatora.

Poniżej kilka przykładowych pytań, które mogą Ci się przydać:

  • Która rola była trudniejsza — kierowcy czy pilota?
  • Czy pracując samodzielnie, stworzylibyście w tym samym czasie porównywalne lub lepsze rozwiązanie?
  • Czy Pair Programming może zastąpić lub uzupełnić Code Review?

Podsumowanie

Siłą tych zajęć jest ich prostota i postawienie na część praktyczną oraz dyskusję. Dzięki temu uczestnicy są mocno zaangażowani i mogą z nich wynieść ciekawe doświadczenia. Formuła warsztatów nie wymaga specjalnych przygotowań i jest na tyle elastyczna, że każda osoba na stanowisku programisty może w nich uczestniczyć. Gorąco zachęcam Cię do spróbowania takich zajęć w swoim zespole.


  1. Podczas warsztatów pojawiały się głosy, że API nie jest idealne, ale w trakcie zwykłej pracy jest podobnie, więc myślę, że to nawet zwiększa realizm.

Przeczytaj inne artykuły: