Hezký kód je k ničemu

Hezký kód je k ničemu

Někteří vývojáři vědí, jak z příšerného kódu udělat nádherný. Budou kritizovat tento článek. Ovšem vývojáři by se přece neměli starat o krásu kódu, to není jejich práce. Místo toho by se měli zaměřit na vytváření skvělých produktů, což je nesrovnatelně více uspokojující.

Móda kódu

Co definuje krásu kódu? Stejně jako názory na oblečení se názory na danou problematiku liší. I v kódování každým rokem nacházíme nové trendy. Jejich obhajovatelé nabízejí přesvědčivé argumenty, které vysvětlují, proč je schéma A lepší než schéma B. A někdo pak vydá knihu s vysvětlením, že schéma C je ještě mnohem, mnohem lepší. A bude to tak pokračovat navždycky, dokud zde bude nějaký developer.

Mezitím se vývojáři snaží sledovat definici krásy, aniž by si ji nutně uvedli do souvislostí. Někteří vývojáři jen slepě aplikují principy kódování, protože si je přečetli v knize. Věří, že existuje jen jeden způsob, jak dělat věci správně. Jako fanatici vysvětlují svým vývojářským kolegům, že by měli změnit způsob svého kódování, aby bylo možné dodržovat někde popsané zásady krásného kódu.

Tak se chová například jedna komunita PHP vývojářů. Navzdory tomu, že vytvořili software běžící na více než 80% všech internetových stránek, uvědomili si, že zapomněli psát hezký kód. Za pár let, možná i dříve, asi změní svůj názor a uvědomí si, že psát kód kvůli kráse je blbost. Pravděpodobně totiž přijde jiná móda a oni by v jejím stylu museli svůj kód přepsat. Stejně jako je zbytečné utrácet spoustu peněz za oblečení, které bude v módě jen letos, je zbytečné psát kód stylem, který bude v módě jen nějakou dobu. Je to nejlepší způsob, jak ztrácet čas.

Obchodní hodnota

Co dělají vývojáři? Píšou programy, které jsou prostředkem k dosažení větších cílů: vytváření produktů. A produkt uspokojuje služby uživatelům. Může se jednat o produkt, který je používaný jen interně nějakým týmem. Může to být však obrovský komerční produkt, jehož prodejem si vyděláte na živobytí. Ale na vrcholu každého programu stojí koncový produkt určený uživatelům. A proč uživatelé používají konkrétní produkt? Protože jim přináší určitou hodnotu, za kterou jsou dokonce ochotni zaplatit. To je obchodní hodnota.

Výborný způsob, jak pochopit pojem obchodná hodnota, je komunikovat s tím, pro koho konečný produkt vyrábíte. Obzvláště viditelné je to při refaktorizaci kódu. Podívejme se na jeden příklad.

Po nějaké době vývoje webové aplikace plánuje tým developerů, jak bude pokračovat dál. Vedoucí vývojář žádá menší přepracování. Během časných stádií vývoje používal tým obyčejné SQL dotazy, aby vše zvládl co nejrychleji. Teď se však složitost aplikace zvyšuje, problém by měl vyřešit přechod na ORM (Objektově Relační Mapování – technika zajišťující automatickou konverzi dat mezi relační databází a OOP jazykem).

Člověk, pro kterého je produkt zpracováván, se pak zeptá: „Jak bude tahle refaktorizace prospěšná pro samotný produkt?“ V hlavní odpovědi developerů zazní, že bez refaktorizace bude pokračování ve vývoji stále dražší a dražší. Naopak přechod na ORM sníží náklady na údržbu a zvýší rychlost vývoje do budoucna, i když teď nic nového zákazníkovi nepřinese. Jinými slovy je to investice do budoucnosti webové aplikace.

A pak jsou tu dvě možnosti, jak může tento příběh skončit. Majitel konečného výrobku může věřit, že má produkt budoucnost. To by jej vedlo k rozhodnutí, aby upřednostnil refaktorizaci. Alternativně si může myslet, že výrobek není dostatečně zralý, že je jeho budoucnost nejistá a nemusí chtít investovat do jeho upevňování. Obě rozhodnutí jsou platná, protože je to volba majitele konečného produktu na základě obchodní hodnoty.

Krása je zbytečná

Podívejme se na hezký kód opět z pohledu obchodní hodnoty. Když stojí developer před rozhodnutím, měl by se rozhodnout pro řešení, které využívá ošklivý kód nebo pro možnost B, což je krásný kód? Řekněme, že to prostě není správná otázka: Z pohledu koncového uživatele nedávají alternativy žádný smysl. Uživatelé se nebudou dívat na kód. A už vůbec ne v případě, že výrobek nebude dobrý. Takže vývojář by měl zvolit řešení, které přinese výrobku nejvyšší hodnotu.

Byli byste ochotni koupit si kus nábytku za dvojnásobnou cenu, protože řemeslník používá nejdražší dostupné nástroje? A co si myslíte o chudém řemeslníkovi, který i za použití levných nástrojů dokáže vytvářet skvělý nábytek? Který z těchto dvou řemeslníků je lepší?

Je-li výrobek dobrý, bude to s ním ještě běh na dlouhou dobu. Vývojáři budou mít možnost zlepšit jeho vnitřní fungování. Vezměte si například Drupal. Uvnitř jeho kódu se ukazují některé ne moc hezké věci. Přesto jej používají miliony webových stránek. A díky úspěchů potřebuje tým Drupalu, aby byl Drupal robustnější.

Bez ohledu na designové schéma kódu nebo programovací jazyky, které používáte, jste talentovaný programátor, pokud dokážete vytvořit užitečný produkt. Pokud dokážete vytvořit užitečný produkt a najít zákazníky, kteří jsou ochotni utratit více jenom za to, že kód bude krásný, jste oba jistě velmi šťastní. Ale nebude to trvat dlouho, protože brzy mu někdo poskytne stejnou službu levněji (možná totiž nebude psát kód tak vizuálně krásný) a vy přijdete o zákazníka.

Jediní lidé, kteří si mohou vydělávat na živobytí vytvářením krásných věcí, které nikdo nepoužívá, jsou umělci. Vývojáři nejsou umělci. Vydělávají si na živobytí tím, že vytváří věci, které lidi používají.

Zdroj: redotheweb.com, medium.com, obrázek: danielglasser.me

Komentáře

  • xOn

    Obávám se, že jste zapomněla na to nejelementárnější, totiž programování v týmu. Tam je ona zmiňovaná „krása“ kódu veledůležitá pro orientaci, nemyslíte?

    • Aneta Dufková

      Ok máte pravdu, to musím uznat. Ale teoreticky když celý tým píše stejným stylem, který ani nemusí být nijak zvlášť „krásný“ – jen je prostě jednotný, je to v pohodě a na kráse nezáleží, ne?

  • jiriknesl

    Co je „krásný kód?“

    Dokážete předvést příklad kódu, který je krásný a který není krásný při podmínce, že:

    1) krásný a ošklivý kód pojmenovává datové struktury podle toho, co obsahují
    2) krásný a ošklivý kód pojmenovává algoritmy podle toho, co dělají
    3) krásný a ošklivý kód neobsahuje žádný zbytečný kód (žádnou nadbytečnou abstrakci nebo mrtvý kód)
    4) krásný a ošklivý kód neobsahuje duplicitní kód

    Jinak refaktoring by měl být automatickou součástí vývoje software, nic o čem by měl management rozhodovat. Pokud vývojáři nejsou schopni dosáhnout vysoké kvality v době, kdy je projekt nový, čerstvý, můžu ze zkušenosti říct, že až projekt dosáhne úspěchu a začne růst tlak na změny, nepovede se jim to tehdy už vůbec.

  • emik

    Programovala jste někdy? Upravovala jste po někom program? Vracela jste se někdy k dva roky starému kódu?
    Krásný kod je o struktuře, přehlednosti, vedlejších efektech při změně, snadnosti úpravy, pochopení, rychlosti vývoje a rychlosti úprav.
    Prý žijete v IT, ale jenom na všeob rovině podobně jako ředitel IT firmy nebo vedoucí projektu.

  • Clary

    Vývojáři nejsou umělci… a proto Donald E. Knuth napsal Art of Porgramming…

Nahoru