{"id":378,"date":"2022-08-17T21:51:52","date_gmt":"2022-08-17T19:51:52","guid":{"rendered":"https:\/\/spireng.sk\/?p=378"},"modified":"2025-02-23T09:50:08","modified_gmt":"2025-02-23T08:50:08","slug":"technologicky-dlh-nezvany-host","status":"publish","type":"post","link":"https:\/\/spireng.sk\/en\/technologicky-dlh-nezvany-host\/","title":{"rendered":"Technologick\u00fd dlh \u2013 nezvan\u00fd hos\u0165"},"content":{"rendered":"<p>U\u017e je to pekn\u00fdch p\u00e1r rokov, \u010do vznikol \u010dl\u00e1nok <a href=\"http:\/\/spireng.sk\/en\/technologicky-dlh-a-preco-to-nie-je-jedno\/\">Technologick\u00fd dlh a\u00a0pre\u010do to nie je jedno<\/a>. V\u00a0\u0148om som nap\u00edsal, \u017ee technologick\u00fd dlh\u00fd vznik\u00e1 vtedy, ak softv\u00e9rov\u00e9mu rie\u0161eniu ostanete nie\u010do dl\u017en\u00ed. Jednoducho neurob\u00edte nejak\u00fa robotu, ktor\u00fa ste mali. A\u00a0robota (ako je v\u0161eobecne zn\u00e1me) sa sama neurob\u00ed. Odvtedy pretieklo ve\u013ea vody a\u00a0ja som videl ve\u013ea projektov, ve\u013ea t\u00edmov a\u00a0ve\u013ea riadkov k\u00f3du. A\u00a0zistil som jednu vec, a\u00a0to \u017ee t\u00fdch druhov pr\u00e1c, ktor\u00e9 nemusia by\u0165 uroben\u00e9, je ve\u013ea. A\u00a0preto je aj ve\u013ea druhov technologick\u00e9ho dlhu. \u010castokr\u00e1t je pritom tak maskovan\u00fd, \u017ee je ho \u0165a\u017ek\u00e9 rozpozna\u0165.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Existuje jeden indik\u00e1tor, ktor\u00fd v\u00e1m prezrad\u00ed, \u017ee v\u00e1\u0161 projekt ma nejak\u00fa mieru technologick\u00e9ho dlhu. Tak\u00fd dlh toti\u017e zaru\u010dene sp\u00f4sobuje to, \u017ee aj mal\u00e9 zmeny trvaj\u00fa dlho a&nbsp;s\u00fa rizikov\u00e9. A&nbsp;to hovor\u00edm o&nbsp;naozaj jednoduch\u00fdch veciach ako prida\u0165 pole do formul\u00e1ra a&nbsp;n\u00e1sledne do serverovej \u010dasti aplik\u00e1cie. Alebo urobi\u0165 pre projekt tak samozrejm\u00fa vec ako je release novej verzie.<\/p>\n\n\n\n<p>Len si to predstavte, idete releasova\u0165 svoj softv\u00e9r. A\u00a0ocit\u00e1te sa v situ\u00e1cii, \u017ee to nikdy nevyjde na prv\u00fdkr\u00e1t. Vlastne ani na druh\u00fd. St\u00e1le sa priplet\u00fa nejak\u00e9 probl\u00e9my. Raz zo zvl\u00e1\u0161tnych d\u00f4vodov spadne proces zostavenia. Inokedy je nie\u010do zle zamergovan\u00e9. V\u017edy sa nie\u010do prihod\u00ed, niektor\u00e9 probl\u00e9my sa opakuj\u00fa, ale v\u017edy sa objavia nov\u00e9. St\u00e1le s\u00fa to mali\u010dkosti, ale syst\u00e9m je tak\u00fd krehk\u00fd, \u017ee sta\u010d\u00ed aj m\u00e1lo a\u00a0nie\u010do prestane fungova\u0165. A\u00a0niekedy trv\u00e1 dlho dop\u00e1tra\u0165 sa k\u00a0tomu, \u010do sa stalo.<\/p>\n\n\n\n<p>Ak m\u00e1 v\u00e1\u0161 projekt probl\u00e9my, ktor\u00e9 sa ve\u013emi \u0165a\u017eko opisuj\u00fa, ktor\u00e9 nemaj\u00fa jasn\u00fd prejav a vinn\u00edka, len sa n\u00e1hodne objavuj\u00fa, je pravdepodobn\u00e9, \u017ee sa v&nbsp;\u0148om niekde ukr\u00fdva technologick\u00fd dlh. Po\u010fme sa teda pozrie\u0165 na to, ako ten dlh m\u00f4\u017ee vyzera\u0165:<\/p>\n\n\n\n<p><strong>Rozpadnut\u00e1 architekt\u00fara<\/strong> \u2013 hne\u010f prv\u00e1 forma je postupn\u00e1 premena nie\u010doho, \u010do na za\u010diatku bola architekt\u00fara (teda s\u00fabor pravidiel o\u00a0\u0161trukt\u00fare k\u00f3du) na \u0161pagetov\u00fd k\u00f3d (teda anarchiu). Pravidl\u00e1 je potrebn\u00e9 \u010dasom samozrejme meni\u0165, ale st\u00e1le by mala by\u0165 jasn\u00e1 mno\u017eina platn\u00e1 pre cel\u00fd projekt. Ak m\u00e1 ka\u017ed\u00fd developer svoju vlastn\u00fa mno\u017einu, je to cesta do softv\u00e9rov\u00e9ho pekla. In\u00fd probl\u00e9m je, ak nie je \u010das na \u010dinnos\u0165 nevyhnutn\u00fa pre dlhodob\u00fd projekt \u2013 refactoring. Ak sa toti\u017e po\u017eiadavky na softv\u00e9r menia, ale architekt\u00fara ost\u00e1va rovnak\u00e1, doch\u00e1dza k\u00a0pnutiu medzi t\u00fdm, \u010do by ten softv\u00e9r mal robi\u0165 a\u00a0na \u010do je stavan\u00fd.<\/p>\n\n\n\n<p><strong>Zdivo\u010del\u00fd k\u00f3d<\/strong> \u2013 okrem architekt\u00fary, ktor\u00e1 ur\u010duje \u010do kde patr\u00ed, je tu e\u0161te \u0161t\u00fdl p\u00edsania k\u00f3du. To je syst\u00e9m pomenovania funkci\u00ed, premenn\u00fdch, sp\u00f4sob form\u00e1tovania k\u00f3du a\u00a0pod. Hovor\u00ed sa, \u017ee ke\u010f chcete vedie\u0165 ako funguje t\u00edm, pozrite sa na jeho k\u00f3d. Ak ka\u017ed\u00e1 trieda vyzer\u00e1 inak, potom je niekde probl\u00e9m. Ka\u017edop\u00e1dne meni\u0165 tak\u00fdto k\u00f3d je v\u0161etko, len nie \u013eahk\u00e9.<\/p>\n\n\n\n<p><strong>Neporiadok<\/strong> \u2013 k\u00f3d, ktor\u00fd nikto nevol\u00e1. Konfigura\u010dn\u00e9 s\u00fabory, ktor\u00e9 sa u\u017e nepou\u017e\u00edvaj\u00fa. K\u00f3pie \u010dast\u00ed k\u00f3du, na ktor\u00fdch ktosi v\u00a0minulosti robil pokus (ne\u00faspe\u0161n\u00fd), ale neupratal po sebe. A\u00a0tak podobne. Neporiadok pravidelne spotrebov\u00e1va obrovsk\u00e9 mno\u017estvo v\u00e1\u0161ho \u010dasu a\u00a0energie, ke\u010f\u017ee \u010dasto sa tv\u00e1ri ako podstatn\u00e1 a\u00a0pou\u017e\u00edvan\u00e1 vec. V\u00e1m potom chv\u00ed\u013eu trv\u00e1, k\u00fdm pochop\u00edte, \u017ee je to len zbyto\u010dnos\u0165, ktor\u00e1 zavadzia.<\/p>\n\n\n\n<p><strong>Ch\u00fdbaj\u00faca dokument\u00e1cia a\u00a0koment\u00e1re<\/strong> \u2013 ob\u013e\u00faben\u00fd technologick\u00fd dlh na mno\u017estve projektov. \u010castokr\u00e1t aj s\u00a0d\u00f4vetkom \u2013 my rob\u00edme agile, preto nedokumentujeme. Pr\u00ed\u010din je ve\u013ea, ale neochota mana\u017ementu plati\u0165 \u010das na dokument\u00e1ciu a\u00a0developerov ju p\u00edsa\u0165, s\u00fa dve naj\u010dastej\u0161ie (a \u010dasto doch\u00e1dza ku kombin\u00e1cii t\u00fdchto pr\u00ed\u010din). Ka\u017edop\u00e1dne to vedie k\u00a0tomu, \u017ee \u013eudia s\u00fa \u201enenahradite\u013en\u00ed\u201c, ke\u010f\u017ee s\u00fa jedin\u00ed, ktor\u00ed k\u00f3du rozumej\u00fa. Druh\u00fd aspekt je ten, \u017ee ak za\u010dnete dokumentova\u0165 to, \u010do ste vytvorili \u2013 za\u010dnete formulova\u0165 vety a\u00a0my\u0161lienky a\u00a0vo va\u0161om v\u00fdtvore objav\u00edte perspekt\u00edvy, ktor\u00e9 ste predt\u00fdm nevideli. A\u00a0mo\u017eno n\u00e1jdete chybu alebo zist\u00edte, \u017ee nie\u010do treba urobi\u0165 inak. Mne sa u\u017e ve\u013eakr\u00e1t stalo, \u017ee pri opise funkcionality ma napadol okrajov\u00fd stav, ktor\u00fd nebol o\u0161etren\u00fd.<\/p>\n\n\n\n<p><strong>Ch\u00fdbaj\u00faci \u013eudia a\u00a0ich know-how<\/strong> \u2013 ak sa nedokumentuje, sk\u00f4r alebo nesk\u00f4r pr\u00edde \u010fal\u0161ia forma dlhu \u2013 \u013eudia, ktor\u00ed to maj\u00fa v\u0161etko v\u00a0hlave, od\u00eddu a s\u00a0nimi aj ich know-how. \u010co v\u00e1m po nich ostane s\u00fa zdrojov\u00e9 k\u00f3dy a\u00a0vy si m\u00f4\u017eete navari\u0165 ve\u013ek\u00fa \u0161\u00e1lku k\u00e1vy a\u00a0za\u010da\u0165 \u0161tudova\u0165 (samotn\u00fd k\u00f3d, koment\u00e1re tam nie s\u00fa, vi\u010f. predch\u00e1dzaj\u00faci dlh). Z\u00a0k\u00f3du sa d\u00e1 pri troche snahy vy\u010d\u00edta\u0165 ve\u013ea, ale nikdy v\u00a0\u0148om nen\u00e1jdete odpove\u010f na jednu ot\u00e1zku \u2013 pre\u010do? Pre\u010do sa zvolilo dan\u00e9 rie\u0161enie. To autor bu\u010f niekde nap\u00edsal alebo nie. A\u00a0ak nie, tak v\u00e1s ost\u00e1va u\u017e len h\u00e1da\u0165, alebo k\u00f3d zmeni\u0165 a\u00a0sledova\u0165, \u010do sa bude dia\u0165 (kto ale bude ma\u0165 t\u00fa odvahu?).<\/p>\n\n\n\n<p><strong>Snowflake servers<\/strong> \u2013 servre, ktor\u00e9 s\u00fa spravovan\u00e9 v\u0161etk\u00fdmi a\u00a0z\u00e1rove\u0148 nik\u00fdm. \u010ci ide o\u00a0infra\u0161trukt\u00faru devopsu, testovacie alebo produk\u010dn\u00e9 servre, \u00a0je to jedno. Funguje to tak, \u017ee na server sa prihl\u00e1si niekto z\u00a0t\u00edmu, nie\u010do zmen\u00ed, preto\u017ee potrebuje nie\u010do otestova\u0165 alebo to jednoducho vy\u017eaduje nov\u00e1 funkcionalita, ale nikomu ni\u010d nepovie. A\u00a0\u201eide\u00e1lne\u201c je, ak sa na server prihlasuj\u00fa v\u0161etci pod t\u00fdm ist\u00fdm \u2013 spolo\u010dn\u00fdm \u2013 \u00fa\u010dtom. Tak\u017ee u\u017e vlastne nikto nevie, \u010do v\u0161etko kedy, k\u00fdm a\u00a0pre\u010do bolo na serveri zmenen\u00e9.<\/p>\n\n\n\n<p><strong>Ch\u00fdbaj\u00face testovanie<\/strong> \u2013 ve\u013emi ob\u013e\u00faben\u00fd technologick\u00fd dlh, prez\u00fdvan\u00fd tie\u017e \u201etested by customer\u201c. Testovanie ako invest\u00edcia do kvality sa z\u00e1kazn\u00edkovi stra\u0161ne \u0165a\u017eko pred\u00e1va, preto\u017ee ho nie je vidno. A\u00a0ke\u010f\u017ee ho nie je vidno, tak ak ho neurob\u00edte, nikto si to nev\u0161imne. Preto, ke\u010f treba na projekte u\u0161etri\u0165, h\u00e1dajte, \u010do ide ako prv\u00e9 dole. K\u00a0\u010domu to vedie asi netreba hovori\u0165. V\u017edy ke\u010f ide kvalita dole, treba posilni\u0165 hotline.<\/p>\n\n\n\n<p><strong>Vlastn\u00edctvo k\u00f3du<\/strong> \u2013 zvl\u00e1\u0161tny druh dlhu, ktor\u00fd sa ale tie\u017e \u010dasto vyskytuje. Aby v\u00fdvoj i\u0161iel \u010do najr\u00fdchlej\u0161ie, ten ist\u00fd k\u00f3d st\u00e1le upravuj\u00fa t\u00ed ist\u00ed \u013eudia. Nerob\u00ed sa review a\u00a0vlastn\u00edctvo nerotuje, lebo nov\u00fd \u010dlovek na novom k\u00f3de by sa musel zau\u010di\u0165, a\u00a0to stoj\u00ed \u010das a\u00a0\u010das nie je alebo peniaze nie s\u00fa. V\u00fdsledok? Doty\u010dn\u00fd \u010dlovek od\u00edde na dovolenku a\u00a0firma m\u00e1 <a href=\"https:\/\/usti.idnes.cz\/dopravni-podnik-most-litvinov-odbavovaci-system-mhd-chyba-jizdenky-11y-\/usti-zpravy.aspx?c=A180918_427691_usti-zpravy_mi\">probl\u00e9m<\/a>. Alebo od\u00edde a\u00a0firma m\u00e1 e\u0161te v\u00e4\u010d\u0161\u00ed probl\u00e9m.<\/p>\n\n\n\n<p><strong>Ch\u00fdbaj\u00faca alebo nefunk\u010dn\u00e1 automatiz\u00e1cia<\/strong> \u2013 toto je hlavne probl\u00e9m ve\u013ek\u00fdch a\u00a0dlhotrvaj\u00facich projektov. V\u00a0ka\u017edom takomto projekt sa jednoducho vyskytuje nejak\u00e9 mno\u017estvo rutinnej pr\u00e1ce. Je nutn\u00e9 ho prenies\u0165 do skriptov a\u00a0n\u00e1strojov na to ur\u010den\u00fdch. V\u00a0opa\u010dnom pr\u00edpade, ak to bud\u00fa vykon\u00e1va\u0165 dookola \u013eudia, je len ot\u00e1zka \u010dasu, kedy za\u010dn\u00fa robi\u0165 chyby.<\/p>\n\n\n\n<p>Ani tento zoznam nie je vy\u010derp\u00e1vaj\u00faci a\u00a0existuj\u00fa \u010fal\u0161ie formy, mo\u017eno trochu exotickej\u0161ie. D\u00f4le\u017eit\u00e9 je pochopi\u0165, \u017ee technologick\u00fd dlh nie je nie\u010do, \u010do v\u00e1m jedn\u00e9ho d\u0148a zaklope na dvere, predstav\u00ed sa a\u00a0vojde dnu. V\u017edy pr\u00edde postupne a\u00a0v\u017edy vo forme, ktor\u00e9 nie je zrejm\u00e1. Hovor\u00ed sa, \u017ee nem\u00f4\u017eete riadi\u0165 nie\u010do, \u010do \u00a0nemeriate. Z\u00a0toho vypl\u00fdva, \u017ee by mali existova\u0165 metriky, ktor\u00e9 na projekte viete sledova\u0165, a\u00a0ktor\u00e9 v\u00e1m napovedia, \u017ee k\u00a0v\u00e1m na projekt nast\u00fapil nepozvan\u00fd pasa\u017eier. Napr\u00edklad po\u010det ch\u00fdb v\u00a0produkcii, komplexnos\u0165 k\u00f3du alebo jednoducho neschopnos\u0165 jednoducho vytvori\u0165 release. V\u0161etko s\u00fa to nepriame indik\u00e1tory, ale svojmu \u00fa\u010delu m\u00f4\u017eu posl\u00fa\u017ei\u0165. <\/p>\n\n\n\n<p>Steven Pinker vo svojej knihe <a href=\"https:\/\/www.martinus.sk\/?uItem=463221\">Bu\u010f svetlo<\/a> nap\u00edsal, \u017ee podstatou \u013eudskej \u010dinnosti je neust\u00e1ly boj proti entropii, ktor\u00e1 je pre n\u00e1\u0161 svet vlastn\u00e1. \u017de ak sa nebudete stara\u0165 o\u00a0svoj dom alebo z\u00e1hradu, tak sa rozpadne a\u00a0spustne. Lebo entropia je prirodzen\u00e1 sila, ktor\u00e1 p\u00f4sob\u00ed na v\u0161etko a\u00a0v\u0161etk\u00fdch, a\u00a0len \u013eudsk\u00fd um jej dok\u00e1\u017ee vzdorova\u0165 a\u00a0veciam da\u0165 svoje miesto. V\u00a0procese v\u00fdvoja softv\u00e9ru je technologick\u00fd dlh tou entropiou. Je to ch\u00fdbaj\u00faci poriadok, dom\u00e1ca \u00faloha, ktor\u00fa si mali v\u00fdvoj\u00e1ri spravi\u0165, ale neurobili. Nikto z\u00a0n\u00e1s by sa nechcel nas\u0165ahova\u0165 do rozpadaj\u00faceho sa domu, tak ako je mo\u017en\u00e9, \u017ee sa tak \u010dasto toleruje podobn\u00fd stav v\u00a0softv\u00e9rov\u00fdch projektoch? Mo\u017eno je to t\u00fdm, \u017ee e\u0161te potrebujeme lep\u0161ie porozumie\u0165, \u010do to technologick\u00fd dlh, ako sa prejavuje a\u00a0pre\u010do je nebezpe\u010dn\u00fd.<\/p>","protected":false},"excerpt":{"rendered":"<p>U\u017e je to pekn\u00fdch p\u00e1r rokov, \u010do vznikol \u010dl\u00e1nok Technologick\u00fd dlh a\u00a0pre\u010do to nie je jedno. V\u00a0\u0148om som nap\u00edsal, \u017ee technologick\u00fd dlh\u00fd vznik\u00e1 vtedy, ak softv\u00e9rov\u00e9mu rie\u0161eniu ostanete nie\u010do dl\u017en\u00ed. Jednoducho neurob\u00edte nejak\u00fa robotu, ktor\u00fa ste mali. A\u00a0robota (ako je v\u0161eobecne zn\u00e1me) sa sama neurob\u00ed. Odvtedy pretieklo ve\u013ea vody a\u00a0ja som videl ve\u013ea projektov, ve\u013ea [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-378","post","type-post","status-publish","format-standard","hentry","category-vyvoj-softveru"],"_links":{"self":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/378","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=378"}],"version-history":[{"count":2,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/378\/revisions"}],"predecessor-version":[{"id":380,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/378\/revisions\/380"}],"wp:attachment":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/media?parent=378"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/categories?post=378"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/tags?post=378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}