{"id":93,"date":"2017-02-28T18:10:02","date_gmt":"2017-02-28T17:10:02","guid":{"rendered":""},"modified":"2018-11-05T19:56:15","modified_gmt":"2018-11-05T18:56:15","slug":"ked-komplexnost-zabija","status":"publish","type":"post","link":"https:\/\/spireng.sk\/en\/ked-komplexnost-zabija\/","title":{"rendered":"Ke\u010f komplexnos\u0165 zab\u00edja"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"imgp_img\" style=\"float: left; margin: 2px 5px;\" src=\"\/sites\/default\/files\/imagepicker\/1\/s54adf6ds54.jpg\" alt=\"Obr\u00e1zok\" width=\"180\" height=\"260\" \/>V ktoromsi predch\u00e1dzaj\u00facom blogu som nap\u00edsal, \u017ee komplexnos\u0165 v softv\u00e9rov\u00fdch projektoch je ako cholesterol u \u013eud\u00ed. Neprich\u00e1dza odrazu a vo ve\u013ekom, ale postupne sa gram po grame naba\u013euje a\u017e jedn\u00e9ho d\u0148a je u\u017e neskoro. Nejako takto to niekedy vyzer\u00e1 v softv\u00e9rov\u00fdch projektoch. Denne prich\u00e1dzaj\u00fa zmeny a ak sa robia bez toho, aby sa uv\u00e1\u017eil ich \u0161ir\u0161\u00ed kontext a urobia sa len tak, aby to fungovalo, sk\u00f4r alebo nesk\u00f4r za\u010dne by\u0165 syst\u00e9m menej a menej stabiln\u00fd, ale hlavne omnoho hor\u0161ie udr\u017eiavate\u013en\u00fd. V \u010dase, ke\u010f som t\u00fato my\u0161lienku nap\u00edsal, som ani netu\u0161il, \u017ee n\u00e1jdem knihu, ktor\u00e1 dokonale rozpitv\u00e1 do posledn\u00e9ho detailu t\u00fato t\u00e9mu. <a href=\"https:\/\/www.bookdepository.com\/Code-Simplicity-Max-Kanat-Alexander\/9781449313890\">Code Simplicity<\/a> od Maxa Kanat-Alexandra.<!--more--><!--break--><\/p>\n<p>Jedno mus\u00edm tejto knihe prizna\u0165 a to, \u017ee dok\u00e1zala pomenova\u0165 jeden z probl\u00e9mov v\u00fdvoja softv\u00e9ru pomerne presne. A ten probl\u00e9m je, \u017ee n\u00e1vrh softv\u00e9ru je ve\u013emi komplikovan\u00e1 \u010dinnos\u0165, ku ktorej prakticky neexistuje \u017eiadna vedn\u00e1 discipl\u00edna. S komplikovan\u00fdmi procesmi sa d\u00e1 stretn\u00fa\u0165 aj inde. Postavi\u0165 \u0161tyridsa\u0165 poschodov\u00fd mrakodrap alebo p\u00e4\u0165kilometrov\u00fd most tie\u017e nie je jednoduch\u00e9. Rovnako nie je jednoduch\u00e9 urobi\u0165 oper\u00e1cie mozgu. Ale ako architekt\u00fara, aj medic\u00edna s\u00fa samostatn\u00e9 vedn\u00e9 odbory, kde v\u00e1s tak\u00e9to veci nau\u010dia.<\/p>\n<p>Nie \u017ee by sa v\u00fdpo\u010dtov\u00e1 technika na vysok\u00fdch \u0161kol\u00e1ch neu\u010dila. Ale \u010dastokr\u00e1t v\u00e1s nau\u010dia programova\u0165, nau\u010dia rela\u010dn\u00e9 datab\u00e1zy a te\u00f3riu preklada\u010dov. N\u00e1vrh softv\u00e9ru sa u\u010d\u00ed len ve\u013emi m\u00e1lo alebo v\u00f4bec. \u010ciasto\u010dne sa to sna\u017eia nahradi\u0165 napr\u00edklad n\u00e1vrhov\u00e9 vzory, ktor\u00e9 pon\u00fakaj\u00fa hotov\u00e9 rie\u0161enia na \u010dasto opakuj\u00face sa probl\u00e9my. Ale to je len znova nejak\u00e1 iniciat\u00edva zdola, teda z ka\u017edodennej praxe, ktor\u00e1 sa sna\u017e\u00ed abstrahova\u0165 princ\u00edpy a nejako ich pop\u00edsa\u0165. Ch\u00fdba tu snaha pop\u00edsa\u0165 n\u00e1vrh zhora. Teda za\u010da\u0165 abstraktnou te\u00f3riou a postupova\u0165 smerom nadol a\u017e do ka\u017edodenn\u00e9ho \u017eivota.<\/p>\n<p>Vlastne nie som \u00faplne presn\u00fd. Tak\u00e1 vedn\u00e1 discipl\u00edna existuje a vol\u00e1 sa Informatika (o rozdiele medzi informatikou a v\u00fdpo\u010dtovou technikou som u\u017e p\u00edsal kedysi d\u00e1vno <a href=\"http:\/\/spireng.sk\/en\/vypoctova-technika-vs-informatika\/\">tu<\/a>). Pr\u00edkladom je form\u00e1lna met\u00f3da \u2013 B met\u00f3da. Probl\u00e9m je, \u017ee tie postupy, ktor\u00e9 Informatika navrhuje, s\u00fa tak \u0165a\u017eko pou\u017eite\u013en\u00e9 na ka\u017edodenn\u00fd \u017eivot, \u017ee sa daj\u00fa pou\u017ei\u0165 naozaj len tam, kde ide o \u017eivot (riadenie dopravn\u00fdch prostriedkov, ktor\u00e9 s\u00fa pln\u00e9 \u013eud\u00ed, alebo riadenie lek\u00e1rskych pr\u00edstrojov). <span style=\"background: transparent;\">Nie\u010do, \u010do by nau\u010dil<\/span><span style=\"background: transparent;\">o<\/span><span style=\"background: transparent;\"> robi\u0165 spr\u00e1vne ka\u017edodenn\u00e9 rozhodnutia program\u00e1tor<\/span><span style=\"background: transparent;\">a<\/span><span style=\"background: transparent;\">, ktor\u00fd sed\u00ed v \u0161tandardnej IT firm<\/span><span style=\"background: transparent;\">e<\/span><span style=\"background: transparent;\"> a programuje web, backend syst\u00e9m alebo d\u00e1tov\u00fd filter, tu ch\u00fdba.<\/span><\/p>\n<p>Maxove tvrdenie je tvrd\u00e9, ale m\u00e1 logick\u00fd z\u00e1klad. Je to preto, lebo softv\u00e9r sa narodil ako nie\u010do mal\u00e9 a postupne za\u010dal r\u00e1s\u0165. Ke\u010f to bolo kedysi p\u00e1r riadkov, ktor\u00e9 p\u00edsal jeden \u010dlovek, o 30 rokov nesk\u00f4r s\u00fa to cel\u00e9 t\u00edmy, ktor\u00e9 p\u00ed\u0161u tis\u00edce riadkov denne. A nikde medzi t\u00fdm za\u010diatkom a teraj\u0161\u00edm stavom nepri\u0161iel bod, kedy by sme si povedali: \u201eOk, tak ako to bolo doteraz, to nejde. Po\u010fme to robi\u0165 od za\u010diatku a tak, ako sa m\u00e1.\u201c Sme ako t\u00e1 povestn\u00e1 \u017eaba, ktor\u00e1 vysko\u010d\u00ed, ak ju hod\u00edte do vriacej vody, ale ak vodu postupne prihrievate, tak sa uvar\u00ed.<\/p>\n<p>Max sa sna\u017e\u00ed zadefinova\u0165 vedu n\u00e1vrhu softv\u00e9ru. Rob\u00ed to len na 90-tich stran\u00e1ch, \u010do je ve\u013emi m\u00e1lo, ale aj napriek tomu m\u00e1 bod k dobru, lebo sa to naozaj sna\u017e\u00ed robi\u0165 ako vedu \u2013 definuje postupne pojem za pojmom a k tomu prid\u00e1va pravidl\u00e1. N\u00e1vrh softv\u00e9ru je pod\u013ea neho o ka\u017edodenn\u00fdch rozhodnutiach (Vytvor\u00edm pre ten k\u00f3d samostatn\u00fa triedu alebo nie?, Pou\u017eijem alebo nepou\u017eijem referenciu cez rozhrania? a pod.). To rozhodovanie sa mus\u00ed nie\u010dim riadi\u0165 a on tvrd\u00ed, \u017ee by sa malo riadi\u0165 my\u0161lienkou, \u017ee softv\u00e9r vznikol, aby pom\u00e1hal \u013eudom a mal by by\u0165 vytvoren\u00fd tak, \u017ee je \u013eahko udr\u017eate\u013en\u00fd aj po dlh\u0161ej dobe.<\/p>\n<p>T\u00e1 udr\u017eate\u013enos\u0165 je k\u013e\u00fa\u010dov\u00e1, preto\u017ee autor tvrd\u00ed, \u017ee ak m\u00e1te nejak\u00fa funk\u010dnos\u0165, ktor\u00e1 potrebuje nejak\u00fa n\u00e1mahu na implement\u00e1ciu, tak t\u00e1 funk\u010dnos\u0165 v sebe ur\u010dite zah\u0155\u0148a aj nejak\u00fa n\u00e1mahu na \u010fal\u0161ie udr\u017eiavanie. A pr\u00e1ve t\u00e1 druh\u00e1 je d\u00f4le\u017eitej\u0161ia (pri dlhodobej\u0161\u00edch projektoch) ako samotn\u00e1 implementa\u010dn\u00e1 n\u00e1maha.<\/p>\n<p>Dobr\u00fd dizajn je nie\u010do, \u010do v\u00fdrazne redukuje n\u00e1mahu na udr\u017eiavanie softv\u00e9ru. V tom sa op\u00e4\u0165 s autorom zhodneme, preto\u017ee ja r\u00e1d tvrd\u00edm, \u017ee nie je probl\u00e9m naprogramova\u0165 \u013eubovo\u013en\u00fd softv\u00e9r. M\u00f4\u017eete si vybra\u0165 \u013eubovo\u013en\u00fa technol\u00f3giu a ako program\u00e1tora m\u00f4\u017eete zvoli\u0165 niekoho aj menej sk\u00fasen\u00e9ho. On v\u00e1m ten softv\u00e9r vyrob\u00ed. \u010co umenie je, ak ste schopn\u00fd vytvori\u0165 softv\u00e9r, ktor\u00fd sa aj o 3, 5, 10 \u2026 rokov bude spravova\u0165 aspo\u0148 r\u00e1dovo rovnako jednoducho ako ke\u010f za\u010d\u00ednate. Videl som nejeden projekt, ktor\u00fd za\u010d\u00edtal bombasticky, nabit\u00fd pozit\u00edvnou energiou a v\u0161etk\u00fdm t\u00fdm vzru\u0161en\u00edm z nov\u00e9ho, aby bol po p\u00e1r rokoch \u013eudom pride\u013eovan\u00fd skoro za trest.<\/p>\n<p>Kniha sa neodkazuje na \u017eiaden konkr\u00e9tny programovac\u00ed jazyk. Ak e\u0161te nejak\u00fd neovl\u00e1date, tak mus\u00edte siahnu\u0165 po nie\u010dom inom (alebo sa prihl\u00e1ste na vysok\u00fa \u0161kolu). T\u00e1to kniha sa v\u00e1m bude sna\u017ei\u0165 vysvetli\u0165, \u017ee to vyzer\u00e1 ako jednoduch\u00e1 vec (\u201eTu d\u00e1me tak\u00fa a tak\u00fa triedu, tak bude rozhranie a v\u0161etko to bude pod REST sie\u0165ov\u00fdmi slu\u017ebami&#8230;\u201c) je v skuto\u010dnosti veda a mali by ste k tomu tak pristupova\u0165. \u017de sv\u00e4t\u00fdm gr\u00e1lom ka\u017ed\u00e9ho program\u00e1tora je jednoduchos\u0165. Robi\u0165 veci len tak zlo\u017eit\u00e9, ako je to mo\u017en\u00e9 a sna\u017e\u00ed sa vyh\u00fdba\u0165 r\u00f4znym pevn\u00fdm v\u00e4zb\u00e1m medzi komponentami. Lebo len jednoduchos\u0165 je to, \u010do dok\u00e1\u017ee zaru\u010di\u0165, \u017ee projekt bude udr\u017eate\u013en\u00fd aj po rokoch v\u00fdvoja.<\/p>","protected":false},"excerpt":{"rendered":"<p>V ktoromsi predch\u00e1dzaj\u00facom blogu som nap\u00edsal, \u017ee komplexnos\u0165 v softv\u00e9rov\u00fdch projektoch je ako cholesterol u \u013eud\u00ed. Neprich\u00e1dza odrazu a vo ve\u013ekom, ale postupne sa gram po grame naba\u013euje a\u017e jedn\u00e9ho d\u0148a je u\u017e neskoro. Nejako takto to niekedy vyzer\u00e1 v softv\u00e9rov\u00fdch projektoch. Denne prich\u00e1dzaj\u00fa zmeny a ak sa robia bez toho, aby sa uv\u00e1\u017eil ich [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-93","post","type-post","status-publish","format-standard","hentry","category-vyvoj-softveru"],"_links":{"self":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/93","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/comments?post=93"}],"version-history":[{"count":2,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/93\/revisions"}],"predecessor-version":[{"id":312,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/93\/revisions\/312"}],"wp:attachment":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/media?parent=93"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/categories?post=93"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/tags?post=93"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}