Je pátek ráno. Mám hotovou implementaci a zbývá už jen zprovoznit integrační testy. První test. Drobný refaktoring a už běží. Jejda je tu ještě jeden. A padá. K čemu sakra je? Nemám potuchy. Kdo ho napsal? Franta? Ale ten už tu nepracuje! Vždyť to sakra musí fungovat. Zkusím změnit toto. Nepomáhá. Co zkusit tamto. Taky nic. Cože to už je oběd? Předělám integrační test na unit test. Sláva teď se to dá debuggovat. Cože, takhle se to přeci chovat nemůže. File.isDirectory vrací false a File.getAbsoluteFile().isDirectory() vrací true. To není možné. V tom počítači snad straší, vždyť to musí jet. Sakra musím na schůzi. Dvě hodiny v čudu. Musím udělat pár pokusů, jestli to není SecurityManagerem. Není. Cože, to už je pět? Mám pravidlo, že v pět odcházím. Ještě ho chvíli porušuji. Kašlu na to, jdu domů. Musí to počkat na pondělí. V noci ve dvě ráno se probudím, otevřu oči a znám řešení. Vždyť je to tak jednoduché!
Předpokládám, že se vám něco podobného také někdy stalo. Řešení zapeklitých problémů často člověka napadá, když na nich nepracuje. Při jízdě autem, ve sprše, při cvičení, na záchodě a i ve spánku. Někomu údajně přicházejí nápady ve snech, mě se obvykle zjevují hned po probuzení. Jednu dobu jsem se dokonce bál, že mě kolegové budou podezírat z toho, že nejsem tak neskonale geniální jak ve skutečnosti jsem. Že si budou myslet, že mám doma poradce, který mi všechno poradí. Večer nikdy nic nevím a ráno mám řešení. Podezřelé, není-liž pravda?
Samozřejmě nejsem první, kdo si toho jevu všiml, takže to tu nebudu moc rozebírat. V zásadě jsem si tu jen chtěl zaznamenat tuto radu.
Nemůžeš na to přijít? Tak vypadni od toho počítače a jdi dělat něco jiného.
Ideálně něco, u čeho se nedá myslet na programování. U mě je to těžké, na programování dokážu myslet skoro u všeho. Ale je pár věcí u kterých to nedovedu. Třeba kreslení. Nebo spánek. Někdo dokonce tancuje, ale tak špatně jsem na tom ještě nikdy nebyl.
A jsou to právě ty činnosti, které nás donutí to pustit z hlavy a po kterých nás to prostě napadne. Nevím čím to je. Psychologové si myslí, že to vědí, ale moc bych jim nevěřil. Pokud by vás snad zajímali detaily, tak si přečtěte Pragmatic Thinking and Learning, tam je to rozpitvané dost. Kdo nerad čte může si pustit video o Hammock Driven Developmentu.
Já už budu končit, musím vypadnout od počítače a vymyslet, jak přesvědčit šéfa, aby mě platil i za čas kdy spím.
To znám. Ačkoli jsem si na pomodoro moc nezvykl (což je škoda), už se mi stalo, že mi přestávka pomohla najít problém nebo ujasnit situaci, aniž bych nad tím vědomě přemýšlel.
A zrovna včera jsem napsal nějaký algoritmus v Prologu, našel nějaké řešení jednoho problému (myyslel jsem, že nejlepší) a šel běžet. Najednou mě napadlo, že tam mám hloupou chybu v jednoduché podmínce a že jsem si tím asi ořezal část řešení. Až jsem se vrátil a zapnul notebook, ta stupidní chyba tam opravdu byla. Opravil jsem ji (dokonce stačilo tu podmínku smazat, protože se to hlídalo i jinak) a našel jsem tím ještě lepší řešení.
Dnes ráno jsem byl obzvlášť unaven 🙂
Jo tohle určitě funguje. Já s tím vědomě pracuju už mnoho let. Když je nějaký problém, nechám ho “hlodat” někde na hranici vědomí/nevědomí/podvědomí. A ta nevědomá část na tom pracuje, a když je to hotový, tak to “vyhodí do vědomí”. Problém je, že se to nedá nějak naučit nebo formalizovat. Je to taková pocitová záležitost.
Na druhou stranu, i když vím, jak to funguje (a jak je to efektivní), tak mám problém se odpoutat, pokud jsem na problému zaseklý. Prostě mi to nedá, abych to nerozlouskl, ať to stojí co to stojí.
O tématu Hammock Driven Developmentu (od mého oblíbence Riche Hickeyho) už nějakou dobu vím, ale pořád jsem se ještě nedostal ke shlédnutí té přednášky. Ještě na to asi nejsem připraven 🙂