/ janturon.cz / Od kodéra k analytikovi / O programování

O programování

Fylogeneze

1960 Společnost byla po Druhé světové válce opojena složitostí počítačů a vláda USA jejich úspěchem při prolamování šifer nepřátel, a protože to byl zároveň úsvit konjunktury, nikdo si příliš nevšímal, že ne všude zavádění počítačů znamená zvýšení produktivity.

1980 Počítačoví blázni (nerds) tehdy programovali prakticky na úrovni hardware a štědré dotace jim umožňovaly, aby se nenechali rozptylovat něčím tak přízemním, jako jsou světské požadavky zákazníků. IT žily svým vlastním životem v klášterech univerzit a armádních střediscích - viz Pojídači koláčů.

1995 Pak přišel ARPANET a po něm INTERNET a hlavní pracovní náplní počítačů se stala komunikace. Z IT se staly ICT. Komunikace se stala také jedním z hlavních požadavků na programátory. Tichým bláznům odzvonilo, doba vyžadovala kreativní umělce (geeks).

2005 Období konjunktury zatím ustalo, vidina o tom, že internetové obchody budou zlaté doly vzala za své, trh se nasytil a konkurence nutila k maximální efektivitě. Programátoři se začali specializovat na kodéry, kde se kreativita stala nežádoucí, na analytiky, kteří vymýšleli, jak na to, a na obchoďáky rozhodující, do čeho se vyplatí pustit a do čeho ne.

Lingvistická koncepce

Česká republika není kolébkou programování, většina zdrojových materiálů je anglicky, poskládaná ze zahraničních odborných prací a mezinárodních diskuzních fór a blogů. Programátoři nejsou bohemisté, syntaxe jazyků je beztak anglicky, a proto se většinou s překladem nových termínů nenamáhají. Bohemisté nejsou programátoři: na první pohled jednoznačný překlad (například návrhový vzor Command = Příkaz) může být pro českou IT komunitu nepoužívaný, umělý a nepochopený. Původní anglické termíny proto překládám pouze tehdy, vyskytují-li se v českém žargonu. Pro snadné googlení všude do závorky dodávám původní anglický odborný termín).

Zdroje

Ontogeneze

Programátor prochází vývojem. Většinou je to tvůrčí osobnost, která po zvládnutí syntaxe nějakého jazyka získá nové možnosti vyjádření. Sebedokonalejší znalost syntaxe ale nestačí k trvalé udržitelnosti větších projektů. To se programátor učí hlavně ze zkušenosti starších kolegů a z diskuzních fór, případně ze školení (v uvědomělé firmě) nebo z knížek, a především z vlastních chyb.

Abychom se z chyby poučili, musíme ji napřed udělat. Odborník je člověk, který udělal velmi mnoho chyb. Je to cesta bolesti, obzvlášť když nás chyba potká v nějakém drahém projektu. Tato kniha se pokouší všechny důležité chyby ukázat, aby si je programátor mohl vyzkoušet na svém pískovišti.

Neexistuje ale nic takového, jako předvařená zkušenost. Nestačí si přečíst, o co jde, jsou dvě úrovně znalostí. První (talk) je vědět, že královský gambit se hraje 1. e4 e5, 2. f4. Ta druhá (walk) znamená dosahovat výsledky s touto taktikou v reálných partiích.

S tím, jak se kodér učí, dokáže přesněji předvídat a vyhodnocovat. Čím je zkušenější, tím víc se soustředí na analýzu, a tím méně času věnuje implementaci, protože píše znovupoužitelný kód. Analytikové většinou bývají hrdí na to, že už nemusí psát kód. Ale analytik, který nebyl kodérem, není muž na svém místě. Dnes nestačí pouhé know-how malé firmičky, protože každý projekt bývá navázán na další projekty a originalita jejich řešení je ekonomickou překážkou. Analytik by si měl osvojit globálně osvědčené vzory a přiřazovat úkoly kodérům podle jejich schopností. Pokud si kodér s úkolem neporadí, je to chyba analytika.

Zhruba toto bývá skryto pod požadavkem min. 5 let praxe na uchazeče v oboru. Zbytek knihy se to snaží vysvětlit konkrétněji na příkladech. Pokud se je nejen naučíte, ale také si je zažijete (walk, tedy změní to váš způsob vyhodnocování), měli byste získat to, co je vágně označováno jako programátorské myšlení.

Předpoklady

Tato kniha je esoterická: předpokládá, že ji čtou lidé alespoň na úrovni kodérů, kteří umí převést jednoduchou myšlenku do nějakého programovacího jazyka, aniž by zápasili s elementární syntaxí. Pro příklady v knize byly zvoleny rozšířené jazyky Javascript (flexibilní interpret) a C++ (časem osvědčený kompilátor) s vírou, že alespoň jeden z nich je blízký většině programátorů. Pokud ovládáte pouze jeden z nich, tato kniha vám navíc umožní rychle proniknout do toho druhého. Příklady si tu a tam, kde je syntaxe těchto jazyků nedostačující nebo těžkopádná, vypomáhají i jinými jazyky.