neděle 22. března 2009

Sochař a kamen

Dnes nebude komentovat žádnou "politickou" událost anebo šuškandu, nebudu se zaobírat nějakým skvělým frameworkem, ale zkusím se s Vámi podělit trošku programátorského know how (možná silné slovo v tomto případě), které mi ještě zbylo. Nad některými věcmi člověk nepřemýšlí, prostě je dělá automaticky. Zkoušeli jste se někdy zamyslet nad tím, jak při programování řešíte úlohy, které máte zpracovat. Já jsem u sebe našel něco, čemu říkám metoda postupného opracování, a používám pro to metaforu sochaře a kamenu.

Představte si jak asi pracuje sochař, když má vytvořit nějakou sochu. Na začátku vezme neopracovaný kus kamene, majzlík, kladivo a začne s hrubým otesáním. Socha dostává nejdříve základní obrysy těla. Tady je hlava, trup, končetiny. Postupem času začne sochař zabíhat do větších detailů. Tady je potřeba vytesat prsty, oči, nos. Pomalými krůčky se blíží k finální podobě, a každý další úder přidává na detailu.

Vždy když programuji, používám stejný postup jako sochař. Tedy začnu hrubými obrysy a postupně přidávám na detailu. Snažím se nezabíhat do zbytečných detailů, dokud nemám hotové základní obrysy. Krásně vytesaná ruka, mi neposlouží, pokud nebude vidět, že patří k nějakému tělu. Výsledkem má být socha jako celek, na to musíme vždy myslet. Ne ruka, hlava či noha ač by byla sebekrásnější . Stejné je to při programování.

Moji výhodou oproti sochařovi je, že mohu skoro kdykoliv vrátit úder majzlíku o několik kroků zpět. Díky iterativnímu vývoji nemusím v hlavě držet zbytečné detaily, na které je ještě čas a nebo na ně nemusí vůbec dojít, protože se změní například můj pohled na věc, anebo zadání. Všechno má svůj čas. Zároveň mohu kdykoliv odevzdat něco, co se bude více či méně podobat požadované soše, v závislosti na počtu iterací. Nemusí být dokonalá, ale socha to je.