{"id":1272,"date":"2020-10-20T15:19:39","date_gmt":"2020-10-20T15:19:39","guid":{"rendered":"https:\/\/kalkus.dev\/?p=1272"},"modified":"2023-08-24T23:16:43","modified_gmt":"2023-08-24T23:16:43","slug":"zalety-programowania-w-parach","status":"publish","type":"post","link":"https:\/\/kalkus.dev\/blog\/2020\/10\/20\/zalety-programowania-w-parach\/","title":{"rendered":"Zalety programowania w parach"},"content":{"rendered":"\n<h3>Programowanie w parach jest prostym i starym pomys\u0142em, kojarzonym z technikami zwinnymi, w szczeg\u00f3lno\u015bci z extreme programming. Posiada sporo zalet, a mimo to obecnie jest omal nieu\u017cywane w projektach zdominowanych przez scrum. Czy s\u0142usznie?<\/h3>\n\n\n\n<p>Nie trzeba chyba pisa\u0107, \u017ce programowanie w parach polega na programowaniu w parach. Dw\u00f3ch programist\u00f3w siada przed jednym komputerem i razem pracuj\u0105 nad fragmentem kodu. Zwykle jeden wi\u0119cej pisze, a drugi komentuje, ale nic nie stoi oczywi\u015bcie na przeszkodzie, by wymienia\u0107 si\u0119 klawiatur\u0105 i mysz\u0105 od czasu do czasu. Co w tym takiego interesuj\u0105cego? Ot\u00f3\u017c ciekawe rzeczy dziej\u0105 si\u0119, kiedy posadzi si\u0119 dw\u00f3ch koder\u00f3w obok siebie\u2026<\/p>\n\n\n\n<p>Po zerowe &#8211; rosn\u0105 koszty \u201cw Excelu\u201d. Dw\u00f3ch programist\u00f3w siedzi nad jednym zadaniem! To\u017c to przecie\u017c jakby dw\u00f3ch glazurnik\u00f3w, dw\u00f3ch hydraulik\u00f3w sobie rury, kafelki podawa\u0142o i jeszcze gaw\u0119dzi\u0142o przy tym, zamiast robi\u0107 r\u00f3wnolegle. Koszmarna strata czasu, z perspektywy zarz\u0105dzaj\u0105cych, kt\u00f3rzy nie do\u015b\u0107 dobrze znaj\u0105 specyfik\u0119 pracy programist\u00f3w. Tylko, \u017ce jednak nie do ko\u0144ca tak jest, bo kodz\u0105c w parach programi\u015bci\u2026<\/p>\n\n\n\n<p>\u2026obserwuj\u0105 si\u0119 wzajemnie podczas pracy. To znaczy, \u017ce si\u0119 ucz\u0105. Czasami rzeczy przydatnych, czasami trik\u00f3w. Swego czasu z koleg\u0105 w jednej z firm programowa\u0142em w parze. Zauwa\u017cy\u0142 on, \u017ce zamykam okno w Windows dwoma klikni\u0119ciami w lewy g\u00f3rny r\u00f3g. Tak go to zaskoczy\u0142o, \u017ce zacz\u0105\u0142 chodzi\u0107 po biurze i pyta\u0107 innych, czy znali ten spos\u00f3b. Co dla mnie dziwne niewiele os\u00f3b go kojarzy\u0142o, co tym mocniej zach\u0119ca\u0142o go do odwiedzania kolejnych biurek. Nie jest to rzecz jasna przyk\u0142ad chwalebny, ale anegdota pokazuj\u0105ca, \u017ce pracuj\u0105c nawet wiele lat z jakim\u015b narz\u0119dziem mo\u017cemy nie czego\u015b nie dostrzega\u0107. Wielokrotnie mia\u0142em okazj\u0119 co\u015b u koleg\u00f3w i kole\u017canek podpatrzy\u0107. I zawsze wp\u0142ywa\u0142o to pozytywnie na moje umiej\u0119tno\u015bci.<\/p>\n\n\n\n<p>Obserwowanie w\u0142asnej pracy to nie tylko uczenie si\u0119 trik\u00f3w. To tak\u017ce korygowanie szkodliwych nawyk\u00f3w. Sami mo\u017cemy nie zauwa\u017cy\u0107, jak wiele czasu marnujemy na pewne czynno\u015bci, dop\u00f3ki kto\u015b inny nie zwr\u00f3ci nam uwagi, \u017ce mo\u017cna to zrobi\u0107 lepiej, szybciej, pro\u015bciej, wydajniej. Programuj\u0105c w parach uczymy si\u0119 sprawno\u015bci w dzia\u0142aniu, korygujemy si\u0119 wzajemnie. To wielka warto\u015b\u0107. Naprawd\u0119. Programowanie to nie pisanie literek na klawiaturze, ale my\u015blenie i nauka. Dlatego im szybsza edukacja, tym lepszy programista, tym sprawniejszy zesp\u00f3\u0142.<\/p>\n\n\n\n<p>Po drugie (pierwsze by\u0142o po zerowym oczywi\u015bcie) co dwie g\u0142owy to nie jedna i szybciej mo\u017cna wy\u0142apa\u0107 b\u0142\u0105d. B\u0142\u0105d to taki nowotw\u00f3r jest. Jak jest ma\u0142y, no dwie kom\u00f3rki, trzy linie kodu, to cyk skalpelem, dwa klikni\u0119cia, spacja i po k\u0142opocie. Jednak je\u015bli si\u0119 rozro\u015bnie, jak poczekamy dwa lata to ju\u017c b\u0119dzie nie lada operacja. A jak przetrwa pi\u0119tna\u015bcie lat, to ju\u017c nikt go nie ubije, tego buga, za to bug mo\u017ce ubi\u0107 produkt, czyli nosiciela. Po to robimy zreszt\u0105 code review \u2013 \u017ceby szybko bugi ubi\u0107. Jednak nic nie ubija buga szybciej, ni\u017c zauwa\u017cenie go w momencie pisania kodu. Do tego trzeba jednak pisa\u0107 kod we dw\u00f3jk\u0119.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"683\" src=\"https:\/\/kalkus.dev\/wp-content\/uploads\/2020\/10\/connect-20333_1920-1024x683.jpg\" alt=\"\" class=\"wp-image-1279\" srcset=\"https:\/\/kalkus.dev\/blog\/wp-content\/uploads\/2020\/10\/connect-20333_1920-1024x683.jpg 1024w, https:\/\/kalkus.dev\/blog\/wp-content\/uploads\/2020\/10\/connect-20333_1920-300x200.jpg 300w, https:\/\/kalkus.dev\/blog\/wp-content\/uploads\/2020\/10\/connect-20333_1920-768x512.jpg 768w, https:\/\/kalkus.dev\/blog\/wp-content\/uploads\/2020\/10\/connect-20333_1920-1536x1024.jpg 1536w, https:\/\/kalkus.dev\/blog\/wp-content\/uploads\/2020\/10\/connect-20333_1920.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Po trzecie kod jest jak podr\u0119cznik. Nikt nie lubi niezrozumia\u0142ych, be\u0142kotliwych ksi\u0105\u017cek, z kt\u00f3rych nie idzie si\u0119 dowiedzie\u0107 o co chodzi. Tak samo programi\u015bci nie lubi\u0105 kodu, kt\u00f3rego nie mo\u017cna zrozumie\u0107 po pierwszej lekturze, ale trzeba nad nim \u015bl\u0119cze\u0107 jak na wierszami Norwida. Jak mamy akurat Cypriana w zespole, to trzeba go okie\u0142zna\u0107, bo si\u0119 za p\u00f3\u0142 roku nie po\u0142apiemy i b\u0119dziemy j\u0119cze\u0107, \u017ce idea\u0142 naszego kodziku si\u0119gn\u0105\u0142 bruku. Oczywi\u015bcie code review da rad\u0119, ale mo\u017cna tam dyskutowa\u0107 dniami i sprintami, a we dw\u00f3jk\u0119 przy kawie i jednej klawiaturze jest szybciej.<\/p>\n\n\n\n<p>Po czwarte motywacja. Mia\u0142em w jednej pracy koleg\u0119, kt\u00f3ry opanowa\u0142 do mistrzostwa sztuk\u0119 zasypiania na siedz\u0105co. Oczywi\u015bcie trzeba by\u0107 empatycznym i jak kto\u015b ma akurat ma\u0142e dziecko albo problemy \u017cyciowe, to niech \u015bpi, na zdrowie, ale akurat \u00f3w koder by\u0142 do\u015b\u0107 m\u0142ody, bezdzietny i jego problemy polega\u0142y na grze do p\u00f3\u017ana na plejce. Generalnie ci\u0119\u017cko jest spa\u0107, jak kto\u015b siedzi przy naszym biurku. Ci\u0119\u017cko te\u017c ogl\u0105da\u0107 filmiki na YouTube, kupowa\u0107 na OtoMoto auto, a ju\u017c najci\u0119\u017cej wysy\u0142a\u0107 CV, bo i to podobno niekt\u00f3rzy robi\u0105. Programowanie w parach motywuje. Chcemy si\u0119 wykaza\u0107, nie mo\u017cemy si\u0119 obija\u0107 \u2013 dzia\u0142amy sprawniej. Dlatego te\u017c zreszt\u0105 trzeba stosowa\u0107 z umiarem, a nie osiem godzin dziennie, bo ka\u017cdy potrzebuje odrobiny samotno\u015bci w t\u0142umie openspace\u2019u przy w\u0142asnym biurku. Natomiast godzina, dwie, mo\u017ce trzy dziennie mog\u0105 by\u0107 zdrowo pobudzaj\u0105ce.<\/p>\n\n\n\n<p>Du\u017co zalet, m\u00f3wi\u0105c kr\u00f3tko. Czemu tak ma\u0142o popularna ta technika? S\u0105dz\u0119, \u017ce scrum ma tu co\u015b do rzeczy \u2013 nie mo\u017cna si\u0119 cho\u0107by o ile mi wiadomo przypisa\u0107 we dw\u00f3jk\u0119 do jednego zadania. R\u00f3wnie\u017c perspektywa nietechnicznego product ownera mo\u017ce by\u0107 negatywna \u2013 z pozoru we dw\u00f3jk\u0119 programi\u015bci zrobi\u0105 wi\u0119cej. Praktyka pokazuje, \u017ce zrobi\u0105 wi\u0119cej, ale bug\u00f3w, ale to ju\u017c ci\u0119\u017cko zauwa\u017cy\u0107 nie b\u0119d\u0105c na linii frontu. Wydaje si\u0119 tak\u017ce, \u017ce sami programi\u015bci cz\u0119sto nie przepadaj\u0105 za prac\u0105 w parach \u2013 boj\u0105 si\u0119 konfrontacji, nie chce im si\u0119 tak aktywnie sp\u0119dza\u0107 czasu, nie widz\u0105 takiej potrzeby, nie lubi\u0105 tego. W sumie przywykli\u015bmy wszyscy do pisania w pojedynk\u0119. Osobi\u015bcie jednak zach\u0119cam, gor\u0105co zach\u0119cam do programowania w parach. Daje to zaskakuj\u0105co wiele i zdecydowanie warto jest przynajmniej spr\u00f3bowa\u0107.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Programowanie w parach jest prostym i starym pomys\u0142em, kojarzonym z technikami zwinnymi, w szczeg\u00f3lno\u015bci z extreme programming. Posiada sporo zalet, a mimo to obecnie jest omal nieu\u017cywane w projektach zdominowanych przez scrum. Czy s\u0142usznie? Nie trzeba chyba pisa\u0107, \u017ce programowanie w parach polega na programowaniu w parach. Dw\u00f3ch programist\u00f3w siada przed jednym komputerem i razem [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1276,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[204,7],"tags":[],"_links":{"self":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/1272"}],"collection":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/comments?post=1272"}],"version-history":[{"count":6,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/1272\/revisions"}],"predecessor-version":[{"id":1292,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/1272\/revisions\/1292"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/media\/1276"}],"wp:attachment":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/media?parent=1272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/categories?post=1272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/tags?post=1272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}