neděle 16. října 2016

Vývojáři sobě - jOpenSpace

Byl jsem na letošním jOpenSpace 2016! A parádně jsem si to užil. Nebyl jsem tam sám. Sešlo se nás skoro čtyřicet. Jako tradičně se to odehrávalo na odlehlém místě mimo civilizaci. V pátek večer příjezd. V neděli odpoledne odjezd. Sjeli se vývojáři z měst jako Praha, Ostrava, Písek, Třebíč a dokonce i z Brna :-). No prostě z celé České Republiky. Jo, a taky z Londýna.


Tohle setkání nebo jak je oficiálně uvedeno nekonference, klade na účastníky jednu důležitou podmínku. Aby jste se mohli zúčastnit, musíte si připravit lightning talk. Něco co se vejde do deseti minut. Může to být cokoliv co obohatí obzory naší české vývojářské komunity. Nejčastěji jsou tu proto k vidění softwarová technická témata. Ale objevují se i přednášky z oborů jako je biologie, psychologie, řízení lidí a v jednom roce byla i skvělá přednáška o pečení chleba od Honzy Štěrby z Vendava.

Zmíním pár letošních, které mi utkvěly v paměti.

Pátek

Zahajovací a pro pátek večer jedinou přednášku si vzali Ondřej Moudrý společně s kolegou ze Zeebry. Poodhalili nám roušku fungování recruitingu v Česku. Velmi zajímavé povídání. Nevím to jistě, ale asi zrovna tato přednáška se nenatáčela. Ze všech ostatních budou podle všeho profesionálně zpracované video záznamy.
https://twitter.com/JaroslavHolan/status/784474894901841920


Sobota

Sobota ráno. Maratón přednášek může začít. První vybíhá Tomáš Záluský z TopMonks. Povídá o projektu, na kterém pracuje ve svém volném čase. O bezbolestné a typově bezpečném volání PLSQL stored procedur z Javy.
https://twitter.com/JaroslavHolan/status/784659565577134080


Následuje Víťa Plšek, jenž se profesionálně věnuje školení frameworku AngularJS. Vysvětlil nám, že Angular 2.0 stojí na novém začátku.
https://twitter.com/JaroslavHolan/status/784658899370643456


Honza Horalík z Vendava se odvážně pustil do ukázky testování bezpečnosti webových aplikací nástrojem Burp Suite. Tohle si musím někdy zkusit.
https://twitter.com/JaroslavHolan/status/784682405143646208


Už jste si zkusili Bobril? Ne? Tak to pak koukně na záznam přednášky Tomáše Látala z GMC a už nikdy více nepoužijete jiný frontedový framework :-). Tomáš se na přednášku hodně připravoval. Dokonce si sladil barvu košile s grafy na slidech :-).

Daniel Kvasnička z Vendava měl sebou hardwarovu hračku: řídicí jednotku do auta ELM327. Pěkná vecička pro vizualizaci dat z auta. Nevím jak to dopadlo, ale hned po přednášce se mu ozvalo pár zájemců, že by si rádi od něj zkusili udělat diagnostiku.
https://twitter.com/JaroslavHolan/status/784723637186203648

Další kolega z Vendava, Ondřej Nekola aka Satai představil testovací framework Genesis postaveném na úspěšném Spocku. Spock mám rád, na tohle musím taky někdy kouknout. Vypadalo to nadějně.
https://twitter.com/JaroslavHolan/status/784731568703152128

Hned po Ondrovi jsem si střihl přednášku já. Pár tipů jak zefektivnit činnost zvanou práce. Posbíráno z knih Hluboká práce, Inovátoři, Zen programmer a z vlastních zkušeností.
https://twitter.com/tomaszalusky/status/784735478172028928


Lukáš Křečan z Liftága nám ukázal jak zneužít Java 8 lambda šipečku pro dobro i zlo. Na GitHubu jsou dostupné zdrojáky. Ovšem doma to nezkoušejte!
https://twitter.com/JaroslavHolan/status/784757789688225792

Pavel Jetenský aka Jety se nemohl rozhodnout, které ze dvou témat prezentovat. Tak se rozhodl zkusit odprezentovat obě. A víte co?...dal to :-). Koukněte pak na video. Byla to sranda. Šlo o "Příprava relačních dat pro test" a o knize "No more Mr. Nice Guy".
https://twitter.com/JaroslavHolan/status/784781834467049472


Večer se pak diskutovalo, pilo pivo a hodovalo. A jelikož to byla geekovská akce, měl každý na sklenici svůj vlastní čip :-)
https://twitter.com/JaroslavHolan/status/784806492176281600


Neděle

Neděle už byla celkem volnější. Každý si vybral program podle toho na co se zrovna cítil. Proběhlo pár posledních přednášek a tři workshopy. Mezi nimi se objevil průkopník reaktivního programování Jakub Kočí z BudgetBakers s přednáškou o ClojureScript.

https://twitter.com/JaroslavHolan/status/785031118353534976


Já se místo dvou workshopů vydal na malý výlet do blízkých Kojčic u Pelhřimova.
https://twitter.com/JaroslavHolan/status/785061092338831360


Na konci akce proběhlo hlasování o pět nejlepší přednášek, které byly oceněny roční licencí na produkty společnosti JetBrains.

S Danem a Lukášem jsme se společně umístili na skvělém pátém místě. Licence, ale byla jen jedna. Nezbylo nic jiného než se o ni porvat :-)

Ale dopadlo to dobře. Hlavní organizátoři Pavel Jetenský a Honza Novotný se vzdali své výhry v náš prospěch. Za to jim děkujeme :-).


 Příští rok přijeďte taky

Děkuji všem organizátorům za uspořádání této parádní akce. Byla to skvělá příležitost potkat a osobně se pobavit s lidmi o vývoji softwaru. A taky se probíraly zákulisní informace o stavu IT firem v ČR :-). Příští rok přijeďte taky. Počet je omezen na magických 42 účastníků.











sobota 3. září 2016

Špatná zkušenost s reklamaci bot v Office Shoes

Zvažoval jsem jestli mám o této reklamaci psát. Jestli bych to prostě neměl jen tak hodit za hlavu a více to už neřešit. Ovšem, jak jinak dosáhnout lepších služeb v České Republice, když nebudeme odstraňovat nedostatky. V tomto případě je nedostatkem špatný servis při vyřizování reklamace bot. Rád bych, aby si obchodníci svých zákazníků více vážili. Aby se snažili jejich stížnosti a reklamace vyřešit více k prospěchu zákazníků, než k prospěchu vlastnímu.

V reklamačním listě jsem napočítal celkem čtyři citace ze zákona. Odkazy na co vše mám právo, jaké mám povinnosti, jaké má prodejce, s čím vším jsem se měl před obutím bot seznámit a pod. Mně osobně jde více o spokojenost se službou než o dodržování zákona.

Otázka na společnost Shoebox CZ provozující prodejny Office Shoes a také na všechny, kteří jsou v roli poskytovatele služby:  "Jak by jste si přáli řešit reklamace, kdyby žádný zákon neexistoval? Co je pro vás ideální stav? Spokojený zákazník nebo 1.880,- Kč v kapse?"

Reklamoval jsem boty v hodně 1.880,- Kč po 20 dnech od nákupu. Jelikož jsem si je pořídil v létě, kdy chodím většinou v jiných otevřených botách, tyhle jsem si obul odhadem tak 4x - 6x. Včetně toho, že 1x jsem je zkoušel v prodejně. Uvádím to proto, že dle vyjádření na reklamačním listu jsem tyto boty poškodil: "nesprávným obouváním obuvi". A tak si říkám, pokud si obuji boty maximálně 6x a ony se poškodí, není na těch botách něco špatně? Co je to za materiál, že nevydrží šest obutí a vyzutí?
Popis závady: Na pravé botě je rozpárané šití.



Ano, možná jsem nemehlo a možná se neumím správně obouvat. Pro srovnání tady mám boty, které vlastním cca 2 roky. Odhadem 300 obutí a vyzutí.



Další boty odhadem 100 obutí a vyzutí na mých nohách:



Tyhle mám už hodně dlouho, cca 600 obutí a vyzutí:


Tuhle sportovní obuv mám rok, cca 100 obutí a vyzutí:


Tyhle jsem moc nenosil, cca 20 obutí a vyzutí:

Další cca 100 obutí a vyzutí:

Dnes mi v prodejně řekli, že se mohu písemně odvolat. Zkusím to. Sepíšu "Nesouhlas s vyřízením reklamace" přiložím tento článek, pošlu na asdresu SHOEBOX CZ s.r.o., Zákaznické centrum, Václavské náměstí 66, 110 00 Praha 1 a budu čekat na odpověď.

neděle 17. července 2016

Kniha Inovátoři, Walter Isaacson

Právě jsem doposlouchal nebo jak občas uvádím, dočetl ušima audioknihu Inovátoři od Waltera Isaacsona. Kniha mě zaujala natolik, že jsem si ji musel koupit i v papírové podobě, abych se mohl k některým příběhům pohodlně vracet a znovu si je pročíst. Na takové to prolistování a letmé prohledávání je papírová kniha přece jen lepší než audio a nebo ebook.


Hlavním sdělení knihy je, že k inovacím dochází ze spolupráce více lidí. Walter Isaacson na mnoha příbězích z 19. až po dnešní 21. století dokazuje, jak právě týmová hra posouvá technologický vývoj kupředu. A nejedná se vždy o nějaké evoluční mega skoky, většinou jde jen o malé krůčky jenž staví na teoriích předchůdců. Důležitost interakce mezi lidmi jenž podporuje kreativitu si uvědomovaly třeba Bellovy laboratoře. Kanceláře, dlouhé chodby a další prostory byly uspořádány tak, aby se náhodně setkávali lidé z různých oborů. Teoretici, materiáloví vědci, elektrotechnici a další se navzájem ovlivňovali a inspirovali. Právě setkávání lidí z různých specializací má za následek ty nejkreativnější inovace. Dalším důležitým prvkem inovací je spojovaní nesouvisejících věcí. Třeba spojení umění a vědy. Když člověk pochopí, která odvětví se navzájem doplňují, může z toho vytěžit.

Zajímavou zmínkou v knize je také vliv žen na vývoj IT. V dnešní době se bere, že svět programování patří zejména mužům. Ovšem na začátku tomu tak nebylo. Byly to hlavně ženy, které staly u zrodu programování. Pánové se na začátku 20. století věnovali zejména hardwaru, který považovali za nejpodstatnější. Zatímco programování brali za podřadnou práci vhodnou pro sekretářky. Pěkně to shrnuje Jakub Čížek v článku na Živě.cz, kde se odkazuje právě na knihu Inovátoři.

V knize je uvedeno spousty zajímavých a inspirativních myšlenek. Asi nejvíce mě oslovil Larry Page z Googlu:
"Až si budete nastavovat cíle, musíte se trochu utrhnout z řetězů. Nenechte se zastrašit nemožným. Měli by jste se pokoušet o věci, které většinu lidí ani nenapadnou."
S tímto se naprosto ztotožňuji. Líbí se mi jít v myšlenkových pochodech až na samé hranice fantazie a ty se pak pokusit realizovat. A to i přesto a možná zejména proto, že většina lidí uvádí, že to nejde.

Snad v každé kapitole je zmínka o umělé inteligenci. Již od prvních sestrojených počítačů se filozofovalo, zda-li takový stroj bude někdy samostatně myslet, jednat a zda-li bude schopen si uvědomovat sám sebe. Walter Isaacson si na konci knihy trochu posteskl, že skutečná umělá inteligence na sebe možná nechá čekat ještě několik generací či dokonce staletí. Tady bych mu trochu oponoval, protože umělá inteligence už je kolem nás v hodně systémech. Jen třeba takové rozpoznávaní obrázků spadá do této oblasti a je již pár let úspěšně vyžíváno.

Na příkladech se superpočítači rozebírá své důvody. Tak například superpočítač Watson sice vyhrál soutěž Jeopardy (u nás "Riskuj!"), ale sám o sobě si to vlastně neuvědomoval. Neuvědomoval si, že hraje nějakou hru, proč ji hraje a vlastně si ani neuvědomoval, že vyhrál. Další souboj mezi člověkem a počítačem se stal, když Garry Kasparov prohrál šachovou partii s Deep Blue od IBM. Kasparov na to později reagoval, že hrál s budíkem za 10 miliónů dolarů. Stroj jen využil silného výpočetního výkonu a masivních znalostí šachových partií. Možná více rovnocenný souboj by to byl, kdyby na jedné straně byla skupina spolupracujících šachistů a na druhé superpočítač. Superpočítač je vlastně systémem navzájem spolupracujících počítačů.

Zamlouvá se mi myšlenka, která zazní ke konci. Že lepší je vytvořit symbiózu mezi člověkem a počítačem než samostatný myslící stroj.
Svatým grálem vypočetní techniky nemusí být umělá inteligence. Namísto toho může být naším cílem hledání způsobů, jak optimalizovat spolupráci lidských a počítačových schopností - jak utužit partnerství, v němž necháme stroje dělat to, co umí nejlépe, a ony nás nechájí dělat to, co nejlépe umíme my.
 Budoucnost bude patřit lidem, kteří dokáží nejlépe vycházet s počítači.

Celkově knihu hodnotím pěti hvězdičky z pěti. Doporučuji všem co se zajímají o inovace a historii výpočetní techniky.

neděle 14. února 2016

Zápisky ze Science Café: Autonomní vozidla

V úterý 9.2. 2016 jsem se zúčastnil zajímavé přednášky o autonomním vozidlech v rámci cyklu Science Café. Prostředí kavárny Potrvá, kde se akce konala mi hodně připomínala Loft No. 8 ve které se pravidelně koná TopMonks Caffè. Neformální prostředí, mírně v podzemí, bez oken, řečník stojí uprostřed mezi diváky a ti si mezi tím popíjejí nápoj dle vlastní volby. A i přesto, že se tomu říká cafe, většina si dala pivo :-).  Tedy nejedná se o klasický typ prezentace s řečníkem před plátnem nebo tabule, jak jsme na to zvyklí z akademického světa. Celkově to na mě udělalo dobrý dojem. Určitě se tu zas někdy musím stavit.

Přednášku o autonomních vozidlech měl doc. Ing. Zdeněk Lokaj, Ph.D. V současné době působí v Ústavu aplikované informatiky v dopravě, na Fakultě dopravní ČVUT v Praze. Zde je pár mých komentovaných skečnotů.

 
Velkým cílem do budoucna bude komunikace mezi auty. Komunikací se rozumí předávaní informací o aktuální rychlosti, směru jízdy a dalších technických dat zajišťujících bezpečný a plynulý provoz na silnici. Tým, který se o tomuto tématu věnuje tlačí zejména na její standardizaci. Tedy, aby výrobci aut, přijali jednotný komunikační protokol.
Nejsem moc nakloněn nějakým povinným nařízením, jelikož dost často to nutí výrobce implementovat řešení méně efektivní, než jaká by dokázal s vlastním návrhem. Nicméně pro pohodový provoz autonomních vozidel na silnicích to bude asi potřeba. Každopádně je dobré myslet i na situace, kdy se na silnicích objeví auta, která toto budou porušovat a budou komunikovat svým vlastním systémem. Řešením může být systém třetí strany, který bude fungovat jako takový "tlumočník" mezi těmito dvěma různými komunikačními protokoly.

Jaké překážky nám ještě brání provozu autonomních vozidel na veřejných komunikacích? Mnozí si možná myslí, že je to technická stránka. Ta, ale zdá se být z velké části vyřešena. Různě po světě již dnes jsou malé i velké věděcké týmy, jenž za sebou mají najeto tisíce kilometrů s autonomními vozy různých značek.
Technologie zdá se být připravená. To co zatím vyřešeno není je legislativa. A legislativa je bohužel strašně pomalá. U některých věcí může schvalovací proces trvat až deset let. Je třeba také rozhodnout kdo ponese zodpovědnost za případné nehody způsobené autonomním vozem. Bude to výrobce nebo majitel vozu?



A jak to bude se zákazníky? Dokáži dnešní "uživatelé" vůbec přijmout autonomní vozy? Dokáží se zbavit nutnosti řídit? Pro mnohé je totiž automobil určitou hračkou, šperkem, kterým ukazují stupeň svého společenského postavení. S příchodem autonomních vozů může jeho vlastnictví postrádat smysl. A auta se mohou jen pronajímat na určité dny a hodiny. Což ostatně zaznělo v loňském CZPodcastu o Roboautech. Z vozů, jak je známe dnes, se totiž časem může stát spotřební zboží. Něco jako takový malý autonomní autobus.

Z projektů, které za sebou mají úspěšné testy je vhodné zmínit italský Viac Vislab a americký Google Car. Tým Vislab má za sebou úspěšně zvládnutou jízdu samořídícím autem z Parmy do Šanghaje. Jednalo se o elektromobil a rozhodovalo se na základě senzorů.
Google Car je mezi veřejnosti zajisté více znám. Ti mají jak v reálném, tak simulovaném prostředí najeto tisíce mil. Jedno omezení co má Google auto, je že může jezdit jen v místech, které bylo dopředu nafoceno speciální kamerou.

 Co tedy dělat dál, abychom brzy na silnicích měli samoříditelné vozy? Zde je pár bodů, které bude potřeba dořešit:

Pokud bude vyřešen systém komunikace mezi vozidly, může se to krásně využit k efektivnějšímu provozu na silnicích. Komunikace může být omezena jen na několik desítek metrů. Například protijedoucí auta mohou informovat o překážkách, jenž čekají na blížící se auta v opačném směru. Auta jedoucí ve stejném pruhu mohou sjednotit svou rychlost a i v případě pomalé rychlosti může i velká kolona ubíhat rychleji než jak se tomu děje při dnešních dopravních zácpách.
Na přednášce také zazněla zmínka o systému eCall (automatické tísňové volání z vozidla). Jedná se o projekt Evropské komise, jenž má umožnit rychlou pomoc při dopravní nehodě. Vozidla vybavená černou skříňkou budou odesílat informace o poloze vozu a data ze senzorů nárazu a zasílat je místním orgánům záchranného systému na linku 112.


Osobně se na příchod autonomních vozidel moc těším. Přirovnal bych to k těšení jaké bylo před příchodem prvních dotykových smartphonů a posléze tabletů. Také se o tom hodně hovořilo a spekulovalo a dnes jsme to přijali jako běžný doplněk. Stejně to vidím i se samoříditelnými auty. Z počátku se většině do toho nebude chtít jít. Ať už z osobních či etických důvodů, ale myslím, že nakonec to přijmeme jako kteroukoliv jinou technologii.

Bude to zcela nový styl přepravy. Nemůžu se dočkat :-).

středa 30. prosince 2015

Kniha Nastavení mysli, Carol Dwecková


Nedávno jsem dočetl další parádní knihu z nakladatelství Melvil, Nastavení mysli. Mimochodem hledáte-li něco ke čtení co vás bude inspirovat a pomůže vám k vašemu osobnímu rozvoji a nechcete věnovat příliš času rozhodováním, vyberte si cokoliv z nakladatelství Melvil. Jakákoliv kniha od nich stojí za přečtení. Lidé v tomto nakladatelství mají opravdu dobrý smysl pro výběr inspirativních knih.





Ve své knize Nastavení mysli, autorka Carol Dwecková popisuje rozdíly mezi růstovým a fixním myšlením. Samotná myšlenka růstového a fixního myšlení je úžasná. Otevřelo mi to oči v nahlížení na svět kolem sebe. Pomohlo mi to uvědomit si proč se někteří lidé a dokonce i celé společnosti chovají určitým způsobem. Proč se třeba výjimečně talentovaným lidem přestalo dařit a naopak, proč některým kterým se z počátku nedařilo, se postupem času vypracovali a stali se i světově uznávanými celebritami.





 
Carol Dwecková dělí způsob myšlení na dva hlavní typy:

Fixní nastavení mysli - Lidé s tímto nastavením mysli dají hodně na své vrozené vlastnosti. Berou je jako pevně dané, takové s kterými se nedá již nic dělat.

Růstové nastavení mysli - Naopak lidé s tímto nastavením mysli dají spíše na své zkušenosti. Berou své vlastnosti jen jako prostředek, který jim umožní se dále zdokonalovat a učit se novým věcem.

Případně na tomto 3-minutovém videu to autorka popisuje v rozhovoru pro Khan Academy. 

 

Nutno uvést, že to není zas tak černobílé. Jsou lidé, kteří se více přiklánějí k růstovému myšlení, ale na něco mohou pohlížet fixně. Zatímco i lidé s primárně fixním myšlením mohou v určitých situacích myslet růstově. Důležité je uvědomit si jak na tom jsme a raději se přiklánět k růstovému myšlení. 

Zde je pár citací z knihy, které mě zaujaly a nutí člověka k zamyšlení:

“Nejzajímavější přitom je, že manažeři se růstovému myšlení mohou naučit.”

“Vytvořte organizaci oceňující rozvíjení schopností – a sledujte, jak se začnou objevovat lídři.”

“Známky nevnímá jako cíl sám o sobě, ale jako prostředek k dalšímu růstu.”

“ 'Ach jo, vždyť nemá žádný sluch. Neztrácej s ním čas.' Ona trvala na experimentování s různými způsoby, jak to změnit. (Jak na to?) A obvykle nějaký našla.”

“Každý den se musíte snažit, abyste byli o něco lepší.”

“Vyhrál jsem? Prohrál jsem? To jsou špatné otázky. Správná otázka zní: Snažil jsem se, co to šlo?”

“Mnozí se domnívají, že člověk se rodí buď chytrý, průměrný, nebo hloupý – a že takový zůstává celý život. Nové výzkumy však ukazují, že mozek je spíše jako sval – mění se a sílí, používáme-li ho.”


Knize jsem dal na GoodReads 4 hvězdičky z 5-ti. Důvodem je příliš mnoho zbytečného obsahu. Vše je vlastně vysvětlováno příběhy. Ano, příběhy jsou fajn. Vysvětlovat něco názornou ukázkou bývá lepší než jen sypat suché teorie. Ovšem v téhle knize je těch příběhů na můj vkus až moc. A často hned po sobě jdoucí příběhy nepřinášejí k tématu novou myšlenku. Jen jiným dějem popisují stejnou věc. Myslím, že by celou knihu šlo zkrátit tak na 1/3 při zachování hlavního sdělení. Ale je to jen můj osobní pohled. Možná někomu přijde, že je tam těch příběhů málo :-). Každopádně koho aspoň trochu zajímá osobní rozvoj, tak doporučuji přečíst.





pondělí 30. prosince 2013

Ohlédnutí za Coderetreatem 2013

V prosinci jsem se opět zúčastnil cvičení pro programátory zvané Coderetreat. Mimochodem, letos to tam nezaznělo, ale byl to Global day of Coderetreat! Tedy akce, která se konala ve stejný den v různých městech po celém světě. A díky společnosti Vendavo dokonce i v Ostravě :-). Nebál bych se i malého zapřehánění si a příště by se mohla pozvat televize, aby natočili krátkou reportáž :-).

Chodím na tyto cvičení rád, protože je to dobrá příležitost se vždy přiučit nějakým novým programovacím technikám. A taky tam člověk pozná nové lidi. Tahle setkání jsou v tomto ohledu mnohem lepší než jen celodenní sezení na přednáškách. Nejen, že se tu člověk něco naučí, ale po celou dobu navíc networkinguje, jelikož se pracuje ve dvojicích, které se každou hodinu mění. Parafrází hlášky z Matrixu, kdy Seraph říká Neovi "Jen při boji poznáš, co je člověk zač." se dá použít "Jen při párovém programování poznáš, co je programátor zač." :-).  Každé sezení, které jsem si zkusil s někým ve dvojici bylo výjimečné a něčím inspirující. Buď v kladném nebo někdy i záporném světle, že takhle by se to dělat nemělo. Tohle je jedna z věcí, které na celém Coderetreatu hodnotím velkým plusem.

Některá cvičení byla zábavná. Jako třeba Religion Driven Develompment v Cucumber.
https://twitter.com/MarianSchubert/status/411849075701858304


Některá byla inspirující, jako třeba tvorba n-rozměrného světa v Clojure (pro mě stále tajemný jazyk :-)

Ovšem nejtěžším cvičením pro mě bylo kdy jsme spolu ve dvojicích nesměli mluvit. Neměli jsme se domlouvat ani přes komentáře a ani žádnými posunky. Komunikaci jsme měli provádět jen přes kód. Bohužel jsme to s kolegou částečně porušili. Byli jsme sice naprosto potichu, ale občas jsme si předali krátký vzkaz přes komentář v kódu. A ani to nám nepomohlo v tom, že jsme si vůbec nerozuměli. Každý z nás psal tu aplikaci jiným způsobem. Pomalu z toho vznikaly dvě aplikace tvářící se jako jedna. Na téhle části cvičení bych měl příště trochu více zapracovat. Aleš Roubíček mě sice ujišťoval, že má pozitivní zkušenost s projektem na kterém komunikovali jen skrze kód, mě to ale spíše přesvědčilo o tom, že nedostatečná komunikace na projektech způsobuje vyvíjení paskvilů.
Nicméně ke konci mi tam svitla jedna myšlenka, jak bychom to asi měli dělat správně pokud chceme komunikovat jen přes kód. A sice požadavky pečlivě specifikovat formou testů. Uvedu to na příkladu:

Dělali jsme klasický ping-pong. Jeden ve dvojici napsal test a předal druhému. Ten napsal implementaci k testu,  vytvořil nový test a předal prvnímu. Tak to šlo dokola. Implementace se měly psát minimalistické. V jednu chvíli jsem dostal test, který šel obejít jednoduše tak, že jsem s minimální úpravou vrátil stejný objekt jaký jsem získal. Původní kód byl samozřejmě smazán. Tady je příklad jak to asi vypadalo:
    public World doSomething(World world) {
        world.setSomething(1);
        return world;
    }
K tomu mi kolega napsal dlouhý komentář, že bychom neměli měnit vtiřní stavy objektů a nejlépe abychom vraceli nové immutable objekty. A v tu chvíli mě to napadlo: Proč mi píše tak dlouhé zbytečné komentáře, když tenhle požadavek může krásně definovat pomocí testu? Odepsal jsem mu tedy "Napiš na to test". A za chvíli vzniklo něco takového:
    @Test
    public void worldIsImmutable_whenDoSomething() {
        GameOfLife gameOfLife = new GameOfLife();
        World originWorld = new World();
        World actualWorld = gameOfLife.doSomething(originWorld);
        assertFalse(originWorld == actualWorld);
    }
Teď už jsem si nevystačil jen s "return world", ale musel jsem tu implementaci trochu upravit. Jinými slovy, když se chce, tak jde komunikovat i jen přes kód :-).

A co do budoucna s Coderetreatem? Nějaká drobná vylepšení by se hodila, jelikož se z toho trochu začíná stávat stereotyp. Když jsem se někoho náhodně zeptal co by on změnil pro příště, dostal jsem odpověď "Pojďme řešit jiný problém." Tady jsem se zarazil. Kdo si jako hlavní myšlenku z celého Coderetreatu odnáší "Game of Life" tak tam byl zbytečně. To o co tam určitě nešlo byla implementace problému Game of Life. Ano, tohle jsme tam sice implementovali. Hodinu co hodinu, celý den, pořád dokola, ale to jen proto, že na něčem se to trénovat musí. A na čem budeme trénovat, je úplně jedno. Takže to co já bych rád do budoucna viděl, je že organizátoři nepoleví z tohoto zadání a že na každém Coderetreatu rok co rok, se bude pořád řešit stejný problém. Že třeba i za 20 let, se tam bude stále implementovat Game of life. Znovu, znovu a znovu. Tak dlouho, aby všichni brali Coderetreat jako cvičení programovacích technik a ne jako řešení problému Game of life.

Během naší debaty v hospodě, Marián poznamenal, že pokud chceme změny, tak by měly přijít podněty o nás, kteří jsme se toho zúčastnili vícekrát. Jak tedy Coderetreat vylepšit? Těžko říct. Napadá mě pár rychlých tipů:
  • Trénovat pojmenování metod a tříd, trénovat maximální srozumitelnost
    • psát to tak aby tomu rozuměli i ti co nemají znalosti programování
    • zkusit to psát česky - je to celkem sranda :-)
  • Vymyslet problém, při kterém by se trénovalo psaní a vyhazování výjimek
    • i psaní výjimek má svá pravidla, např.: 
      • v "try" bloku by se měla vykonávat jen jedna věc
      • po "catch" by se v metodě už nemělo nic vykonávat
  • Zaměřit se na správné psaní funkcí
    • striktně dodržovat, aby dělaly jen jednu věc
    • funkce by neměla mít side efekty
    • používat jeden, maximálně dva argumenty
  • Dodržovat striktně pravidlo, při psaní testů by měl být jen jeden "assert" pro jeden test
Takže kdo jste ještě nebyli na Coderetreatu, neváhejte a příští rok se přihlašte. A ti co jste tam už byli neváhejte a dávejte tipy na vylepšení.

pátek 16. prosince 2011

Jak jsem potkal kouzelného dědečka v Ostravě

Po delší době jsem dnes zavítal do rodné Ostravy. Procházel jsem uličkami tohoto rušného města kdesi v Zábřehu, až jsem došel k semaforu. Musel jsem se zastavit a počkat na zeleného panáčka, který jak všichni určitě vědí, dává pokyn "Jdi". Zatímco červený říká "Pozor, stůj." Po rozsvícení toho zeleného jsem vyrazil v před. V tom se z ničeho nic vedle mě objevil kouzelný dědeček. Takový ten běžný, klasický kouzelný dědeček jak ho známe z pohádek. Malý, šedivé vlasy, věk kolem 150. Jak si to tak vykračuji na druhou stranu vozovky, všiml jsem si, že mě tento kouzelný dědeček začal sledovat. Šel vedle mě, hlavu otočenou mým směr, jako by mi chtěl něco říct. Dělal jsem, že ho nevidím, šel jsem dál. Když jsem dosáhli poloviny délky přechodu, najednou řekl "I na zelenou se musí dávat pozor." Zaskočilo mě to. První co mi proběhlo hlavou bylo "Co že?". Pak, ale přicházely další myšlenky v mikrosekundových intervalech. Napadlo mě s čím vším se tato myšlenka dá spojit. Na chvíli jsem se nad tím pozastavil: "I na zelenou se musí dávat pozor." Napadá mě spousta asociací ve smyslu, že 'Není všechno zlato, co se třpytí.', 'Dvakrát měř, jednou řež', apod. Každý si v tom může najít nějaké své přirovnání. Znělo to fantasticky.
Šli jsme dál a on spustil historku o tom, že má dceru a i přesto, že přecházela na zelenou, tak ji srazilo auto, protože řidič/řidička jel na červenou. Z nehody ujel, takže ani není možnost po někom vymáhat náhradu za způsobenou škodu. Prostě byla to velká smůla. No a pak se ten kouzelný dědeček vypařil. Nevím jak to udělal asi někam rychle zabočil nebo tak něco. Prostě tam byl a za malou chvíli už ne.
Ten rozhovor mi ležel v hlavě celý zbytek dne. "I na zelenou se musí dávat pozor." Nakonec jsem došel k závěru, že z toho vyplývají dvě ponaučení. Za prvé: 'V Ostravě žijí moudří a inteligentní lidé :-)'. A za druhé: 'Někteří z nich jezdí jak hovada :-)'.