Produkty a nástroje

Když chce malíř vytvořit obraz (produkt) vezme štětec (nástroj) a namaluje ho. Jasné jako facka. Co ale vlastně dělá malíř, když vezme tužku a namaluje si nejdřív skicu?

Skica se tvoří stejně jako výsledný produkt, vypadá jako výsledný produkt, ale ve skutečnosti je to nástroj, který autorovi pomáhá výsledný produkt vytvořit.

Tento paradox se v různých variantách vyskytuje velmi často. Když se staví dům, je potřeba nejdřív postavit lešení, které samo o sobě vyžaduje stavařský um, zastalo by i nějaké z funkcí stavby, ale před dokončením je strženo. Sloužilo jen jako nástroj zedníků.

Jako obvykle co je všeobcecně zřejmé ve spojitosti s fyzickými věcmi je všeobecně ignorováno ve spojitosti s myšlením, přestože jsou jeho zákony stejně tvrdé a nevyhnutelné, jako ty fyzikální. Ve chvíli, kdy otevřeme textový editor, IDE nebo databázi se prostě předpokládá, že výstupem jakékoli práce s nimi bude balíček určený ke konzumaci klientem (ať už externím nebo interním).

Tyto nástroje však mohou stejně dobře sloužit jako rozšíření autorovy mysli, pomocí kterých se dokáže orientovat v rozsahu nebo komplexitě, které by jinak nezvládla. Zkuste si ale po několika dnech kódování na otázku šéfa “Co máš hotovo?” odpovědět “Nic, ale už rozumím tomu problému.” Nedej bože, aby se dozvěděl, že jste všechen kód psali do REPLu místo do aplikačního serveru nebo všechen text do markdown texťáku místo do Wordu na sdíleném disku s tabulkou revizí a firemní šablonou.

Rozlišení, zda pracujeme na baráku nebo si jen přistavujeme další patro lešení, které nám na tom baráku umožňuje pracovat, pak ovlivňuje úplně všechno. Jaké nástroje používáme, co je na výsledku důležité nebo co, jak a s kým sdílíme. Jelikož ale není žádný spolehlivý způsob, jak v intelektuální práci toto rozlišení manifestovat ostatním, dotlačí nás většinou praktické problémy zpátky do řady a my pak, stejně jako všichni ostatní, stavíme barák abychom mohli postavit barák (a podle toho to pak vypadá).

Přitom jeden z nejdůležitějších programátorských konceptů, které jsem si během kariéry osvojil, je, že abstrakce se nemají designovat, ale objevovat. Programovací jazyk pro mě není jen nástroj, kterým počítači říkám, co má dělat, ale skica, která nastavuje zrcadlo všem mým mylným představám. A datové typy a refaktoring je pak pro mě guma, kterou skicu překresluji, dokud není konzistentní s realitou.

Ano, kouká z toho násobně víc práce, než z naivně lineárního přístupu, ale to je daleko víc problém vlastního očekávání, než objektivní překážky.