Napisane przez: futrzak | 18 listopada 2015

Pair programming

Dyskusja rozgorzala byla (w pracy) i… musze przyznac, ze zdziwilam sie.

Nie jestem zawodowym programista, ale iles-tam linijek kodu i skryptow w zyciu napisalam (i dalej pisze) i nie wyobrazam sobie programowania Z KIMS.
Bo pair programming polega wlasnie na tym: siedza sobie dwie osoby przy jednym kompie (z jedna klawiatura i mysza) i razem pisza program….jedna klepie, a druga gapi sie w ekran.

Caly koncept wywodzi sie z extreme programming a to z kolei z metodologii agile.
No bo mamy code reviews, ktore rzadko kiedy wychodza. Ludzie zwykle nie maja czasu, nie chce im sie etc. i tak na prawde zaczynaja sie czepiac dopiero, jak cos ujrzy swiatlo dzienne. Wtedy krytykuja, wiec.. let’s take it to the extreme.

O ile jestem sobie w stanie wyobrazic takie cos jako metode wdrazania do pracy internow i junior programmers, o tyle wydaje mi sie to ciezka pomylka jako zwykla metodologia pracy zawodowcow.
Wlasciwie wszystko przemawia przeciwko:

1. Wsrod programistow jest nadreprezentacja introwertykow i ludzi z uposledzonymi social skills (by nie rzec wrecz, ze aspergerow…). Oni nie sa w stanie jednoczesnie koncentrowac sie na swojej pracy i wyjasniac komus to, co robia i dlaczego; Zreszta, samo wyjasnianie i gadanie kosztuje ich tyle samo wysilku, co konkretna praca.

2. Dostepne eksperymenty, jak na przyklad ten jasno pokazuja, ze w kontrolowanej probie, gdzie porownuje sie programistow pracujacych indywidualnie vesus dwojkowo, nie ma roznic w jakosci produkowanego kodu i predkosci rozwiazywania kluczowych problemow. Czyli wychodzi po rowno – a przeciez mamy jedna pensje versus dwie…do wykonania tego samego zadania…

3. Dostepne rezultaty eksperymentow z zakresu psychologii spolecznej rowniez jasno pokazuja, ze efektywnosc pracy ludzi, ktorzy sa bezposrednio nadzorowani („ktos im zaglada przez ramie”), jest znacznie mniejsza niz tych, ktorzy pracuja indywidualnie i zadaniowo;

4. Przelomowe programistyczne dziela – czy bedzie to GNU Compiler, czy jakikolwiek jezyk programistyczny, czy podwaliny pod nowego OSa – cokolwiek – zawsze byly robione przez jednostki. Ba. W swoim zyciu w Silly Valley mialam okazje zetknac sie osobiscie z czolowka swiatowej klasy programistow (jeden nawet to moj eks..). Wiem dobrze, jak wyglada ich metodologia pracy. Opisujac w ludzkim jezyku: zeby zaczac pisac sensowny kod, trzeba caly kontekst zaladowac do podrecznego RAMu, czyli do wlasnego mozgu. To wymaga niesamowitego skupienia, bo rownoczesnie pisze sie kod i wykonuje go w glowie i dokonuje korekcji na biezaco. Tego absolutnie nie da sie robic grupowo.

Albo, uzyjmy innej analogii: pisanie ksiazki/wiersza/eseju.
Wyobrazacie sobie, ze piszac, ktos wam siedzi za plecami i na biezaco komentuje?
Owszem, nawet najbardziej profesjonalny pisarz potrzebuje edytora (czytaj: code review commitee) – ale edytor wkracza do akcji PO. A to duza roznica.

Ja sama nie jestem (chyba?) introwertyczka, ale akt tworzenia czegokolwiek jest dla mnie bardzo indywidualna, zeby nie rzec – intymna – sprawa. Nie, nie moge tego robic Z KIMS.
Nie spotakalam tez w moim zyciu programisty, ktory moglby (przez programiste rozumiem tutaj kogos, kto mysli i rozwiazuje problemy, a nie klepie na zasadzie cut-and-paste ze sztancy zaprojektowane przez kogos APIs…)
Nie, nie i jeszcze raz nie. Tj. sejse mentorskie i nauczycielskie to jedno – programowanie rzeczy waznych – drugie.

Zachodzi jednakze pytanie: skad biora sie te setki komentarzy w Internetsach, ze to takie wspaniale? Bo mam dosc konkretne podejrzenia….

Reklamy

Responses

  1. Są sobie światowe konkursy dla młodzieży, mniej więcej: – Programowanie zespołowe. Startują trójeczkami. Po co?

  2. Wiem o co chodzi. Co innego gdy rzucamy luźne pomysły przy pisaniu skeczy a co innego gdy masz swoja wizje czegos i to realizujesz. Tez nie umiem pisac z sapiaca osoba na barku.
    Mój facet nie raz podpatruje co pisze nie przeszkadza mi on ale ciężko o koncentracje i zazwyczaj patrzę na niego znacząco i odchodzi. A jak pyta o cos gdy pisze to juz w ogóle, zawsze (po dłuższej chwili) musi powtarzać po 3 razy zanim dojdę świata realnego i mu odpowiem.

  3. prezio:
    teamwork – ducha trzeba w mlodziezy wyrabiac…

    zawuaz, ze podobna metodologia jest stosowana na bardzo wielu uniwersytetach i nie tylko w dzialce CS.
    Projekty na zaliczenie robisz grupowo, zeby nauczyc sie pracowac w grupie.

    Nie wszedzie tak jest, ale mysle ze idea tych konkursow stad wlasnie pochodzi.

  4. Jestem programistą. Wg mnie są sytuacje, gdy pisanie parami jest bardzo owocne. Na pewno praca codzienna w ten sposób byłaby stratą „osobo godzin” i po prostu męcząca, ale podczas projektowania i prototypowania niektórych trudniejszych rozwiązań (przeważnie podczas crunchu) praca w parze pomaga przebrnąć przez problemy. Ale proporcje w praktyce są pewnie bliskie 1h w parach do 100h solo (przynajmniej w mojej praktyce). No i para musi być zgrana/dopasowana. Nie każdych dwoje programistów się dogada w sposób dający zyski kreatywności, a nie straty,

    Co do konkursów w programowaniu zespołowym, to tam następuje podział pracy przeważnie. Zadań może być kilka, zespół robi szybki przegląd i ustala kto się zajmie którym. I nikt przez ramie nie zagląda, bo każdy jest bardzo skupiony na swojej części. Raczej tylko zagadnienia nie rozwiązane przez pojedynczych członków są rozpatrywane grupowo (ostatnie zadania).

  5. Darek Pryczek:
    no ale o jakiej pracy w parze mowisz? Normalne, ze przy projektowaniu czegos jest dyskusja, code review a przede wszystkim weryfikacja pomyslu/architektury etc.
    A potem kazdy siada i pisze swoj kawalek.

  6. Futrzak kiedyś napisałem program w Pascalu który umiał robić jak kalkulator wiec pozwole sobie dorzycić swoje trzy grosze a propo tego i poprzedniego wpisu o Agille.

    BHP
    Przepisy przeciw pożarowe
    Przepisy o ruchu drogowym
    Prince 2
    Kaban
    Agille
    6sigma
    żółte karteczki*
    Pair programing (nie wiem czy też)

    Na początku był chaos.
    A potem każdy próbował sobie z tym chaosem jakoś poradzić.
    Wymyślając różne metody opanowania tego chaosu.
    Pojawiły się różne metody. Gdy te lepsze sprawdziły się w działce X
    pomyślano jeśli działa w tam to spróbujmy tutaj.
    Miedzy czasie inni wymyslaja swoje metody.
    Dlaczego?
    Żeby być lepszym tańszym itd. i w efekcie mieć więcej kasy władzu itd.
    Większość z tych metod się nie sprawdza.
    Ale raz na jakiś czas ktoś wymyśla nowe „koło” które sprawia że całe działy, firmy, korporacje, państwa idą do przodu.

    (*) żółte karteczki kiedyś przy piwie ktoś przy stole opowiadał że LATA po świecie i szkoli z użycia żółtych karteczek :)

  7. chciałam napisać mniej więcej to co Darek, u mnie podobnie. nie musisz gadać, wystarczy, że klepiesz, a druga osoba patrzy i ewentualnie komentuje/poprawia, potem zmiana. czasem się sprawdza, zależy od różnych czynników, ale to nie jest kompletnie bzdurny pomysł..

  8. Ja sie wypowiem jako SM: praca w parach ma sens. Czasem. Moje chlopaki sami proponuja pp jak jeden cos zna, a drugi dopiero zaczyna wchodzic w temat.

  9. @futrzak właściwie wszystko co napisałaś jest prawdą, tylko:
    1. Równasz do światowej klasy programistów z jajami. Nawet nie chodzi o wiedzę, tylko o zaangażowanie i charakter, poniekąd powiązany z cechami o których wspomniałaś, tzn. introwertyzm, „ja sam to zrobię, spierdalajcie”, „zesram się, ale to będzie zajebiste, kopary wam spadną”. Fajnie, tacy ludzie to skarb, ale jaki to procent klepaczy kodu na świecie ? 5% ? 3% ?
    2. Imaginuj sobie, ile programistów na świecie tworzy przełomowe dzieła, tak w procentach, albo lepiej w promilach
    3. Chodzi o charakter. Niektórzy czują się pewniej, gdy ktoś patrzy na to co robią, bo sami nie są w 100 procentach pewni tego, co robią.
    4. „”przez programiste rozumiem tutaj kogos, kto mysli i rozwiazuje problemy, a nie klepie na zasadzie cut-and-paste ze sztancy zaprojektowane przez kogos APIs…” Otóż to.


Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

Kategorie

%d blogerów lubi to: