{"id":209,"date":"2009-07-24T11:31:07","date_gmt":"2009-07-24T10:31:07","guid":{"rendered":"http:\/\/jaceksalacki.pl\/?p=209"},"modified":"2011-04-18T22:54:58","modified_gmt":"2011-04-18T21:54:58","slug":"agile-development-filozofia-programowania-zwinnego","status":"publish","type":"post","link":"https:\/\/jaceksalacki.pl\/index.php\/2009\/07\/24\/agile-development-filozofia-programowania-zwinnego\/","title":{"rendered":"Agile Development. Filozofia programowania zwinnego"},"content":{"rendered":"<p><a href=\"http:\/\/helion.pl\/ksiazki\/agile_development_filozofia_programowania_zwinnego_james_shore_shane_warden,agilde.htm\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" src=\"http:\/\/helion.pl\/okladki\/125x163\/agilde.jpg\" alt=\"Ok\u0142adka ksi\u0105\u017cki\" width=\"125\" height=\"163\" \/><\/a>Przyszed\u0142 czas na poruszenie temat\u00f3w bardziej zwi\u0105zanych z samym tworzeniem oprogramowania a nie tylko z samym opisem(modelowaniem) wymaga\u0144. Zaczniemy od om\u00f3wienia ksi\u0105\u017cki &#8222;Agile Development. Filozofia programowania zwinnego&#8221;. Dotyczy, jak tytu\u0142 wskazuje, modnych ostatnio zwinnych proces\u00f3w wytwarzania oprogramowania. Autorzy opisuj\u0105 metodyki agile w wydaniu Extreme Programming, chocia\u017c opowiadaj\u0105 tak\u017ce og\u00f3lnie o filozofii agile. <!--more--><\/p>\n<p>Ksi\u0105\u017cka podzielona jest z 3 cz\u0119\u015bci, pierwsza z nich m\u00f3wi o zasadach metodyk zwinnych, przyczynach i celu ich powstania, kilku istotnych zjawiskach dotycz\u0105cych wytwarzania oprogramowania oraz podstawowych ideach b\u0119d\u0105cych podstaw\u0105 ka\u017cdej metodyki agile. Na zako\u0144czenie tej cz\u0119\u015bci autorzy robi\u0105 kr\u00f3tkie wprowadzenie do XP, opisuj\u0105c cykl \u017cycia projektu, sk\u0142ad zespo\u0142u XP i role jakie pe\u0142ni\u0105 jego cz\u0142onkowie oraz przedstawiaj\u0105 swoj\u0105 propozycj\u0119 wprowadzenia XP. Pozwala to na p\u0142ynne przej\u015bcie do nast\u0119pnej cz\u0119\u015bci, czyli katalogu praktyk XP. Wszystkie zosta\u0142y pogrupowane w 5 g\u0142\u00f3wnych kategorii b\u0119d\u0105cych rozdzia\u0142ami, a ka\u017cdej z praktyk zosta\u0142 po\u015bwi\u0119cony odr\u0119bny podrozdzia\u0142. \u0141\u0105cznie opisano 37 praktyk XP. G\u0142\u00f3wne rozdzia\u0142y  rozpoczynaj\u0105 si\u0119 opisem wprawki, czyli sposobu przyzwyczajenia zespo\u0142u do omawianych praktyk. Ostatnia z cz\u0119\u015bci opowiada o doskonaleniu proces\u00f3w XP i osi\u0105ganiu mistrzostwa w ich stosowaniu. Jest zdecydowanie bardziej og\u00f3lna ni\u017c cz\u0119\u015b\u0107 druga, b\u0119d\u0105c raczej zbiorem esej\u00f3w, uwag i rozwa\u017ca\u0144 dotycz\u0105cych wytwarzania oprogramowania. Dostarcza wi\u0119c raczej wskaz\u00f3wek do kierunk\u00f3w w kt\u00f3re mo\u017cna si\u0119 uda\u0107 zamiast konkretnych \u015bcis\u0142ych rozwi\u0105za\u0144.<\/p>\n<p>Kluczow\u0105 cz\u0119\u015bci\u0105 ksi\u0105\u017cki s\u0105 oczywi\u015bcie prezentacje praktyk. Ocenie ich warto wi\u0119c po\u015bwi\u0119ci\u0107 troch\u0119 wi\u0119cej czasu. Jak ju\u017c wspomnia\u0142em, autorzy umie\u015bcili w ksi\u0105\u017cce a\u017c 37 praktyk, wykazuj\u0105c si\u0119 cz\u0119sto spor\u0105 inwencj\u0105 tw\u00f3rcz\u0105. Zosta\u0142y opisane 3 ca\u0142kowicie nowe praktyki, nie wyst\u0119puj\u0105ce w kanonicznym podr\u0119czniku do XP<sup class='footnote'><a href='#fn-209-1' id='fnref-209-1' onclick='return fdfootnote_show(209)'>1<\/a><\/sup> a kolejne 13 zosta\u0142o zidentyfikowanych (nazwanych), b\u0119d\u0105c albo technikami stosowanymi w rzeczywisto\u015bci, ale nie zawartymi w podstawowej wersji XP, albo wyprowadzonymi na zewn\u0105trz cz\u0119\u015bciami ju\u017c istniej\u0105cych standard\u00f3w dzia\u0142a\u0144. Om\u00f3wienie praktyk ma zawsze podobny schemat, sk\u0142adaj\u0105cy si\u0119 z wst\u0119pu z wyja\u015bnieniem \u201eo co w\u0142a\u015bciwie chodzi\u201d, d\u0142u\u017cszego om\u00f3wienia dzia\u0142ania praktyki oraz podsumowania z kr\u00f3tkim \u201efaq\u201d, uzyskiwanymi efektami, przeciwwskazaniami, innymi mo\u017cliwo\u015bciami i list\u0105 dalszych lektur.  Opis poszczeg\u00f3lnych praktyk zajmuje od kilku do g\u00f3ra kilkunastu stron. Autorzy opowiadaj\u0105 o zasadach z praktycznego, pragmatycznego punktu widzenia. Pos\u0142uguj\u0105 si\u0119 raczej prostym j\u0119zykiem, kt\u00f3ry powinien \u0142atwo dotrze\u0107 do ka\u017cdego. Czasem przedstawiaj\u0105 nawet kr\u00f3tkie opowiadania, przybli\u017caj\u0105ce spos\u00f3b dzia\u0142ania praktyk i problemy kt\u00f3re rozwi\u0105zuj\u0105. Jednak\u017ce, z powodu pewnej og\u00f3lno\u015bci, nie podaj\u0105 konkretnych technicznych rozwi\u0105za\u0144. Nie znajdziecie w tej ksi\u0105\u017cce np. \u015bcis\u0142ego przepisu jak zrobi\u0107 kontrol\u0119 wersji i system automatycznej kompilacji, ale dowiecie si\u0119 na zwr\u00f3ci\u0107 uwag\u0119 przy rozwi\u0105zywaniu tych problem\u00f3w, dostaniecie generalne wytyczne i wskaz\u00f3wki gdzie macie szuka\u0107 dalej, aby zastosowa\u0107 praktyk\u0119 w waszym konkretnym przypadku.<\/p>\n<p>Zdrowe i troch\u0119 zdystansowane podej\u015bcie do ca\u0142ego \u015bwiatka IT, chocia\u017c to ostatnie akurat nie do ko\u0144ca \u2013 to jest chyba najfajniejsze w tej ksi\u0105\u017cce. Klimat o kt\u00f3rym m\u00f3wi\u0119 mo\u017cna odczu\u0107 ju\u017c w pocz\u0105tkowych akapitach pierwszego rozdzia\u0142u, gdzie autorzy si\u0119 po prostu zbijaj\u0105 z system\u00f3w certyfikacji i przewiduj\u0105 pojawienie si\u0119  \u201eCertyfikowanych konsultant\u00f3w agile\u201d, co uwa\u017caj\u0105 za zaprzeczenie idei zwinnych metodologii. W tym samym rozdziale znajduje si\u0119 zdanie, kt\u00f3re ch\u0119tnie widzia\u0142bym w ka\u017cdym ksi\u0105\u017cce dotycz\u0105cej IT: \u201e(&#8230;) zwinne wytwarzanie oprogramowania nie jest uniwersalnym rozwi\u0105zaniem\u201d. Wed\u0142ug mnie \u015bwiadczy to o racjonalnym podej\u015bciu do omawianych zagadnie\u0144, umiej\u0119tno\u015bci krytycznego spojrzenia i zwyk\u0142ego my\u015blenia o tym co si\u0119 robi.<\/p>\n<p>Kolejnym plusem ksi\u0105\u017cki s\u0105 przedstawione rozwa\u017cania i uwagi dotycz\u0105ce celu budowy oprogramowania. W podr\u0119czniku opowiadaj\u0105cym o wytwarzaniu oprogramowania, istotne jest okre\u015blenie \u2013 po co w\u0142a\u015bciwie zajmujemy si\u0119 pisaniem tego kodu, do czego ma to ostatecznie prowadzi\u0107. Autorom uda\u0142o si\u0119 uj\u0105\u0107 istot\u0119 tego zagadnienia, chocia\u017c si\u0142\u0105 rzeczy efekt jest do\u015b\u0107 og\u00f3lny. Stwierdzili, \u017ce miar\u0105 powodzenia projektu nie jest zmieszczenie si\u0119 w zak\u0142adanych kosztach, czasie i specyfikacji lecz zrobienie w dobry spos\u00f3b, przy zadowoleniu uczestnik\u00f3w, czego\u015b po\u017cytecznego. Mo\u017ce brzmi to troch\u0119 enigmatycznie, ale opis w ksi\u0105\u017cce jest zdecydowanie bardziej rozbudowany. Przedstawione informacje skupiaj\u0105<em> <\/em>si\u0119 na praktykach a nie na zasadach, regu\u0142ach, warto\u015bciach i innych mambo-jambo typu \u201eBusiness people and developers do joint work\u201d. Takie has\u0142a fajnie brzmi\u0105 i ka\u017cdy oczywi\u015bcie si\u0119 z nimi zgodzi. Tylko jak je zrealizowa\u0107? W\u0142a\u015bnie ten problem jest kluczowym elementem ka\u017cdej metodyki \u2013 czyli odpowied\u017a na pytanie \u201ejak?\u201d a nie \u201eco?\u201d. W omawianej ksi\u0105\u017cce, autorzy post\u0119puj\u0105 do\u015b\u0107 rozs\u0105dnie: przedstawiaj\u0105 manifest agile, opowiadaj\u0105 o co w nim mniej-wi\u0119cej chodzi i przechodz\u0105 do konkret\u00f3w, prosto, bez zb\u0119dnego filozofowania \u201eczy to s\u0105 regu\u0142y, czy zasady czy co\u015b innego\u201d oraz \u201ejak m\u0105drze zapisa\u0107 \u017ce oprogramowanie ma by\u0107 dobrej jako\u015bci i spe\u0142nia\u0107 oczekiwania zamawiaj\u0105cych\u201d.<\/p>\n<p>Na koniec jeszcze drobna ale wa\u017cna zaleta ksi\u0105\u017cki &#8211; bibliografia i silne \u201epodpieranie si\u0119\u201d ni\u0105. Rzecz kt\u00f3rej w pracach naukowych na studiach nie docenia\u0142em, ale tu widz\u0119 istot\u0119 tego narz\u0119dzia &#8211; \u201echcesz wiedzie\u0107 wi\u0119cej \u2013 przeczytaj to i to\u201d. Do tego autorzy nie rzucaj\u0105 swoich stwierdze\u0144 tak po prostu tylko podpieraj\u0105 si\u0119 cytatami z innych ksi\u0105\u017cek, w kt\u00f3rych mo\u017cna znale\u017a\u0107 dow\u00f3d. Przyk\u0142adowo, m\u00f3wi\u0105c o wzro\u015bcie wydajno\u015bci przy programowaniu w parach wskazuj\u0105 na dokumentacj\u0119 bada\u0144, kt\u00f3re to potwierdzaj\u0105.<\/p>\n<p>W porz\u0105dku, po zachwyca\u0142em si\u0119 ksi\u0105\u017ck\u0105, teraz trzeba si\u0119 zbli\u017cy\u0107 do rzeczywisto\u015bci i wymieni\u0107 troch\u0119 wad. Pierwsza rzecz na kt\u00f3r\u0105 zwr\u00f3ci\u0142em uwag\u0119 to niezwyk\u0142y entuzjazm autor\u00f3w. Czytaj\u0105c ksi\u0105\u017ck\u0119, mo\u017cna odnie\u015b\u0107 wra\u017cenie, \u017ce w trakcie produkcji oprogramowania wszyscy si\u0119 kochaj\u0105, nie ma \u017cadnych zgrzyt\u00f3w, polityki, r\u00f3\u017cnic w celach i oczekiwaniach. Autorzy nawet nie zwracaj\u0105 na te sprawy uwagi, daj\u0105 za to przekaz \u2013 XP rozwi\u0105\u017ce wszystkie twoje problemy, jest fajne i elitarne, co prawda nie zawsze mo\u017ce zadzia\u0142a\u0107 ale si\u0119 tym nie przejmujmy. Brakuje mi tak\u017ce informacji o niekt\u00f3rych specyficznych problemach i wdro\u017ceniach Extreme Programming, np. zespo\u0142y pracuj\u0105ce w outsourcingu. Z drugiej strony w ksi\u0105\u017cce znalaz\u0142o si\u0119 troch\u0119 wydumanych, ma\u0142o konkretnych praktyk, kt\u00f3re s\u0105 w mojej opinii po prostu zb\u0119dne. Tu ma\u0142a dygresja \u2013 XP ma opini\u0119 bardzo rozbudowanej, \u015bcis\u0142ej (strict), wymagaj\u0105cej metodyki, sk\u0142adaj\u0105cej si\u0119 z wielu, cz\u0119sto wzajemnie powi\u0105zanych regu\u0142. I w\u0142a\u015bnie ta liczba spraw o kt\u00f3rych trzeba pami\u0119ta\u0107, ogranicza popularno\u015b\u0107 tej wersji proces\u00f3w agile. A tu autorzy dok\u0142adaj\u0105 kilkana\u015bcie nowych wytycznych, kt\u00f3re trzeba realizowa\u0107, o kt\u00f3rych trzeba pami\u0119ta\u0107. Jednocze\u015bnie wiele z nich nie jest w zasadzie istotna lub jest bardzo ma\u0142o konkretna. Dla przyk\u0142adu iteracje, ci\u0105g\u0142a integracja s\u0105 konkretne, nawet programowanie w parach jest konkretne, praktyki o nazwie \u201eefektywna praca\u201d czy \u201ewizja\u201d nie s\u0105 konkretne, s\u0105 raczej wype\u0142niaczami. Je\u017celi ju\u017c autorzy chcieli wspomnie\u0107 o niekt\u00f3rych problemach, jak 60-cio godzinny tydzie\u0144 pracy i wp\u0142yw takiego trybu pracy na wydajno\u015b\u0107, to mogli to opisa\u0107 w innej cz\u0119\u015bci, przyk\u0142adowo w informacjach na temat wymaganego \u015brodowiska i otoczenia. Z sposobem opisu praktyk wi\u0105\u017ce si\u0119 jeszcze jedna wada &#8211; brak zr\u00f3\u017cnicowania praktyk, brak wyr\u00f3\u017cnienia wa\u017cniejszych i mniej istotnych. Wszystkie s\u0105 przedstawione w identyczny spos\u00f3b, do tego w dziwnej wg mnie kolejno\u015bci. Autorzy zaczynaj\u0105 od najtrudniejszych z nich, typu programowania w parach, jednocze\u015bnie kluczowe do dzia\u0142ania XP, takie jak iteracje, ci\u0105g\u0142a integracja itp. znajduj\u0105 si\u0119 daleko dalej. Neofici agile mog\u0105 po prostu nie wiedzie\u0107 od czego zacz\u0105\u0107, jad\u0105c wed\u0142ug kolejno\u015bci zaproponowanej w ksi\u0105\u017cce, mog\u0105 rozpocz\u0105\u0107 od niew\u0142a\u015bciwej strony, zajmuj\u0105c si\u0119 na pocz\u0105tku programowaniem w parach, bez kt\u00f3rego mo\u017cna si\u0119 w zasadzie oby\u0107. Chocia\u017c  jest to flagowa praktyka XP, to jednak do zadzia\u0142ania tej metodyki wymagane s\u0105 inne regu\u0142y, dotycz\u0105ce przede wszystkim zarz\u0105dzania kodem. Pomimo sporej przyst\u0119pno\u015bci ksi\u0105\u017cki, informacje zawarte w ksi\u0105\u017cce mog\u0105 by\u0107 niewystarczaj\u0105ce przy wdra\u017caniu Extreme Programming na \u017cywym organizmie. Nie ob\u0119dzie si\u0119 albo bez du\u017cej liczby lektur uzupe\u0142niaj\u0105cych lub zatrudnienia specjalisty od XP. Zreszt\u0105, autorzy sami to zaznaczaj\u0105 wprost, wielokrotnie powtarzaj\u0105c \u201ehej, pami\u0119tajcie te\u017c \u017ce musicie zatrudni\u0107 coatcha\u201d, \u201eje\u017celi nie wiecie jak co\u015b zrobi\u0107 \u2013 spytajcie swojego coatcha\u201d, \u201epotrzebny wam kto\u015b z do\u015bwiadczeniem i wiedz\u0105, najlepiej coatch XP\u201d &#8211; co chwil\u0119 poruszaj\u0105 temat niezb\u0119dno\u015bci posiadania coatcha XP na stanie. C\u00f3\u017c nie jest to dziwne je\u017celi si\u0119 zauwa\u017cy autorzy S\u0104 coatchami XP \ud83d\ude42<\/p>\n<p>Ksi\u0105\u017cka zrobi\u0142a na mnie og\u00f3lnie dobre wra\u017cenie. Przedstawione wady nie s\u0105 na tyle istotne aby zakwestionowa\u0107 ewidentne zalety ksi\u0105\u017cki. Jedynym powa\u017cnym problemem jest optymistyczna wizj\u0105 dzia\u0142ania XP, z kt\u00f3r\u0105 si\u0119 nie zgadzam. Autorzy przedstawiaj\u0105 XP i wdra\u017canie tej metodyki zbyt prosto mamy zesp\u00f3\u0142, mamy \u201epok\u00f3j do zabawy\u201d, mamy podr\u0119cznik \u2013 wi\u0119c alleluja i do przodu, na pewno jako\u015b to b\u0119dzie. S\u0105dz\u0119 \u017ce pr\u00f3ba wdro\u017cenia zespo\u0142u w metodyk\u0119 XP od razu w ca\u0142o\u015bci, nawet gdy ludzie s\u0105 na to przygotowani i pozytywnie nastawieni, sko\u0144czy si\u0119 sporym chaosem, przynajmniej przez kilka pierwszych iteracji, a by\u0107 mo\u017ce kompletnym porzuceniem. Naprawd\u0119 trudno jest przestawi\u0107 si\u0119 na tak inn\u0105 filozofi\u0119 pracy, pami\u0119taj\u0105c jednocze\u015bnie o wszystkich 37 praktykach, pilnowaniu termin\u00f3w i jako\u015bci. Na pewno nale\u017cy tak\u017ce zwr\u00f3ci\u0107 uwag\u0119 na potencjalne problemy w dzia\u0142aniu tej metodyki, niestety trzeba poszuka\u0107<\/p>\n<p>Podr\u0119cznik jest bardzo dobry dla kogo\u015b, kto ju\u017c u\u017cywa jakiej\u015b wersji agile i chcia\u0142by sobie usystematyzowa\u0107 wiedz\u0119, by\u0107 mo\u017ce j\u0105 poszerzy\u0107 lub zobaczy\u0107 jak robi\u0105 to inni. Podoba mi si\u0119 spos\u00f3b przekazywania informacji oraz podej\u015bcie autor\u00f3w do tematu tworzenia oprogramowania. S\u0105dz\u0119, \u017ce ksi\u0105\u017cka b\u0119dzie przydatna nawet dla tych os\u00f3b, kt\u00f3re nie stosuj\u0105 \u017cadnej wersji agile ani nie planuj\u0105. Zawsze warto poszerzy\u0107 sobie troch\u0119 horyzonty.<\/p>\n<p>Ocena: 7,5\/10<\/p>\n<p><em> <\/em><\/p>\n<div class='footnotes' id='footnotes-209'>\n<div class='footnotedivider'><\/div>\n<ol>\n<li id='fn-209-1'> Kent Beck, \u201eExtreme Programming Explained\u201d <span class='footnotereverse'><a href='#fnref-209-1'>&#8617;<\/a><\/span><\/li>\n<\/ol>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Przyszed\u0142 czas na poruszenie temat\u00f3w bardziej zwi\u0105zanych z samym tworzeniem oprogramowania a nie tylko z samym opisem(modelowaniem) wymaga\u0144. Zaczniemy od om\u00f3wienia ksi\u0105\u017cki &#8222;Agile Development. Filozofia programowania zwinnego&#8221;. Dotyczy, jak tytu\u0142 wskazuje, modnych ostatnio zwinnych proces\u00f3w wytwarzania oprogramowania. Autorzy opisuj\u0105 metodyki agile w wydaniu Extreme Programming, chocia\u017c opowiadaj\u0105 tak\u017ce og\u00f3lnie o filozofii agile.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,13,3],"tags":[14,22],"class_list":["post-209","post","type-post","status-publish","format-standard","hentry","category-ksiazka","category-metodyki","category-programowanie","tag-agile","tag-extreme-programming"],"_links":{"self":[{"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/posts\/209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/comments?post=209"}],"version-history":[{"count":11,"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/posts\/209\/revisions"}],"predecessor-version":[{"id":276,"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/posts\/209\/revisions\/276"}],"wp:attachment":[{"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/media?parent=209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/categories?post=209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/tags?post=209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}