Jak wykazujesz wydajność w środowiskach programowania w parach?

15

Ostatnio w mojej pracy pojawiły się przeglądy wydajności, a ja znalazłem się w interesującej pozycji. Nasz zespół dużo programuje w parach, który ma tendencję do uśredniania różnic umiejętności między członkami zespołu (szczególnie biorąc pod uwagę, że zmieniamy pary). Zasadniczo, dokonując przeglądu wyników, spoglądasz wstecz na pracę, którą wykonałeś, i demonstrujesz, co osiągnąłeś oraz jak przekroczyłeś oczekiwania, aby spróbować wynegocjować podwyżkę lub inne korzyści.

Jak zademonstrować (a nawet zmierzyć) indywidualne wyniki w takim środowisku?

NT3RP
źródło
1
Śledziłbym to, nad czym osobiście pracowałem. Uznam, że rozwiązałem problem dopiero po rozmowie z moim rówieśnikiem.
Ramhound
Nie znam odpowiedzi ... i wiem, że w niektórych miejscach pracy mogą wystąpić problemy jednego członka pary, który próbuje przypisać sobie wszystko. Gdy tylko drugi członek spróbuje uczciwie przyznać się do pewnych rzeczy, może stać się podejrzany, ponieważ prawdopodobnie nie jest możliwe, aby obaj członkowie zasłużyli na całą zasługę za osiągnięcia pary.
FrustratedWithFormsDesigner

Odpowiedzi:

13

uwzględnij wartość dodaną do programowania par w przeglądzie wydajności - czy pomogłeś drugiemu programistowi nauczyć się przydatnych rzeczy? (i odwrotnie, czy słuchałeś jego / jej mędrców i dobrze współpracowałeś?)

przegląd wyników nie powinien być konkursem, powinien być oceną coachingu w odniesieniu do twoich osobistych celów (które są prawdopodobnie zgodne z celami firmy i wzajemnie uzgodnione na początku roku; w przeciwnym razie jest to po prostu arbitralne)

Steven A. Lowe
źródło
3
+1, ale prawdopodobnie trudno jest stworzyć „ocenę coachingu w odniesieniu do twoich osobistych celów” - rodzaj środowiska, gdy twoje następne podwyżki zależą od oceny wyników (jak sugeruje znacznik „wynagrodzenie”).
nikie
1
@nikie: w wielu miejscach, w których kiedyś pracowałem, osobiste cele były omawiane na początku roku, a ocena wyników została przeprowadzona pod koniec roku w stosunku do tych celów. W wielu innych miejscach, w których kiedyś pracowałem, oceny wydajności były przeprowadzane bez twojego udziału. W niektórych miejscach, w których kiedyś pracowałem, przeglądy wydajności były wielokrotnie obiecane, ale nigdy nie zostały wykonane. Natychmiast powiedziano mi, żeby wypełnić własną dokumentację dotyczącą oceny wyników, ponieważ zarząd był „zbyt zajęty”!
Steven A. Lowe
2

Trudno byłoby definitywnie udowodnić naukowo jedną przewagę wydajności.

Twoja hipoteza jest taka, że ​​programowanie w parach zwiększa wydajność programistów i poprawia jakość. Twój test będzie polegał na podaniu parze zestawu wymagań ograniczonych do konkretnej architektury i ich implementacji.

Twoja kontrola w tym przypadku polega na tym, że dajesz te same wymagania jednemu deweloperowi o równej pozycji, umiejętnościach i doświadczeniu (co obiektywnie oceniają jego rówieśnicy), a także jest ograniczony w ramach tej samej architektury.

Aby zweryfikować twoją hipotezę dotyczącą wydajności czasowej, programiści muszą wykonać swoją pracę w mniej niż połowę czasu jako kontrola. Aby zweryfikować twoją hipotezę dotyczącą jakości, musisz zweryfikować parę eksperymentu i kod kontrolny przez obiektywną stronę trzecią, a obiektywna grupa kontroli jakości przetestuje wyniki obu grup bez informowania ich, który zespół wyprodukował. Grupa programowania par musi mieć lepszy kod i mniej błędów.

To nie jest idealny eksperyment, ale byłbym zafascynowany, gdyby ktoś próbował czegoś podobnego.

Poza tym nie widzę jednak, w jaki sposób można faktycznie udowodnić, że programowanie w parach jest lepsze od jednego programisty w danej funkcji.

wałek klonowy
źródło
Ciekawy eksperyment, ale nie pytam o porównanie wydajności indywidualnej z programowaniem par; Pytam w środowisku programowania par, jak mierzysz wpływ osoby?
NT3RP
1
Być może jest to po prostu zły wskaźnik w twoim przypadku? Jeśli firma wykorzystuje przede wszystkim programowanie w parach, to z perspektywy menedżerów możliwość dokładnego określenia wpływu konkretnego programisty jest poważnie ograniczona. Widzę, że coroczny rzetelny przegląd wyników może być trudny.
wałek klonowy
Zgadzam się, że jest to prawdopodobnie zły parametr, ale niestety musimy z tym żyć :)
NT3RP
2

W swoich wskaźnikach wydajności przywołaj osobno 1) indywidualny wzrost i rozwój oraz 2) mentoring i wsparcie rówieśników. Pozwól każdemu pracownikowi na samoocenę i uwzględnij opinie swoich potencjalnych klientów. Jeśli ma to sens w kulturze Twojej firmy, rozważ recenzje i referencje.

Jeśli zostanie to wykonane poprawnie, pracownik, który czerpie największą wartość edukacyjną z pary, zostaje nagrodzony za długoterminową zdolność do wniesienia wkładu do zespołu, a pracownik, który pomaga im przyspieszyć, zostaje nagrodzony za przekazanie wiedzy i doświadczenia. Ludzie, którzy są gdzieś pośrodku (uczą się nowych domen zamiast przechodzić od juniora do seniora), zostają rozpoznani na obu końcach równania.

W praktyce ocena indywidualnej wydajności jest w najlepszym przypadku trudna. Trudno to zrobić bez poczucia urazy lub konkurencji. Ale jeśli ocenisz indywidualny wkład w zespół i cenisz zarówno naukę, jak i nauczanie, istnieje szansa, że ​​sprawi, że będzie działał z nieco mniejszym tarciem.

JasonTrue
źródło
2

Czy pary często się zmieniają? Jeśli tak, możesz użyć anonimowych recenzji, aby wymyślić miernik. Na przykład, jeśli osoba A powiedziała, że ​​B wykonała 60% pracy, osoba C powiedziała, że ​​osoba B wykonała 30% pracy, a osoba D powiedziała, że ​​osoba B wykonała 90% pracy, można to uświadomić osobie B wykonującej 60% pracy. Jeśli praca, którą osoba B wykonała w swoich parach, ma współczynnik względny 100 punktów, to osoba B wykonała pracę wartą 60 punktów!

Nie jest to jednak (gdziekolwiek w pobliżu) idealne. Ludzie prawdopodobnie przyznają sobie więcej kredytu niż drugiej osobie, więc może być konieczne uwzględnienie tego w obliczeniach. Może to również prowadzić do powstania środowiska, w którym pary są wobec siebie podejrzane. Obliczenia mogą również zostać przesunięte przez kogoś, kto nie lubi osoby, z którą pracuje itp.

Casey Patton
źródło
1

Mówię, że jeśli dwóch z nas pracowało razem nad stworzeniem X, to oboje otrzymaliśmy uznanie za ukończenie i wdrożenie go. Problemem może być sytuacja, w której jedna część pary w ogóle nie działała. W takim przypadku kierownik powinien był być o tym cały czas informowany, a zatem powinien wykorzystać tę informację zwrotną podczas wypełniania swojego komentarza do przeglądu wyników.

HLGEM
źródło
1

Jesteś w dokładnie takiej sytuacji, w jakiej mój nauczyciel stawia nas uczniów w naszym programie rozwoju gier. Jesteśmy sparowani (2, 3 lub 4 osoby w zależności od wielkości klasy i wielkości projektu), a na koniec mówi się nam, aby ocenić każdego członka zespołu i nas samych w odniesieniu do projektu i tego, co zostało wykonane, a także projekty innych zespołów jako całość. Na podstawie tych ocen formułuje się ocenę.

Podczas formułowania zespołu nauczyciel celowo umieściłby silnego programistę i słabego programistę razem, mając nadzieję, że sobie nawzajem poradzą sobie i / lub pomogą, ale w 99% przypadków słaby programista będzie jeździł na łyżwach i wykona bardzo mało pracy dla nikogo lub nie będzie miał nie ma pojęcia, co robią (ponieważ są to kursy zaawansowane, jest to bardzo frustrujące).

Oceny mają być prywatne, ale powiedzmy, że jest kilka osób, z którymi wszyscy nie chcą już pracować.

Casey
źródło
1

Programowanie w parach oznacza, że ​​jedna osoba myśli, co i jak należy coś zrobić, a druga gra małpę kodującą. Potem w pewnym momencie się zmieniają (jeden się nudzi, męczy itp.). To dobrze, ponieważ ich działania nie są przerywane.

Niektórzy uważają to również za „przegląd kodu na sterydach”. Otrzymujesz sprawdzony kod, co powinno oznaczać wyższą jakość.

BЈовић
źródło
1

Fajne pytanie. Ważne jest nie tylko to, co wnosisz, ale także to, jak twoi rówieśnicy widzą twój wkład. Poproś ich o szczere opinie, ponieważ to ta informacja pomoże ci być lepszym „cokolwiek” . Poważnie, ważne jest, aby twój rówieśnik rozumiał twój wkład i rozumiał go tylko wtedy, gdy miał sporo wiedzy podczas parowania z tobą. Szczęśliwe kodowanie, udostępnianie i uczenie się, a tym samym dobre zarobki.

karthiks
źródło
0

Wadą programowania par jest to, że bardziej doświadczona wydajność programisty jest ograniczona do najmniej doświadczonej wydajności programisty, w perspektywie krótko-, średnioterminowej. W dłuższej perspektywie doświadczony i produktywność jest zwiększona w młodszym deweloperze.

umlcat
źródło