{"id":1,"date":"2012-02-08T20:29:10","date_gmt":"2012-02-08T19:29:10","guid":{"rendered":""},"modified":"2018-09-17T21:59:19","modified_gmt":"2018-09-17T19:59:19","slug":"technologicky-dlh-a-preco-to-nie-je-jedno","status":"publish","type":"post","link":"https:\/\/spireng.sk\/en\/technologicky-dlh-a-preco-to-nie-je-jedno\/","title":{"rendered":"Technologick\u00fd dlh a pre\u010do to nie je jedno"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"imgp_img\" style=\"float: left; margin: 2px 5px;\" src=\"\/sites\/default\/files\/imagepicker\/1\/__icon_th150.jpg\" alt=\"Obr\u00e1zok\" width=\"200\" height=\"200\" \/><\/p>\n<p>Technologick\u00fd dlh je nie\u010do, \u010do m\u00f4\u017ee zmeni\u0165 ute\u0161en\u00fd projekt na no\u010dn\u00fa moru. Bohu\u017eia\u013e ale nenos\u00ed tabu\u013eku s n\u00e1pisom, a tak sa m\u00f4\u017ee sta\u0165, \u017ee sa stane va\u0161\u00edm spolo\u010dn\u00edkom v projekte sk\u00f4r, ako si nie\u010do v\u0161imnete. Ako\u00a0 sa tam dostal, ako ho rozpozna\u0165 a \u010do s t\u00fdm robi\u0165? <!--break-->Stalo sa v\u00e1m niekedy, \u017ee sa spo\u010diatku bezprobl\u00e9mov\u00e1 pr\u00e1ca na projekte za\u010dala podoba\u0165 na pl\u00e1vanie v hustom sirupe. \u017de ka\u017ed\u00fd pohyb, ka\u017ed\u00e1 zmena v\u00e1s st\u00e1la ve\u013ea n\u00e1mahy a ni\u010d nebolo tak\u00e9 jednoduch\u00e9, ako sa to zdalo. Alebo ste mali pocit, \u017ee ste uviazli v pavu\u010dine a ka\u017ed\u00fd v\u00e1\u0161 pohyb (zmena k\u00f3du) rozh\u00fdbe \u010dasti aplik\u00e1cie, o ktor\u00fdch ste boli presved\u010den\u00ed, \u017ee s t\u00fdm, \u010do rob\u00edte, nes\u00favisia. Jeden z d\u00f4vodov, pre\u010do sa inak z\u00e1bavn\u00e1 a in\u0161pirat\u00edvna discipl\u00edna ako je programovanie m\u00f4\u017ee zmeni\u0165 v tak\u00fato no\u010dn\u00fa moru je nie\u010do, \u010do sa zvykne ozna\u010dova\u0165 technologick\u00fd dlh.<!--more--><\/p>\n<p><strong>Technologick\u00fd dlh, zozn\u00e1mte sa <\/strong><\/p>\n<p>Najjednoduch\u0161ia defin\u00edcia technologick\u00e9ho dlhu pravdepodobne je, \u017ee je to pr\u00e1ca, ktor\u00e1 mala a nebola a vykonan\u00e1. To znamen\u00e1, \u017ee ste tomu softv\u00e9rov\u00e9mu rie\u0161eniu ostali nie\u010do dl\u017en\u00ed. Zjednodu\u0161ene sa d\u00e1 poveda\u0165, \u017ee technologick\u00fd dlh m\u00f4\u017ee r\u00e1s\u0165 dvoma sp\u00f4sobmi: vedom\u00edm a nevedom\u00edm.<\/p>\n<p>Prv\u00fd, vedom\u00fd ste u\u017e mo\u017eno niekedy za\u017eili. Je to vtedy, ke\u010f ste sa rozhodli vykona\u0165 nejak\u00fa (hoci aj mal\u00fa) skratku v k\u00f3de a poru\u0161i\u0165 tak dohodnut\u00e9 pravidl\u00e1. Alebo ke\u010f ste vedeli, \u017ee by bolo dobr\u00e9 uprata\u0165 k\u00f3d, ale neurobili ste to. Ke\u010f ste prijali nejak\u00e9 rie\u0161enie s my\u0161lienkou, \u017ee je to len na ur\u010dit\u00e9 obdobie &#8230; a u\u017e ste sa k nemu nikdy nevr\u00e1tili. Naj\u010dastej\u0161ie sa tak deje kv\u00f4li nedostatku \u010dasu a ob\u010das aj kv\u00f4li nedostatku v\u00f4le (\u010domu sa menej diplomaticky zvykne hovori\u0165 aj lenivos\u0165). Pri tomto sp\u00f4sobe narastania dlhu ho do syst\u00e9mu vedome vklad\u00e1me. Hovor\u00edme si: \u201eZatia\u013e to nech\u00e1m tak a nesk\u00f4r to oprav\u00edm\/vy\u010dist\u00edm\/vyrie\u0161im.\u201c \u201eNesk\u00f4r\u201c ale bohu\u017eial nie je \u017eiadnym d\u0148om v t\u00fd\u017edni, a tak dlh ost\u00e1va v syst\u00e9me. Mimochodom, do\u010dasn\u00e9 rie\u0161enie sa st\u00e1va trval\u00fdm akon\u00e1hle pre\u017eije bez zmeny nasleduj\u00facu iter\u00e1ciu, v ktorom bolo vytvoren\u00e9. A \u201edo\u010dasn\u00e9 rie\u0161enie\u201c sa d\u00e1 inak \u010d\u00edta\u0165 ako \u201etechnologick\u00fd dlh\u201c.<\/p>\n<p>Druh\u00fd, nevedom\u00fd sp\u00f4sob s\u00favis\u00ed s rozb\u00edjan\u00edm okien. Mo\u017eno ste u\u017e o tej anal\u00f3gii po\u010duli. Predstavte si opusten\u00fd dom uprostred mesta. Okn\u00e1 a dvere s\u00fa zatvoren\u00e9, vo vn\u00fatri sa ni\u010d neh\u00fdbe. Budova tak m\u00f4\u017ee sta\u0165 cel\u00e9 roky a ni\u010d sa nedeje. A\u017e do momentu, ke\u010f niekto rozbije prv\u00e9 okno a ujde. Rozbit\u00e9 okno, ktor\u00e9 nikto neoprav\u00ed je podvedom\u00fd sign\u00e1l pre v\u0161etk\u00fdch, \u017ee o budovu sa nikto nestar\u00e1, a tak sa v kr\u00e1tkom \u010dase objavia nasprejovan\u00e9 n\u00e1pisy, niekto rozbije \u010fal\u0161ie okn\u00e1 a nakoniec vylom\u00ed dvere. Z p\u00f4vodne norm\u00e1lne vyzeraj\u00facej budovy je zrazu ruina. A v\u0161etko to za\u010dalo rozbit\u00e9 okno. Nie\u010do podobn\u00e9 sa m\u00f4\u017ee sta\u0165 aj v\u00e1\u0161mu softv\u00e9ru. Ak men\u00edte k\u00f3d, v ktorom s\u00fa jasne dodr\u017ean\u00e9 pravidl\u00e1, bude v\u00e1s to podvedome n\u00fati\u0165, aby ste ich dodr\u017eiavali aj vy. Ale ke\u010f si v\u0161imnete, \u017ee nie v\u0161etky premenn\u00e9 s\u00fa pomenovan\u00e9 pod\u013ea dohodnut\u00fdch konvenci\u00ed alebo \u017ee niekde je pou\u017eit\u00fd odkaz priamo na triedu aj ke\u010f dohoda bola pou\u017e\u00edva\u0165 rozhrania, bude v\u00e1s to sk\u00f4r vies\u0165 k ich poru\u0161ovaniu. A to je sp\u00f4sob, ako sa do v\u00e1\u0161ho syst\u00e9mu za\u010dne dost\u00e1va\u0165 technologick\u00fd dlh. Ak boli na za\u010diatku v\u0161etky triedy fit, tak po nieko\u013ek\u00fdch rozbit\u00fdch okn\u00e1ch a nejakom \u010dase \u010fal\u0161ieho v\u00fdvoja, u\u017e to nemus\u00ed by\u0165 tak\u00e9 jasn\u00e9. Syst\u00e9m pod rukami pomaly degraduje a men\u00ed sa na ruinu, ale tie kr\u00f4\u010diky s\u00fa tak\u00e9 mal\u00e9, \u017ee to v\u00f4bec nemus\u00ed udrie\u0165 do o\u010d\u00ed.<\/p>\n<p><strong>Ako pozn\u00e1m, ko\u013eko som dl\u017en\u00fd? <\/strong><\/p>\n<p>Ako sa d\u00e1 pr\u00edtomnos\u0165 dlhu rozpozna\u0165? Technologick\u00fd dlh nes\u00favis\u00ed priamo s behom syst\u00e9mu, aj ke\u010f dok\u00e1\u017ee ovplyvni\u0165 aj to. S\u00favis\u00ed hlavne so zmenami a udr\u017eiavan\u00edm (spravovan\u00edm) syst\u00e9mu a jeho stabilitou. Ne\u010dakajte, \u017ee ho jedn\u00e9ho d\u0148a n\u00e1jdete niekde v nejakom s\u00fabore. V\u00e4\u010d\u0161inou nie je z\u010faleka takto vidite\u013en\u00fd. Najlep\u0161\u00ed indik\u00e1tor je \u013eahkos\u0165 (nekomplikovanos\u0165) pr\u00e1ce.<\/p>\n<p>Ak sa technologick\u00fd dlh objav\u00ed, za\u010dne to t\u00fdm, \u017ee aj jednoduch\u00e9 veci sa za\u010dn\u00fa komplikova\u0165 a pr\u00e1ca vas prestane bavi\u0165 (to m\u00f4\u017ee by\u0165 naozaj re\u00e1lny ukazovate\u013e). V\u00e4\u010d\u0161iu \u010das\u0165 \u010dasu za\u010d\u00ednate tr\u00e1vi\u0165 detekt\u00edvnou pr\u00e1cou pri h\u013eadan\u00ed odpovede na ot\u00e1zku, pre\u010do je to uroben\u00e9 tak, ako to uroben\u00e9 je (\u010di je to naschv\u00e1l alebo len niekto zabudol nie\u010do po sebe uprata\u0165). Dostav\u00ed sa stres, preto\u017ee term\u00edny s\u00fa term\u00edny a vy tu pritom z\u00e1pasite s ne\u010dakan\u00fdmi komplik\u00e1ciami. Po strese prich\u00e1dza strach. Je to strach zmeni\u0165 k\u00f3d alebo konfigur\u00e1ciu nie\u010doho, ke\u010f\u017ee neviete, \u010do v\u0161etko t\u00e1 zmena m\u00f4\u017ee sp\u00f4sobi\u0165. Ak c\u00edtite strach pred zmenou, za\u0161li ste u\u017e dos\u0165 \u010faleko a ciest na n\u00e1vra\u0165 u\u017e nie je ve\u013ea (aj ke\u010f st\u00e1le nejak\u00e9 ost\u00e1vaj\u00fa). Posledn\u00fdm \u0161t\u00e1diom je k\u00f3ma. To je stav, kedy u\u017e do syst\u00e9mu rad\u0161ej nev\u0155tate, preto\u017ee neviete, \u010do by sa stalo a ko\u013eko \u010dasu by to bolo, da\u0165 to cel\u00e9 sp\u00e4\u0165 dokopy. Syst\u00e9m v k\u00f3me je u\u017e \u0165a\u017eko lie\u010dite\u013en\u00fd a naj\u010dastej\u0161ie sa u\u017e v tom \u010dase p\u00ed\u0161e druh\u00fd, nov\u00fd, ktor\u00fd by mal ten p\u00f4vodn\u00fd nahradi\u0165.<\/p>\n<p><strong>Nechcem by\u0165 dl\u017en\u00fd, \u010do s t\u00fdm?<\/strong><\/p>\n<p>U\u017e vieme, \u010do technologick\u00fd dlh je, ako vznik\u00e1 a ako sa prejavuje. Ost\u00e1va len ot\u00e1zka, ako s n\u00edm z\u00e1pasi\u0165. N\u00e1strojov a postupov je nieko\u013eko. Pri vedome vytv\u00e1ranom dlhu je najlep\u0161ie sa vyhn\u00fa\u0165 kompromisom a sna\u017ei\u0165 sa o technicky zdatn\u00e9 rie\u0161enie na prv\u00fdkr\u00e1t. Niekedy sa to ned\u00e1 a niekedy je dokonca nedokonal\u00e9 rie\u0161enie \u017eiadan\u00e9. Napr\u00edklad pri agiln\u00fdch met\u00f3dach m\u00f4\u017eete v jednej iter\u00e1cii vytvori\u0165 funkcionalitu za kr\u00e1tky \u010das jednoduch\u0161\u00edm sp\u00f4sobom, aby ste ju vedeli z\u00e1kazn\u00edkovi predvies\u0165 a ak mu bude vyhovova\u0165, opravi\u0165 ju do korektn\u00e9ho stavu. V takom pr\u00edpade ale ak pr\u00edde A, mus\u00ed pr\u00eds\u0165 aj B. Ak ste tak\u00e9to nedokonal\u00e9 rie\u0161enie do syst\u00e9mu dostali, mus\u00edte ho opravi\u0165 alebo zo syst\u00e9mu vyhodi\u0165. Samozrejme, \u017ee to znamen\u00e1 pr\u00e1cu naviac a komunik\u00e1ciu so z\u00e1kazn\u00edkom, pre\u010do treba nie\u010do prer\u00e1ba\u0165 (refaktorova\u0165), ak to funguje. Ale aj o tom v\u00fdvoj softv\u00e9ru je. Dobrou pom\u00f4ckou je zoznam tak\u00fdchto do\u010dasn\u00fdch rie\u0161en\u00ed umiestnen\u00fd na nejakom dobre vidite\u013enom mieste. Takto sa len ve\u013emi \u0165a\u017eko d\u00e1 zabudn\u00fa\u0165 na to, \u010do je e\u0161te potrebn\u00e9 spravi\u0165.<\/p>\n<p>Nevedom\u00e9 vytv\u00e1ranie dlhu najlep\u0161ie zastavia n\u00e1stroje na kontrolu pravidiel. Ide o r\u00f4zne n\u00e1stroje na statick\u00fa alebo dynamick\u00fa kontrolu k\u00f3du (napr\u00edklad FxCop pre .Net alebo Checkstyle pre Javu). Samotn\u00fd n\u00e1stroj o sebe nesta\u010d\u00ed, niekto ho mus\u00ed spusti\u0165 a vyhodnoti\u0165. Ten niekto by to mal robi\u0165 automaticky a nemal by na to zabudn\u00fa\u0165. Ni\u010d lep\u0161ie ako kontinu\u00e1lne zostavovanie ma nenapad\u00e1 (napr\u00edklad CruiseControl). Najlep\u0161ie hne\u010f po zmen\u00e1ch v k\u00f3de, aby doba medzi zaveden\u00edm chyby a jej odhalen\u00edm bola \u010do najkrat\u0161ia. Tak\u00fdto spr\u00e1vne nastaven\u00fd syst\u00e9m vie udr\u017ea\u0165 v\u00e1\u0161 k\u00f3d vo forme aj dlh\u00fa dobu. Automatika v\u0161ak nie je v\u0161etko, preto aj CodeReview, teda kontrola k\u00f3du jedn\u00e9ho v\u00fdvoj\u00e1ra druh\u00fdm, prin\u00e1\u0161a svoje (osobitn\u00e9) v\u00fdsledky.<\/p>\n<p>Samostatnou kapitolou je z\u00e1pas s technologick\u00fdm dlhom, ktor\u00fd sa za\u010dne a\u017e niekde uprostred projektu (niekedy aj po nieko\u013ek\u00fdch rokoch). V takom pr\u00edpade treba v prvom rade zastavi\u0165 krv\u00e1canie, \u010do znamen\u00e1 urobi\u0165 v\u0161etko preto, aby dlh u\u017e nenarastal a identifikova\u0165 najbo\u013eavej\u0161ie miesta. To s\u00fa miesta, ktor\u00e9 v\u00e1s stoja najviac energie. A tie postupne odstra\u0148ova\u0165.<\/p>\n<p>Technologick\u00fd dlh je prirodzen\u00fdm d\u00f4sledkom okolnost\u00ed, ktor\u00e9 projekt sprev\u00e1dzaj\u00fa a \u013eudskej ned\u00f4slednosti, ktor\u00e1 sa ob\u010das vyskytne. Aj preto to nie je nie\u010do, \u010do viete na 100% potla\u010di\u0165. D\u00f4le\u017eit\u00e9 je v\u0161ak, aby ste o \u0148om vedeli a sna\u017eili sa ho dr\u017ea\u0165 pod kontrolou, preto\u017ee je to spolo\u010dn\u00edk, ktor\u00fd v\u00e1m nebadane m\u00f4\u017ee prer\u00e1s\u0165 cez hlavu.<\/p>","protected":false},"excerpt":{"rendered":"<p>Technologick\u00fd dlh je nie\u010do, \u010do m\u00f4\u017ee zmeni\u0165 ute\u0161en\u00fd projekt na no\u010dn\u00fa moru. Bohu\u017eia\u013e ale nenos\u00ed tabu\u013eku s n\u00e1pisom, a tak sa m\u00f4\u017ee sta\u0165, \u017ee sa stane va\u0161\u00edm spolo\u010dn\u00edkom v projekte sk\u00f4r, ako si nie\u010do v\u0161imnete. Ako\u00a0 sa tam dostal, ako ho rozpozna\u0165 a \u010do s t\u00fdm robi\u0165? Stalo sa v\u00e1m niekedy, \u017ee sa spo\u010diatku bezprobl\u00e9mov\u00e1 [&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-1","post","type-post","status-publish","format-standard","hentry","category-vyvoj-softveru"],"_links":{"self":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/1","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=1"}],"version-history":[{"count":1,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/1\/revisions"}],"predecessor-version":[{"id":255,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/1\/revisions\/255"}],"wp:attachment":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/media?parent=1"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/categories?post=1"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/tags?post=1"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}