Jan Martinek

Předčasná optimalizace

January 31, 2009

Nebudu teď mluvit o programování. Předčasná optimalizace je jeden z nejhorších prohřešků programátora. Jde o upřednostnění výkonu před logickým návrhem aplikace (programu). Ve výsledku je pak většinou špatně navrženou aplikaci obtížnější optimalizovat pro vyšší výkon, vše je složitější a nepřehlednější.

V patnácti jsem začal vytvářet webové stránky, za pár měsíců jsem měl několik obstojných běžících aplikací a webů. V sedmnácti, jsem vytvořil první komerční projekt, jako platbu jsem dostal dvě zelené složky na papíry a 2500 bílých kancelářských papírů A4, pak už jsem fungoval na dohodu.

im004371.JPG

Čtyři dny po 18. narozeninách jsem si vyřídil živnosťák. Na podzim stejného roku jsem navrhl a rozjel systém pro správu sítě DVD půjčoven a dál se o něj několik let staral. Mezitím kolem proběhlo x dalších projektů.

Finance nebyly dlouhou dobu problém, také díky stálé, velmi výrazné podpoře rodičů. Ani jsem neřešil, jak vytvářím ceny - pro udržení statu quo (kdy množství práce stoupalo spíše díky poptávce než kvůli mé snaze) stačilo být velice levný, daleko před jakoukoli konkurencí.

O dva roky později jsem seděl znechuceně doma, přemýšlel, k čemu dřív skočit a nadával, že za to stejně skoro nic nedostanu. Snažil jsem se zvyšovat svou efektivitu, ale práce bylo příliš mnoho, byla jednotvárná a nebavila mě. Bylo třeba to všechno opustit.

Postupně jsem rozvázal spolupráci se starými klienty a pomalu nacházel nové - přechod byl obtížný: staré projekty pořád braly mnoho času, to vše na úkor kvalitní komunikace s klienty a spolehlivosti v plnění termínů.

Myslím, že to mám za sebou. Po mnoha pokusech, snad. Teď je teď a ne "až najdu čas". Za týden je za týden a ne "nejspíš přespříští týden, pokud mi do toho něco nevleze". Ve středu je ve středu. V neděli začíná být volno. Když něco dělám, pečlivě zjišťuji všechny podrobnosti, abych si byl jistý, že to dělám správně.

Předčasná optimalizace je jeden z nejhorších prohřešků programátora. Jde o upřednostnění výkonu před logickým návrhem aplikace (programu). Ve výsledku je pak většinou špatně navrženou aplikaci obtížnější optimalizovat pro vyšší výkon, vše je složitější a nepřehlednější.

Programy se dají naprogramovat znova a lépe, ale stojí to spoustu dalšího času (a peněz). Životy se znova naprogramovat nedají, optimalizace stojí o to víc času, je třeba opravdu najít a zanalyzovat všechny proměnné.

Moudro otce Fourata pro tento týden: Pokud něco děláte a sami si stanovujete odměnu, přemýšlejte, jakou to má skutečnou cenu - nestanovujte cenu podle toho, co si chcete dát příští čtvrtek k obědu. Budete spokojenější příští čtvrtek i později.

A snad ještě něco: zisk nejsou jen peníze.