úterý 27. září 2011

O frameworku na výrobu kompotů, mojí mámě a rozhodování

Představte si tu situaci, potřebujete najít framework na dělání kompotů. Máte jenom přibližnou představu jaké kompoty budete dělat. Řekněme, že máte ovoce, které tam budete sypat, potom máte sklenice a vodu. Když budete moje máma, budete váš myšlenkový pochod vypadat následovně. No jablka a hrušky ze zahrádky okrájím, hodím to dovnitř, zaleju vodou a nastavím ať se to vaří půl hodiny. Pokud budete založením systémový analyzátor problémů, bude váš myšlenkový pochod asi následující. Zanalyzujete typ stromů a ovoce, které vám roste na zahradě. Spočítáte si průměrnou úrodu a spotřebu za poslední deset let, včetně kontroly skladových zásob. Z toho začnete uvozovat ideální poměr velikosti sklenice, velikosti ovoce, doby vaření a teploty. Se zvážením všech kritérií budete pociťovat nepříjemné šimrání nejistoty kdesi vzadu a proto přistoupíte k otestování. Navaříte dvě sklenice v každém frameworku a pro jeden z nich se rozhodnete. Samozřejmě pořád s tím samým blbým pocitem nejistoty, protože dvě sklenice je přece málo a vy potřebujete mnohem víc časů, víc testovacích vzorků, víc...

Rozdíl mezi přístupem mojí mámy a systémového analyzátora (horší název typu člověka už mě napadnout nemohl) bude v tom, že zatímco u nás doma si budeme dopřávat zeleninu a ovoce z komponentu celkem pravidelně a brzo, tak vám dojde sranda až budete muset zavařit znojemské okurky, protože s těmi jste na začátku vůbec nepočítali. Protože okurky prostě nerostou na stromech a nebylo to v zadání.

Poučení z výše uvedeného příběhu je v tom, že když budete dlouho otálet s výběrem jakéhokoliv frameworku stanou se vám dvě věci. Za prvé se nebudete soustředit na to co vás živí, a za druhé nikdy neodhadnete co budete v budoucnu opravdu potřebovat. Zapomeňte na cokoliv,co trvá vybrat déle než týden. Vemte to co vám do rukou padne na první pokus a postavte na tom izolovanou část systému. Pokud se to osvědčí iterativně přidávejte. Nebojte se udělat krok zpátky. Neosvědčilo se? Ok, tady je poučení, které z toho máme. Obvykle mívám pocit silného "systémového přístupu" při výběru webového frameworku. Bohužel většinou to končí naprosto tragikomicky, protože se analýzou dojde k tomu, že nejlepší bude, když si to napíšeme sami. To je pochopitelně to nejhorší co můžete udělat z dobře známých důvodů (udržovatelnost, dokumentace, křivka učení atp.).

Nedávno jsme s Lukášem Křečanem řešili klasický problém "kam s ním". Šlo o data, které byla z povahy dokumentově orientované. Nakonec jsme vybrali MongoDB, přestože jsme před tím nezkoušeli minimálně pět dalších typů databáze co nám kdo podsouval a ani netrávili týdny zkoumáním co by se nám kde mohlo hodit. V podstatě jsme sáhli po tom prvním co nám padlo do ruky a ono to funguje.

Svět je prostě plný nejistot a neznámých a pokud v něm chcete dělat rozhodnutí nemůžete se spoléhat, že je všechny rozklíčujete. Zjednodušeně řečeno: ten kdo se dokáže rychle adaptovat se na měnící podmínky vítězí. Řiďte se tím nejenom pokud vybíráte zavařovač ovoce a zeleniny, ale i výběr databáze nebo webového frameworku.