Malá noční úvaha nad programováním
Programování je zvláštní druh lidské činnosti. Leží totiž na pomezí mezi třemi disciplínami: vědou, inženýrstvím a uměním.
Věda je to ve chvíli, když vás problém donutí odsednout od počítače a přemýšlet. Když musíte vzít do ruky papír a tužku a vše si kreslit. Když vymyslíte vlastní geniální algoritmus na něco a pak na Googlu zjistíte, že jste právě vymysleli ten nejlepší, co je lidstvu známý. Když na zkoušce ze složitosti během hodiny sami odvodíte důkaz, který jste předtím na přednášce nechápali, a máte z toho radost celý den. Když si pro vlastní potěšení napíšete simulaci Turingova stroje v PHP. Když vám závorky v Lispu najednou nepřijdou jako zas tak strašná překážka bránící jeho zkoumání. Zkrátka když se vám programování zdá být po matematice druhou myšlenkově nejčistší činností na světě.
Inženýrství je to tehdy, když sepisujete požadavky, specifikace a odhadujete čas tvorby programu. Když při projektu postupujete podle přesné metodiky. Když chápete, že u programů jsou strávený čas, kvalita provedení a investované peníze spojenými nádobami. Když víte, že váš program není dokonalý, a chcete změřit, jak moc. Když pečlivě vkládáte chyby a requesty do bug-tracking systému a třídíte je podle priority. Když disciplinovaně píšete testy, komentáře a dodržujete v kódu pravidla, jejichž popis zabírá pět stran A4. Když vám paralela mezi stavěním budov a tvorbou programů nepřijde uhozená. Zkrátka když jste programování akceptovali jako normální obor lidské činnosti.
Umění je to tehdy, když řeknete "tenhle program je elegantní" nebo "tohle je čistý kód". Když máte z programu estetický požitek. Když se nad nějakým obratem v cizím kódu zasmějete, protože vám přijde vtipný. Když máte ochromující pocit, že nevíte, jak něco udělat, a potom vás řešení onoho problému napadne ve spánku. Když si ze dvou možných způsobů řešení čehosi vyberete instinktivě ten správný a neumíte to racionálně zdůvodnit. Zkrátka když při programování nemyslíte, ale cítíte.
A všechny tyhle věci mě na programování strašně moc baví.