{"id":213,"date":"2019-09-08T13:31:47","date_gmt":"2019-09-08T13:31:47","guid":{"rendered":"https:\/\/kalkus.dev\/?p=213"},"modified":"2023-08-24T23:30:18","modified_gmt":"2023-08-24T23:30:18","slug":"komunikacja-asynchroniczna","status":"publish","type":"post","link":"https:\/\/kalkus.dev\/blog\/2019\/09\/08\/komunikacja-asynchroniczna\/","title":{"rendered":"Komunikacja asynchroniczna"},"content":{"rendered":"\n<p>Kiedy my\u015blimy o zespole programist\u00f3w, a konkretnie o jego wydajno\u015bci &#8211; przychodzi nam na my\u015bl zapewne jego do\u015bwiadczenie, motywacja, czy uzdolnienia. Tymczasem spos\u00f3b w jaki porozumiewaj\u0105 si\u0119 cz\u0142onkowie zespo\u0142u mo\u017ce zaoszcz\u0119dzi\u0107 lub roztrwoni\u0107 znacz\u0105ce ilo\u015bci czasu.<\/p>\n\n\n\n<p>Komunikacj\u0119 w zespole mo\u017cna rozr\u00f3\u017cni\u0107 na synchroniczn\u0105 i asynchroniczn\u0105. Pierwsza oznacza, \u017ce nadawca i odbiorca wiadomo\u015bci musz\u0105 w tym samym czasie skupi\u0107 swoj\u0105 uwag\u0119. Drugi rodzaj pozwala na odpowied\u017a po pewnym czasie.<\/p>\n\n\n\n<p><strong>Dominuj\u0105cy rodzaj komunikacji w zespole deweloperskim ma fundamentalne znaczenie dla jego wydajno\u015bci.<\/strong><\/p>\n\n\n\n<p>Je\u015bli zesp\u00f3\u0142 komunikuje si\u0119 synchronicznie, to ka\u017cda rzecz wymagaj\u0105ca wyja\u015bnienia rozprasza programist\u00f3w. Oderwanie dewelopera od kodu, cho\u0107by na pi\u0119\u0107 minut, rujnuje jego skupienie i obni\u017ca produktywno\u015b\u0107.<\/p>\n\n\n\n<p>Przyk\u0142ady komunikacji synchronicznej:<\/p>\n\n\n\n<ul><li>programista czego\u015b nie wie i potrzebuje zada\u0107 pytanie, wstaje, idzie do biurka kolegi i pyta<\/li><li>product owner odpowiada na pytania podczas regularnych spotka\u0144, gdzie omawiane s\u0105 po kolei w\u0105tpliwo\u015bci r\u00f3\u017cnych os\u00f3b<\/li><li>tester nie wie jak przetestowa\u0107 zadanie, podchodzi do programisty i pyta<\/li><li>programista potrzebuje pomocy w debugowaniu, podchodzi do pierwszego z brzegu kolegi i prosi o pomoc<\/li><\/ul>\n\n\n\n<p>Marnujemy w ten spos\u00f3b du\u017co czasu i energii. Z pozoru jest \u0142atwiej &#8211; nie musimy czeka\u0107 na pomoc, mo\u017cemy om\u00f3wi\u0107 co\u015b na \u017cywo, wydawa\u0107 by si\u0119 mog\u0142o bardziej dog\u0142\u0119bnie, a jednak&#8230; podczas spotka\u0144 g\u0142\u00f3wnie czekamy na swoj\u0105 kolej, w trakcie pracy przy biurku wsp\u00f3\u0142pracownicy przerywaj\u0105 nam flow.<\/p>\n\n\n\n<p>Komunikacja asynchroniczna dla sporej ilo\u015bci os\u00f3b jest nieintuicyjna, ma jednak ma wiele zalet:<\/p>\n\n\n\n<ul><li>pozwala osi\u0105ga\u0107 d\u0142ugie okresy skupienia<\/li><li>pozostawia pisemny \u015blad, do kt\u00f3rego mo\u017cna si\u0119 odwo\u0142a\u0107, kt\u00f3ry mo\u017cna przeszukiwa\u0107 po jakim\u015b czasie<\/li><li>pozwala udziela\u0107 bardziej przemy\u015blanych, szczeg\u00f3\u0142owych odpowiedzi na pytania<\/li><\/ul>\n\n\n\n<p>O ile dla pracownik\u00f3w &#8220;z biznesu&#8221; asynchroniczno\u015b\u0107 mo\u017ce wydawa\u0107 si\u0119 dziwna, o tyle dla programist\u00f3w powinna by\u0107 oczywisto\u015bci\u0105. Ka\u017cdy przecie\u017c wie, \u017ce ponowne za\u0142adowanie kontekstu zajmuje czas, \u017ce czekanie na odpowied\u017a serwera blokuje wykonanie programu. Mimo to &#8211; w realnym \u017cyciu cz\u0119sto zdarza nam si\u0119 o tych zasadach zapomina\u0107.<\/p>\n\n\n\n<p>Przyk\u0142ady komunikacji asynchronicznej:<\/p>\n\n\n\n<ul><li>product owner odpowiada na pytania mailowo, nie natychmiast, ale sprawnie<\/li><li>tester zamiast pokazywa\u0107 programistom problemy opisuje je s\u0142ownie albo nagrywa filmy pokazuj\u0105ce b\u0142\u0119dy<\/li><li>programista maj\u0105cy pytanie zadaje je na slacku lub mailowo, a osoby z zespo\u0142u w momencie, gdy nie potrzebuj\u0105 skupienia odpowiadaj\u0105 mu<\/li><\/ul>\n\n\n\n<p>Najbardziej efektywne zespo\u0142y, w jakich mia\u0142em przyjemno\u015b\u0107 pracowa\u0107 komunikowa\u0142y si\u0119 w du\u017cym stopniu asynchronicznie. Analogicznie &#8211; najbardziej niewydajne, omawia\u0142y godzinami na spotkaniach w du\u017cych grupach kwestie, kt\u00f3re mog\u0142y zosta\u0107 om\u00f3wione w e-mailu.<\/p>\n\n\n\n<p>Warto pochyli\u0107 si\u0119 nad sposobem w jaki organizujemy sobie prac\u0119 i dostrzec wzorce, a nast\u0119pnie zastanowi\u0107 si\u0119, czy nie sabotujemy w\u0142asnej produktywno\u015bci z\u0142ymi praktykami.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kiedy my\u015blimy o zespole programist\u00f3w, a konkretnie o jego wydajno\u015bci &#8211; przychodzi nam na my\u015bl zapewne jego do\u015bwiadczenie, motywacja, czy uzdolnienia. Tymczasem spos\u00f3b w jaki porozumiewaj\u0105 si\u0119 cz\u0142onkowie zespo\u0142u mo\u017ce zaoszcz\u0119dzi\u0107 lub roztrwoni\u0107 znacz\u0105ce ilo\u015bci czasu. Komunikacj\u0119 w zespole mo\u017cna rozr\u00f3\u017cni\u0107 na synchroniczn\u0105 i asynchroniczn\u0105. Pierwsza oznacza, \u017ce nadawca i odbiorca wiadomo\u015bci musz\u0105 w tym [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[204,7],"tags":[40],"_links":{"self":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/213"}],"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=213"}],"version-history":[{"count":5,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/213\/revisions"}],"predecessor-version":[{"id":271,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/213\/revisions\/271"}],"wp:attachment":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/media?parent=213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/categories?post=213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/tags?post=213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}