Předlužené systémy

Dnes je populární mluvit o finanční gramotnosti. O čem to ale je? V podstatě jde o to pochopit dvě základní věci a to, že existuje něco jako exponenciální růst tedy složené úročení a také se naučit rozlišovat dobrý a špatný dluh. Dobrý dluh je ten, co pracuje pro mě, špatný naopak ten, na který musím pracovat já sám.

Je zajímavé, že s programováním je to hodně podobné, ale moc se o tom nemluví a už se vůbec nemluví o IT gramotnosti. Programování je považováno za práci s vysokou přidanou hodnotou. Což se jednoduše dá představit tak, že když něco naprogramuji, tak se mi to mnohonásobně vrátí. Jak ale chodím po firmách, od projektu k projektu, tak nemám úplně dojem, že to tak je vždy. Naopak mi kolikrát přijde, že programátoři jsou taková černá díra, kam se dají pořád a pořád strkat peníze a oni vždy stejně nakonec přijdou s tím, že toto nejde a aby to šlo, tak se musí celý systém překopat a bude to stát další balík peněz.

Celý zakopaný pes je v tom, že jedna věc se dá naprogramovat mnoha způsoby. Programování je prostě krásné v tom, že se každý může realizovat trochu jinak, podle toho co má rád. Představit si to můžete třeba jako psaní básně. Když budu chtít napsat báseň o lásce, tak jí můžu napsat na sto různých způsobů. Zrovna tak pokud chci napsat program třeba pro komunikaci lidí, tak ho můžu napsat různě. Od jednoduchého chatu až po složitou sociální síť.

Právě proto musíte programátory hlídat a co nejvíc v nich tlumit jejich kreativitu. Naštěstí chytré hlavy vymysleli na to celé metodiky a i samotné softwarové firmy si píší různé interní předpisy, jaký styl básně chtějí mít a co se v nich smí a nesmí objevit, až se nakonec práce programátora stala prakticky nudnou záležitostí a jednotlivé básně pak sekají jako Baťa cvičky.

Na první pohled to vypadá, že je to pod kontrolou, ale ono dost často není a ten hlavní důvod je, že ne každý programátor je schopen skládat básně. Jen ti výborní dokáží skládat celé básně. Normální programátoři většinou umí skládat jen sem tam nějaké verše, občas si nějaký ten verš od někoho vypůjčit, doplnit tam sem tam nějakou tu spojku, aby to pasovalo, a mají svojí báseň. Špatní programátoři anebo ti, co s tím právě začínají, umí většinou jen básně číst. Nový program pak píší tak, že si z několika básní vykopírují jen verše, co potřebují, dají k tomu nadpis a mají svoje dílo.

Hlavně, že to funguje a dělá to, co to má. Zákazník potřebuje, aby to selo, a ono to seje, takže dobrý, ne? Právě, že ne! Pokud si vezmete program od špatného programátora, kde je páté přes deváté, tak se v tom nevyznáte. Strávíte hodiny a hodiny pročítáním básně, ale ona se nedá číst natož do ní přidat nový verš tak, aby to dávalo smysl. A vy přesto dostanete úkol do takovéto básně něco upravit či doplnit a většinou ještě do zítra. Nejdříve nadáváte, pak si říkáte, ono to nějak půjde, ale většinou to moc nejde a nakonec odevzdaně jdete zpátky k zákazníkovi a oznamujete mu novinu, že předchozí programátor byl prase a to co on chce, bude stát balík peněz, pokud to opravdu chce.

Tomu, jak moc nekvalitně máte váš program napsaný, se odborně říká technický dluh. Program od špatného programátora je pak příklad špatného dluhu. Tento dluh vytvořil špatný programátor, ale bohužel je to dluh, který nakonec zaplatíte vy jako zákazník. Ale jak jsem psal na začátku, tak stejně jako ve finančním světě i v programování existuje dobrý dluh. Dobrý dluh vypadá tak, že když mi výborný programátor napíše báseň, ale protože na něj tlačím, že ji potřebuji rychle a že to za to nemusí být dlouhá báseň, tak on ji napíše, ale občas vynechá sem tam nějakou tu sloku. Ta vynechaná sloka je ten dobrý dluh a to proto, že v tuto chvíli jí vysloveně nepotřebuji a nemusím za ní teď platit tomu programátorovi. Vím, že ji bude muset napsat někdy v budoucnu, ale to není problém dneška a vy víte, že až to budete potřebovat, tak ta sloka se dá vždy doplnit a nebude to stát ten balík peněz.

Dokonce i to složené úročení má obdobu v programování. Když jednou napíši nějaký verš, tak příště, když ho budu potřebovat, tak už ho nemusím znovu vymýšlet a můžu ho použít, tak jak je. Tím si ušetřím hodně práce, a čím víc veršů mám k dispozici, tím jsem pak efektivnější, protože je můžu spojovat dohromady. To je to složené úročení v programování, kde se mi moje práce násobí. Před chvilkou jsme si ale řekli, že lepit verše k sobě dělají jen špatní programátoři a vytváří to dluh, který pak musím v budoucnu zaplatit. Naštěstí i na toto přišli chytré hlavy a vymysleli pravidla pro programátory, které když dodržují, tak se tento dluh minimalizuje (vždy tam ale nějaký zbyde). V principu jde o to, že cílem programátora je psát co nejkratší celé pěkné básně a výsledný program je pak sbírka těchto básní. Když pak potřebuji program upravit, tak jen vyměním či doplním nějakou tu báseň a je hotovo. Jednotlivé básně se pak novým programátorům dobře čtou a dokáží je doplnit, když je potřeba. V praxi se pak můžete setkat s takovými slovy, jako jsou mikroservisy, objektově orientované programování, servisně orientovaná architektura a podobně. Vždy to ale v principu znamená, že jde o sbírku krátkých básní, které se dají v případě potřeby popřeházet či doplnit.

Dokonce i výborní programátoři dokáží vytvořit špatný dluh. Jeden takový příklad špatného dluhu je jedna dlouhá krásná báseň. Říká se tomu monolit, a dokud ho nechcete změnit, tak je všechno v pořádku a všichni jsou spokojení. Problém je, když je potřeba do toho šáhnout a část vyměnit. Pak nastává problém, protože programátor neví, co má dělat. Má na vybranou buď vložit do básně pár veršů, které tam nepasují, ale bude to fungovat, anebo danou velkou báseň upravit a rozdělit do několika menších básní. Vložení veršů, co tam nepasují, programátoři vysloveně nesnáší, protože je taková báseň vysloveně dráždí, tahá za uši a oni nebudou dobře spát, dokud to nepřepíší. Zákazník za to většinou platit nechce, dyť ono to funguje, tak proč to řešit. Programátor ale nemá klidné spaní a tak to pak většinou řeší tak, že si najde jiný projekt.

Rozdělení monolitu do menších částí je většinou nějaký druh redesignu. Vyžaduje to celkem významnou investici, protože to není málo práce, ale celkově se to vyplatí. Tato investice, která je potřeba je právě ten špatný dluh, který vytvořil ten výborný programátor tím, že napsal jednu dlouhou krásnou báseň. Pokud v praxi někdy uslyšíte o tom, že někdo přechází na mikroservisy nebo na servisně orientovanou architekturu, tak řeší právě tento problém.

Autor: Ing. František Daněk
LinkedIn