{"id":936,"date":"2020-05-08T09:25:57","date_gmt":"2020-05-08T09:25:57","guid":{"rendered":"https:\/\/kalkus.dev\/?p=936"},"modified":"2023-08-24T23:18:01","modified_gmt":"2023-08-24T23:18:01","slug":"developer-experience","status":"publish","type":"post","link":"https:\/\/kalkus.dev\/blog\/2020\/05\/08\/developer-experience\/","title":{"rendered":"User experience? Developer experience!"},"content":{"rendered":"\n<h3>Zatrudniasz si\u0119 jako programista. Dostajesz powolny komputer. Nie ma na nim oprogramowania, kt\u00f3re pozwala na wydajn\u0105 prac\u0119. Sporo stron w internecie jest zablokowanych. Nie mo\u017cesz wybra\u0107 sobie klawiatury ani myszy, krzes\u0142a te\u017c wszyscy maj\u0105 takie same. Brzmi znajomo?<\/h3>\n\n\n\n<h4><strong>5S<\/strong><\/h4>\n\n\n\n<p>Japonia posiada interesuj\u0105c\u0105 kultur\u0119. Estetyka, porz\u0105dek, pracowito\u015b\u0107 \u2013 to bez w\u0105tpienia ciekawy kraj. Jednym z jego wielkich sukces\u00f3w jest motoryzacja. Ameryka\u0144ski przemys\u0142 samochodowy &#8211; z legendarnym Detroit, z lini\u0105 produkcyjn\u0105 w fabrykach Forda \u2013 by\u0142 dum\u0105 Stan\u00f3w Zjednoczonych. Mimo wygranej wojny i lat do\u015bwiadcze\u0144, w latach 80 przegra\u0142 z Japo\u0144sk\u0105 motoryzacj\u0105, a <a href=\"https:\/\/pl.wikipedia.org\/wiki\/Toyota_Production_System\">System Produkcyjny Toyoty<\/a> wszed\u0142 do podr\u0119cznik\u00f3w organizacji i zarz\u0105dzania.<\/p>\n\n\n\n<p>Jednym z element\u00f3w Japo\u0144skiej kultury w tym obszarze jest 5S. Nie wchodz\u0105c w szczeg\u00f3\u0142y, <a href=\"https:\/\/pl.wikipedia.org\/wiki\/5S\">jest to organizacja miejsca pracy<\/a> polegaj\u0105ca m.in. na:<\/p>\n\n\n\n<ul><li>usuni\u0119ciu zb\u0119dnych przedmiot\u00f3w<\/li><li>ograniczeniu zb\u0119dnego ruchu i wysi\u0142ku pracownik\u00f3w<\/li><li>utrzymaniu stanowisk pracy w czysto\u015bci<\/li><\/ul>\n\n\n\n<p>Wdro\u017cenie tych zasad pomaga stworzy\u0107 bezpieczne i efektywne miejsce pracy. Nie trzeba m\u00f3wi\u0107, \u017ce pomaga to ca\u0142ej organizacji w utrzymaniu wydajno\u015bci \u2013 co istotne, bez zwi\u0119kszania wysi\u0142ku pracownik\u00f3w.<\/p>\n\n\n\n<h4><strong>Alcoa<\/strong><\/h4>\n\n\n\n<p>Alcoa to jeden z najwi\u0119kszych producent\u00f3w aluminium na \u015bwiecie. Ciekaw\u0105 histori\u0119 o firmie opisa\u0142 Charles Duhigg w Sile nawyku. Ot\u00f3\u017c swego czasu pojawi\u0142 si\u0119 w Alcoa nowy CEO \u2013 Paul O\u2019Neill. Po nominacji na stanowisko prezesa zaskoczy\u0142 udzia\u0142owc\u00f3w, bo w swoim przem\u00f3wieniu inauguracyjnym skupi\u0142 si\u0119 nie na wynikach, op\u0142acalno\u015bci biznesu, planach rozwoju, ale&#8230; na bezpiecze\u0144stwie pracownik\u00f3w. By\u0142o to jedyne, co poruszy\u0142. Zmniejszenie liczby wypadk\u00f3w przy pracy.<\/p>\n\n\n\n<p>O\u2019Neill zarz\u0105dza\u0142 firm\u0105 od 1987 do 1999 roku. W tym czasie warto\u015b\u0107 rynkowa firmy wzros\u0142a z 3 do ponad 27 miliard\u00f3w dolar\u00f3w, a doch\u00f3d netto wzr\u00f3s\u0142 z 200 milion\u00f3w do prawie p\u00f3\u0142tora miliarda.<\/p>\n\n\n\n<p>Czy te pieni\u0105dze Alcoa traci\u0142a na wypadkach przy pracy?<\/p>\n\n\n\n<p>Oczywi\u015bcie, \u017ce nie. Traci\u0142a je z powodu z\u0142ej, niedba\u0142ej, niechlujnej organizacji stanowisk pracy. Na tym, \u017ce by\u0142y nieprzemy\u015blane, nieergonomiczne i by\u0142y takie od lat z powodu z\u0142ych proces\u00f3w oraz komunikacji. O\u2019Neill wprowadzi\u0142 presj\u0119 na ulepszenie organizacji produkcji, bezpiecze\u0144stwo stanowiska pracy by\u0142o metryk\u0105 doskona\u0142o\u015bci. Jak wida\u0107 \u2013 skuteczn\u0105.<\/p>\n\n\n\n<h4><strong>Ci\u0105gle im ma\u0142o<\/strong><\/h4>\n\n\n\n<p>Tak, wiem, jeste\u015bmy roszczeniowi. Mamy game roomy, podnoszone biurka, dwa monitory i owocowe czwartki, ale ci\u0105gle nam ma\u0142o \u2013 snujemy si\u0119 po kolejnych firmach w poszukiwaniu B\u00f3g jeden wie czego, ale pewnie pieni\u0119dzy, kt\u00f3rych ci\u0105gle nam ma\u0142o.<\/p>\n\n\n\n<p>Mo\u017ce tak jest.<\/p>\n\n\n\n<p>Co jednak, je\u015bli nie?<\/p>\n\n\n\n<p>Co je\u015bli jest jaka\u015b g\u0142\u0119bsza przyczyna migracji koder\u00f3w?<\/p>\n\n\n\n<h4><strong>Stanowisko pracy programisty<\/strong><\/h4>\n\n\n\n<p>W programowaniu du\u017cy nacisk k\u0142adzie si\u0119 na optymalizacj\u0119. Motywem przewodnim tej bran\u017cy od lat jest efektywno\u015b\u0107. Nowe frameworki, kt\u00f3re pozwol\u0105 zrobi\u0107 to samo szybciej. Szybsze procesory, wi\u0119cej pami\u0119ci, pot\u0119\u017cniejsze dyski. Algorytmy, kt\u00f3re licz\u0105 sprawniej, lepiej ni\u017c starsze. Karty graficzne, kt\u00f3re generuj\u0105 wi\u0119cej klatek na sekund\u0119. Bran\u017ca technologiczna oparta jest o wiar\u0119 w to, \u017ce da si\u0119 lepiej i szybciej, taniej i sprawniej.<\/p>\n\n\n\n<p>Programista, kiedy siada do pracy, pr\u00f3buje j\u0105 sobie zoptymalizowa\u0107. Je\u015bli musi wykonywa\u0107 powtarzaln\u0105 czynno\u015b\u0107 \u2013 napisze skrypt. Je\u015bli co\u015b zajmuje du\u017co czasu \u2013 pomy\u015bli jak zrobi\u0107 to szybciej, innym sposobem.<\/p>\n\n\n\n<p>Co wi\u0119c mo\u017ce by\u0107 bardziej irytuj\u0105cego dla programisty od sytuacji, w kt\u00f3rej co\u015b spowalnia jego prac\u0119, a jednocze\u015bnie nie da si\u0119 obej\u015b\u0107, usun\u0105\u0107, poprawi\u0107?<\/p>\n\n\n\n<p>Tych mniejszych lub wi\u0119kszych przeszk\u00f3d na drodze do wydajno\u015bci, w wielu miejscach pracy, jest zaskakuj\u0105co du\u017co. Oto kilka przyk\u0142ad\u00f3w:<\/p>\n\n\n\n<ul><li>komputer, na kt\u00f3rym programujemy ma za ma\u0142o pami\u0119ci \/ za wolny procesor \/ za ma\u0142y dysk<\/li><li>internet w firmie dzia\u0142a powoli, np. przez proxy<\/li><li>oprogramowanie antywirusowe dramatycznie spowalnia komputer (cho\u0107by od czasu do czasu)<\/li><li>polityka firmy blokuje pewne strony (np. youtube, gdzie mo\u017cemy znale\u017a\u0107 tutorial do rozwi\u0105zania problemu)<\/li><li>przyznanie praw dost\u0119pu przeci\u0105ga si\u0119 w niesko\u0144czono\u015b\u0107 (np. by wykona\u0107 zadanie potrzebujemy dost\u0119pu do systemu x, ale musi je zaakceptowa\u0107 trzech manager\u00f3w, a to trwa trzy tygodnie)<\/li><li>firma nie kupuje pewnych narz\u0119dzi albo robi to bardzo powoli (np. potrzeba jakiego\u015b narz\u0119dzia na za tydzie\u0144, ale akceptacja i zam\u00f3wienie zajmuje trzy miesi\u0105ce)<\/li><li>naprawa zepsutego sprz\u0119tu trwa bardzo d\u0142ugo (osobi\u015bcie raz czeka\u0142em dwa tygodnie na napraw\u0119 mojego firmowego komputera)<\/li><\/ul>\n\n\n\n<p>Pami\u0119tam pewnego managera, kt\u00f3ry dziwi\u0142 si\u0119, jak to jest mo\u017cliwe, \u017ce startupy s\u0105 wydajniejsze? &#8211; przecie\u017c maj\u0105 nieraz mniejsze bud\u017cety, czyli teoretycznie gorszych pracownik\u00f3w, a jednak dostarczaj\u0105 szybciej. Z mojej praktyki wynika, \u017ce to w\u0142a\u015bnie narzut organizacyjny zabija efektywno\u015b\u0107&#8230;<\/p>\n\n\n\n<h4><strong>Skupienie<\/strong><\/h4>\n\n\n\n<p>Poza czysto technicznym aspektem, jakim jest wydajno\u015b\u0107 sprz\u0119tu i dost\u0119pno\u015b\u0107 narz\u0119dzi warto jednak pami\u0119ta\u0107 r\u00f3wnie\u017c o ergonomii miejsca pracy programisty. W jej sk\u0142ad wchodz\u0105 zar\u00f3wno wygodne, dostosowane do konkretnej osoby krzes\u0142o, czy klawiatura, jak i otoczenie.<\/p>\n\n\n\n<p>W wielu firmach kupuje si\u0119 kilkaset takich samych krzese\u0142, biurek, monitor\u00f3w, klawiatur i przydziela ka\u017cdemu nowemu programi\u015bcie. To zrozumia\u0142e. Stan tych narz\u0119dzi jest zreszt\u0105 zazwyczaj bardzo dobry. Jest jednak cz\u0119\u015b\u0107 os\u00f3b &#8211; mo\u017ce niskich, mo\u017ce oty\u0142ych, mo\u017ce wysokich albo czu\u0142ych w jakim\u015b sensie &#8211; kt\u00f3rym taki standard b\u0119dzie utrudnia\u0142 \u017cycie. B\u0119dzie ich bola\u0142 kark albo nadgarstki, b\u0119d\u0105 ich bola\u0142y oczy. Trudno wtedy o najwa\u017cniejsz\u0105 rzecz w pracy programisty \u2013 skupienie.<\/p>\n\n\n\n<p>Programista, je\u015bli nie mo\u017ce si\u0119 skupi\u0107, trwoni pieni\u0105dze firmy. Skupienie za\u015b nie jest tak \u0142atwe jak przyj\u015bcie do biura. Rozmowni koledzy, liczne spotkania w trakcie dnia, niewygodne krzes\u0142o, zapach ryby atakuj\u0105cy nas z biurowej kuchni&#8230; wszystko to mo\u017ce zburzy\u0107 delikatn\u0105 materi\u0119 flow.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" width=\"958\" height=\"1024\" src=\"https:\/\/kalkus.dev\/wp-content\/uploads\/2020\/05\/flow2.png\" alt=\"\" class=\"wp-image-947\" srcset=\"https:\/\/kalkus.dev\/blog\/wp-content\/uploads\/2020\/05\/flow2.png 958w, https:\/\/kalkus.dev\/blog\/wp-content\/uploads\/2020\/05\/flow2-281x300.png 281w, https:\/\/kalkus.dev\/blog\/wp-content\/uploads\/2020\/05\/flow2-768x821.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/figure><\/div>\n\n\n\n<h4><strong>DX<\/strong><\/h4>\n\n\n\n<p>User experience sta\u0142o si\u0119 g\u0142o\u015bn\u0105 ide\u0105. Na tyle g\u0142o\u015bn\u0105, \u017ce specjali\u015bci projektuj\u0105cy interfejsy wygodne dla u\u017cytkownika zago\u015bcili w wielu firmach tworz\u0105cych oprogramowanie. Ka\u017cdy dzi\u015b wie ju\u017c, \u017ce ergonomia aplikacji jest wa\u017cna.<\/p>\n\n\n\n<p>Analogicznie, nale\u017ca\u0142oby stworzy\u0107 ide\u0119 DX \u2013 developer experience. Im gorszy, tym wi\u0119cej pieni\u0119dzy utonie w projekcie, a to co powstanie mo\u017ce okaza\u0107 si\u0119 niewarte wysi\u0142ku. Im lepszy tym mniejsza rotacja w zespole, wydajno\u015b\u0107 i motywacja programist\u00f3w, mniej b\u0142\u0119d\u00f3w, a wi\u0119cej zysku.<\/p>\n\n\n\n<p>Za zal\u0105\u017cek DX uzna\u0107 mo\u017cna s\u0142ynny <a href=\"https:\/\/www.joelonsoftware.com\/2000\/08\/09\/the-joel-test-12-steps-to-better-code\/\">test Joela<\/a> \u2013 list\u0119 punkt\u00f3w, jakie spe\u0142nia proces rozwoju oprogramowania. Im wi\u0119cej, tym on dojrzalszy, ale r\u00f3wnie\u017c przyjemniejszy dla programist\u00f3w uczestnicz\u0105cych w projekcie&#8230;<\/p>\n\n\n\n<p>Staraj\u0105c si\u0119 \u201edopie\u015bci\u0107\u201d koder\u00f3w warto wyj\u015b\u0107 poza standardy. Nie musz\u0105 to by\u0107 du\u017ce koszty. Zyski za\u015b i owszem.&nbsp;<\/p>\n\n\n\n<p>Na koniec przypomnijmy, \u017ce i Microsoft nigdy nie by\u0142 oboj\u0119tny na developer\u00f3w&#8230;<\/p>\n\n\n\n<center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/Vhh_GeBPOhs\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\"><\/iframe><\/center>\n","protected":false},"excerpt":{"rendered":"<p>Zatrudniasz si\u0119 jako programista. Dostajesz powolny komputer. Nie ma na nim oprogramowania, kt\u00f3re pozwala na wydajn\u0105 prac\u0119. Sporo stron w internecie jest zablokowanych. Nie mo\u017cesz wybra\u0107 sobie klawiatury ani myszy, krzes\u0142a te\u017c wszyscy maj\u0105 takie same. Brzmi znajomo? 5S Japonia posiada interesuj\u0105c\u0105 kultur\u0119. Estetyka, porz\u0105dek, pracowito\u015b\u0107 \u2013 to bez w\u0105tpienia ciekawy kraj. Jednym z jego [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":946,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[103,204],"tags":[105,146,148,136,147,144,104,145,139],"_links":{"self":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/936"}],"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=936"}],"version-history":[{"count":11,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/936\/revisions"}],"predecessor-version":[{"id":966,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/936\/revisions\/966"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/media\/946"}],"wp:attachment":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/media?parent=936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/categories?post=936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/tags?post=936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}