{"id":1339,"date":"2020-12-09T16:12:57","date_gmt":"2020-12-09T16:12:57","guid":{"rendered":"https:\/\/kalkus.dev\/?p=1339"},"modified":"2023-08-24T23:16:43","modified_gmt":"2023-08-24T23:16:43","slug":"programiscie-zawsze-wiatr-w-oczy","status":"publish","type":"post","link":"https:\/\/kalkus.dev\/blog\/2020\/12\/09\/programiscie-zawsze-wiatr-w-oczy\/","title":{"rendered":"Programi\u015bcie zawsze wiatr w oczy"},"content":{"rendered":"\n<h4>Zarabiaj\u0105 te 15k, w pracy si\u0119 nie spoc\u0105 i co oni wiedz\u0105 o \u017cyciu\u2026 Poszliby do prawdziwej roboty, wstali o czwartej rano, wymrozili \u0142apy, to by dopiero zrozumieli. I jeszcze narzekaj\u0105. \u017be Fifa z zesz\u0142ego roku, \u017ce owocowe czwartki w pandemii nie wje\u017cd\u017caj\u0105 pod drzwi home office, \u017ce rekruterka pomyli\u0142a im imi\u0119\u2026 Ech.<\/h4>\n\n\n\n<p>Ja wiem, ja wiem, \u017ce nie mamy prawa narzeka\u0107. Kto jak kto, ale nie my, programi\u015bci. Jednak narzekanie to nasz sport narodowy. P\u0119k\u0142bym nie narzekaj\u0105c od czasu do czasu. Chcecie bym p\u0119k\u0142?<\/p>\n\n\n\n<h4>Continuous deployment<\/h4>\n\n\n\n<p>O Jezu, jak mia\u0142o by\u0107 pi\u0119knie! Deploye mia\u0142y si\u0119 robi\u0107 same, z\u0142y kod nie wchodzi\u0107 na produkcj\u0119, bo testy automatyczne. A w og\u00f3le to b\u0119dziemy deployowa\u0107 trzy razy dziennie na produkcj\u0119, bo przecie\u017c w razie czego naprawimy za 5 minut.<\/p>\n\n\n\n<p>Srali muchy b\u0119dzie wiosna, trawa po kolana ros\u0142a!<\/p>\n\n\n\n<p>Skonfigurowanie continuous deploymentu dla projektu legacy rozwijanego od 10 lat przypomina zadanie pytania na StackOverflow. Niby mo\u017cna. Wydawa\u0107 by si\u0119 nawet mog\u0142o, \u017ce to dobry pomys\u0142. Jednak ilo\u015b\u0107 pu\u0142apek, w kt\u00f3re mo\u017cemy wpa\u015b\u0107 sprawia, \u017ce z ka\u017cd\u0105 kolejn\u0105 godzin\u0105 wykonywania tej roboty tracimy zapa\u0142. Co chwila i coraz szybciej spadaj\u0105 nowe klocki w tej uk\u0142adance, a my nie nad\u0105\u017camy ich uk\u0142ada\u0107. Tetris. Wygra\u0142 kto\u015b w to kiedy\u015b?<\/p>\n\n\n\n<p>Testy automatyczne \u2013 wspania\u0142o\u015b\u0107. Mokry sen in\u017cyniera oprogramowania. Tyle tylko, \u017ce jako\u015b nikomu si\u0119 ich nie chce pisa\u0107, a nawet jak chce to okazuje si\u0119, \u017ce aby si\u0119 wszystko trzyma\u0142o kupy nie wystarcz\u0105 szybkie testy jednostkowe, ale powolne integracyjne. I wtedy na zako\u0144czenie builda czekamy tyle, \u017ce i trzy stoliki do pi\u0142karzyk\u00f3w oraz pi\u0119\u0107 konsol nie roz\u0142aduje kolejki.<\/p>\n\n\n\n<p>Deploye na produkcj\u0119 trzy razy dziennie \u2013 to ju\u017c by\u0142a obietnica taka, \u017ce troch\u0119 nie wierzyli\u015bmy od pocz\u0105tku. I s\u0142usznie. Albowiem jak pisa\u0142 poeta \u2013<em> nie uda\u0142o si\u0119 oddzieli\u0107 dok\u0142adnie kodu od bugu, i wchodzi\u0142 na produkcj\u0119 z nutk\u0105 fakapu i commitem b\u0142\u0119du. <\/em>Poza tym proponuj\u0119 przekona\u0107 kogokolwiek w bankowo\u015bci do wdro\u017ce\u0144 co trzy godziny.<\/p>\n\n\n\n<h4>Chmura<\/h4>\n\n\n\n<p>B\u0119dziemy sobie konfigurowa\u0107 infrastruktur\u0119! Oh yes! Po co czeka\u0107 na to a\u017c admini zrobi\u0105 nam serwer. Klikniemy trzy razy i\u2026 mamy faktur\u0119 na 50 tysi\u0119cy euro!? Bo Marek zapomnia\u0142 wy\u0142\u0105czy\u0107 te instancje, a potem si\u0119 zwolni\u0142 i nikt o nich nie wiedzia\u0142? Przecie\u017c to wi\u0119cej ni\u017c 3 jego pensje. Olaboga.<\/p>\n\n\n\n<p>Albo na przyk\u0142ad chcemy mie\u0107 chmur\u0119, ale prywatn\u0105, bo mamy wra\u017cliwe dane. Oczywi\u015bcie deweloperzy b\u0119d\u0105 mogli sobie sami wnioskowa\u0107 o zasoby, ale \u017ceby niekt\u00f3re z nich utworzy\u0107 b\u0119dzie trzeba z\u0142o\u017cy\u0107 wniosek w ServiceNow z SLA 10 dniowym. Na reszt\u0119 na\u0142o\u017cymy korpo ograniczenia, \u017ceby przypadkiem bitcoin\u00f3w nie kopali sobie na dev instancjach, wi\u0119c b\u0119dzie wszystko dzia\u0142a\u0107 wolniej ni\u017c przed chmur\u0105. Ale elastyczno\u015b\u0107 b\u0119dzie. <em>Quid pro quo<\/em><strong>.<\/strong><\/p>\n\n\n\n<h4>Agile<\/h4>\n\n\n\n<p>Nie mo\u017cemy planowa\u0107 przez dwa tygodnie rocznego projektu. W tym czasie biznes mo\u017ce si\u0119 zmieni\u0107, a my musimy sta\u0107 si\u0119 zwinni i adaptowa\u0107. B\u0119dziemy dostarcza\u0107 co dwa tygodnie nowe funkcjonalno\u015bci. B\u0119dziemy codziennie m\u00f3wi\u0107 nad czym pracujemy. B\u0119dziemy zmotywowanym efektywnym zespo\u0142em i b\u0119dziemy dostarcza\u0107 warto\u015b\u0107 biznesow\u0105.<\/p>\n\n\n\n<p>Wi\u0119c m\u00f3wimy co rano\u2026 robi\u0142em to samo co wczoraj i dzisiaj b\u0119d\u0119 ko\u0144czy\u0142, a poza tym to by\u0142em na spotkaniu p\u00f3\u0142 dnia.<\/p>\n\n\n\n<center><figure class=\"wp-block-embed-youtube aligncenter wp-block-embed is-type-rich is-provider-embed-handler wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Stand-up programist\u00f3w\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/xdqAgYP113M?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure><\/center>\n\n\n\n<p>Planowa\u0107 przez dwa tygodnie rocznego projektu nie mo\u017cemy, ale planowa\u0107 przez cztery godziny dwutygodniowy sprint to ju\u017c jak najbardziej. Po trzech miesi\u0105cach okazuje si\u0119, \u017ce jest reorganizacja i wszystko co zrobili\u015bmy idzie do piachu, wi\u0119c zaczynamy od nowa. Oczywi\u015bcie nadal jeste\u015bmy zmotywowanym i efektywnym zespo\u0142em. W ko\u0144cu co dwa tygodnie robimy demo. Ostatnio pokazali\u015bmy nowy przycisk na formularzu. Biznes by\u0142 pod wra\u017ceniem.<\/p>\n\n\n\n<h4>Podsumowanie<\/h4>\n\n\n\n<p>Oczywi\u015bcie nie jest tak, \u017ce agile, chmura, czy continuous deployment s\u0105 same w sobie z\u0142ymi pomys\u0142ami. Wr\u0119cz przeciwnie, wynikaj\u0105 z historycznych uwarunkowa\u0144 i rozwi\u0105zuj\u0105 dawne problemy. Dzi\u015b natomiast, nie pami\u0119tamy ju\u017c bol\u0105czek wczorajszych, za to doskwieraj\u0105 nam dzisiejsze. Przyznam jednak, \u017ce martwi mnie do\u015b\u0107 mocno jak pewne wspania\u0142e pomys\u0142y ulegaj\u0105 wypaczeniu w praktyce. Rozwi\u0105zania chmurowe potrafi\u0105 naprawd\u0119 usprawni\u0107 prac\u0119 programisty, ale ich natura wymaga sporego zakresu swobody, kt\u00f3r\u0105 cz\u0119sto korporacyjne \u015brodowisko sprowadza do minimum. Odbiera to czasami sens ca\u0142ej transformacji. Staj\u0105 si\u0119 one tylko zmianami sterowanymi mod\u0105, trendami. Wszyscy maj\u0105 chmur\u0119, mam i ja!<\/p>\n\n\n\n<p>Podobnie z Agile. W niekt\u00f3rych, szczeg\u00f3lnie mniejszych organizacjach, widywa\u0142em ducha zwinno\u015bci. My\u015blano tam jak zrobi\u0107 co\u015b pro\u015bciej, jak implementowa\u0107 szybko, bez zb\u0119dnej komplikacji i narzutu. Natomiast w du\u017cych projektach i firmach by\u0142o z tym o wiele, wiele gorzej. Du\u017co wi\u0119cej za to m\u00f3wi\u0142o si\u0119 o samej zwinno\u015bci. Praktyka jednak by\u0142a od niej du\u017co dalej.<\/p>\n\n\n\n<p>Continuous deployment to natomiast przesadne oczekiwanie. Sam proces automatycznych wdro\u017ce\u0144, w po\u0142\u0105czeniu z testami jest niezwykle korzystny, pomaga nie tylko unika\u0107 b\u0142\u0119d\u00f3w, ale te\u017c chroni przed niebezpiecznymi r\u00f3\u017cnicami w \u015brodowiskach poszczeg\u00f3lnych developer\u00f3w. Natomiast obiecywanie biznesowi, \u017ce b\u0119dziemy wdra\u017ca\u0107 na produkcj\u0119 kilka razy dziennie to ju\u017c u\u0142a\u0144ska fantazja, trzeba przyzna\u0107. Przynajmniej w wi\u0119kszo\u015bci firm.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zarabiaj\u0105 te 15k, w pracy si\u0119 nie spoc\u0105 i co oni wiedz\u0105 o \u017cyciu\u2026 Poszliby do prawdziwej roboty, wstali o czwartej rano, wymrozili \u0142apy, to by dopiero zrozumieli. I jeszcze narzekaj\u0105. \u017be Fifa z zesz\u0142ego roku, \u017ce owocowe czwartki w pandemii nie wje\u017cd\u017caj\u0105 pod drzwi home office, \u017ce rekruterka pomyli\u0142a im imi\u0119\u2026 Ech. Ja wiem, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1347,"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\/1339"}],"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=1339"}],"version-history":[{"count":5,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/1339\/revisions"}],"predecessor-version":[{"id":1357,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/1339\/revisions\/1357"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/media\/1347"}],"wp:attachment":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/media?parent=1339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/categories?post=1339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/tags?post=1339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}