Author Archives: Lukáš Křečan

Důležité je i to, co neuděláte

Když se jednoho slavného sochaře zeptali, jak pracuje, řekl jim že to je jednoduché. Stačí z bloku kamene odseknout všechny ty části, co nejsou socha. Zbavíte se zbytečných částí a uprostřed vám zbude to důležité.

Došlo mi, že to samé platí i u software. Je nesmírně důležité si vybrat co nedělat. Máme nepřeberné množství věcí, které naše aplikace může dělat, nespočet nápadů které můžeme implementovat. Zároveň ale máme omezené množství času a kapacity, musíme si proto moc pečlivě vybírat co dělat a co ne.

Přistihl jsem se, že moje přirozená reakce je přesvědčovat lidi, aby se nepouštěli do nových věcí a radši použili to co máme. Nebo přinejmenším, aby to co chtějí udělat, výrazně zjednodušili. A dokonce mi to i dělá radost. Jsem mnohem radši, když někoho přesvědčím, aby něco neudělal, než když mu pomůžu vymyslet jak to udělat. Většinou mi na to stačí pár dobře mířených otázek typu „Co nám to přinese?“, „Opravdu to potřebujeme?“ nebo „Jak se to bude používat?“

Přijde mi, že v naší branži máme sklon dělat věci moc složitě. Slyšíme náznak problému a už nám to v hlavě jede. Začneme si stavět vzdušné zámky, začneme vymýšlet jak to udělat co nejelegantněji, tak aby to bylo super efektivní a ideálně tak abychom využili tu poslední cool technologii. Často přeskočíme fázi kdy bychom se měli zamyslet, co za problém vlastně chceme řešit a jestli to nejde jinak.

Myslel bych si, že jsem líný, ale podobný přístup pozoruji i u svých výrazně pracovitějších kolegů. Nedávno se kolegovi podařilo snížit odhady jednoho řešení na třetinu tím, že vymyslel fintu jak většinu z té práce neudělat a přesto vyřešit problém. To je něco, co nepodchytíte žádným review, nepopíšete metrikou, nenapíšete si to do životopisu, zákazníci se o tom nedozví a přesto je to strašně důležité. Je to ta část kamene kterou odseknete, ta část práce kterou neuděláte.

Nastal čas vánoční, čas performance review

Blíží se čas Vánoc, čas tradic. Čas odlévání olova, čas stavění betlémů, čas performance review. Stejně jako Vánoce se i revize našeho výkonu dostavila naprosto nečekaně. Zdá se to jako včera, kdy jsme si u příležitosti letního slunovratu nastavovali své cíle na další pololetí. A najednou, naprosto bez varování, je tu prosinec a s ním i obávaný dopis začínající slovy „Drahá DobroRodino“. Takový úvod nevěstí nikdy nic dobrého. A ano je to tak, na konci dlouhého textu, který dokáží přečíst jen ti nejotrlejší, se vyjímá krásná tabulka do kdy má být jaký úkon hotov. Kam se hrabe adventní kalendář.

V méně zkušených kolezích takovýto email vzbudí paniku. No jo, cíle, jaké já mám vlastně cíle? To jsme přeci zadávali do toho strašného systému. Jak se vlastně jmenuje? Jaké tam mám heslo? Zkrátka a dobře nastává ten krásný shon s lehkým závanem paniky, který je tak vlastní i jiným vánočním tradicím.

A stejně jako většina ostatních tradice i tato je spíše jen trpěným zvykem. Nikdo moc nechápe, proč se to vlastně všechno dělá, vynakládá se obrovské úsilí a přínos veškerý žádný. Správně bychom si měli v klidu sednout, popovídat si, tak nějak popřemýšlet o životě, o tom kdo jsme, odkud a kam jdeme. My místo toho vyplňujeme nějaké nesmyslné dotazníky a dáváme si nějaké cíle, na které si vzpomeneme až zase za půl roku.

Nezbývá se zamyslet nad tím proč to vlastně děláme, proč se neozveme, proč to nezměníme? Proč nikdo neřekne, že to je zbytečná ztráta času? Chvíli jsem si myslel, že je to jako u nás doma s Mikulášem. U nás většinou nechodil Mikuláš, ale jenom čert. Pamatuji se, že jsem přišel na to, že to není čert, ale převlečená maminka. Možná je to tím, že jsem byl nadmíru inteligentní dítě, možná tím, že dělala čerta až do mých patnácti let. Nicméně jsem jí nikdy neřekl „Mami, já vím že jsi to ty“, hrál jsem to s ní a dělal, že je to čert. Asi jsem jí nechtě ranit.

Myslel jsem si, že stejný důvod může být i za tím, proč se proti performance review neozveme. Třeba nechceme ranit něčí city, třeba to divadlo odehráváme tak nějak ze slušnosti. Ale pak jsem si vzpomněl na pilíř našich firemních hodnot „Life’s short, troll hard“. Slušnost nebude to, co by nás motivovalo k hraní takového divadýlka.

Motiv je jiný, i když také vánoční. V některých rodinách je silná hlava rodiny, která lpí na dodržování tradic. K večeři musí být kapr, a basta! Je jedno, že půlce rodiny kapr nechutná a druhé se z něj dělá zle. Tradice je tradice. Je jednoduší se překonat a dát si jednou za rok kapra, než proti tomu bojovat. Vina by totiž padla jednoznačně na nás. Je přeci naše chyba, že nám kapr nechutná nebo že jsem si svým zhýralým životem zničili žaludek, takže se nám z mastného dělá zle.

Stejné je to i s performance review. Víme, že v samotném dělání performance review chyba být nemůže, to je zdokumentovaná tradice už z dob faraónů. Na to by už přeci někdo musel dávno přijít, kdyby to nedávalo smysl. Vina musí být jednoznačně v nás. Je přeci naše chyba, že to bereme jen jako divadýlko. Je naše chyba, že si cíle neopakujeme každý týden. Za všechno můžeme my, performance review jsou přeci uznávaným korporátním standardem. Nefungují právě proto, že je bereme jenom jako divadýlko.

Je zjevné, že kdybychom se proti tradici ozvali, bylo by to všechno ještě mnohem horší. Performance review by nikdo nezrušil. Naopak, muselo by se dohlédnout, že tradici nejen dodržujeme, ale že ji dodržujeme rádi a s nadšením. Tak hrajeme divadýlko a čekáme, až se to všechno nějak přežene. Vyplnění těch pár formulářů nám nesebere víc než hodinu života a do letního slunovratu je to přeci jenom daleko. Užijte si hezké Vánoce.

Zápisky z pražského GeeCONu

Pražský GeeCON letos velmi příjemně překvapil. Většinou se z podobných akcí vracím s otázkou proč jsem se nic moc nenaučil. Může to být tím, už jsem tak dobrý nebo to může být nízkou úrovní konference. Letos jsem to řešit nemusel, většina přednášek mě alespoň někam posunula.

Dangers of Parallel Streams

Lukáš Křečan

Pro mě rozhodně nejpřínosnější příspěvek, hlavně proto, že jsem ho přednášel já. Byla to moje první zkušenost s mluvením na akci podobné úrovně. Přípravou jsem strávil neuvěřitelné množství času, dost jsem se toho bál, ale stálo to za to. Nebylo to o mnoho těžší než mluvit před víc kolegy v práci. Ani se nenaplnily moje obavy, že mi z hlavy zmizí všechna anglická slovíčka nebo že mi vypadne technika, bez které by to nedávalo smysl. Nejhorší moment byl, když jsem si celou strašně dlouhou sekundu nemohl vzpomenout na jméno jedné třídy. Celé to byla hrozně zajímavá zkušenost, rozhodně vám doporučuji si to taky zkusit. Připravte si téma, obešlete pár konferencí a vyražte. Výmluvy, že nemáte o čem mluvit neberu, myslíte si, že jsem před tím něco věděl o paralelních streamech? Kdyby vás náhodou nikde nechtěli, tak se ozvěte Dagimu, zjevně má nouzi o řečníky na CZJUG. Mimochodem, pokud jste o můj skvělý výkon přišli, ještě to někdy v příštích měsících budu opakovat pro CZJUG, takže budete mít šanci. Navíc jsem měl pozitivní ohlasy, takže jsem si i dost načechral ego, to není k zahození.

On a Quest Towards the Fastest VM on the Planet!

Jaroslav Tulach

Zajímavé povídání o tom, co se peče v pražském Oraclu – projekt Graal a Truffle DSL Musím se přiznat, že jsem to nepochopil úplně do detailu, ale měla by to být náhrada jednoho kroku JIT kompilace Javy, kdy se bere bytecode a všelijak se optimalizuje. Současná verze je v céčku, Graal je v Javě což údajně umožňuje dělat složitější optimalizace. Zajímavé na tom je to, že k tomu mají API, které vás nechá se do procesu zaháčkovat a upravit ho. To dává možnost pro lepší optimalizaci ostatních jazyků. Na Ruby to ukazuje několikanásobné zrychlení i proti JRuby. Ještě víc neuvěřitelné je to, že se v tom úspěšně pokoušejí pouštět i céčko. To nedává smysl jen do té doby, než si uvědomíte, že spousta jazyků závisí na C knihovnách takže je problém je portovat na JVM. Kdybych dokázal pracovat v korporaci, tak se k nim snad přidám.

Clean Coders Hate What Happens To Your Code When You Use These Enterprise Programming Tricks

Kevlin Henney

Kevlin je profesionální řečník, na kterého narazíte skoro na každé konferenci. Vymakané představení, kde se toho zas tak moc nedozvíte. Navážel se do toho jak často píšeme zbytečně složitý kód jenom ze zvyku. Měl zajímavý příklad s importy v Javě. Opravdu potřebujeme mít na začátku každé třídy desítky řádek s importy? Jakou hodnotu to přináší? Proč nepoužíváme hvězdičkové importy? Má pravdu, není pro to žádný racionální důvod, děláme to jen ze zvyku. Je to zajímavá ilustrace, nicméně problémy se složitostí kódu jsou někde jinde a teprve po deseti letech dennodenního programování jsem tomu začal přicházet na kloub. Čekám, že mi to ještě pár let zabere a tato přednáška mi hlavně připomněla, že se o tom mám pořád pokoušet.

Domain Specific Languages with pleasure

Václav Pech

Musím se přiznat, že na tuto přednášku jsem šel z pocitu viny. S Václavem se znám docela dlouho a ještě nikdy jsem ho přednášet neviděl. Já hlupák. Docela mě to chytlo a otevřelo oči. Pro mě nejzajímavější myšlenka byla to, že vlastně nepřemýšlím v kódu, ale v AST. Krásný příklad je jazyk Scratch pro výuku programování. Ty kostičky jsou AST jak to, že jsem toho ještě nevšiml? Takže já mám v hlavě AST, přepíšu ho do textu, kde to parser vezme a zas z toho udělá AST. Pro programátory to asi dává smysl, ale normálním lidem to nevyhovuje. proto v JetBrains dělají MPS, který vám s AST umožní pracovat i jinak než pomocí textu – třeba pomocí obrázků nebo symbolů.

The dangers of building microservices

Christopher Batey

Pěkně udělaná přednáška o mikroslužbách. Točilo se to kolem toho, že vás mikroslužby vystaví síťovým voláním. A takové volání po síti se může rozbít spoustou různých způsobů. Nejen že ty způsoby ukazoval, ale hlavně předváděl, jak na to psát testy. Přiznejte se, kdo z vás píše automatické testy simulující chování vaší aplikace s nezvykle velkou síťovou latencí. Pokud nevíte jak na to, tak doporučoval Wiremock a Saboteur

Power to the Programmers!

Tom Gilb

Pan Gilb se prý označuje jako dědeček agilního vývoje. Od roku 1958 programoval, agilně pracoval od roku 1960. Ještě pamatuje primitivní doby, kdy lidi chtěli vidět čísla, když se o něčem rozhodovali. Od té doby jsme už naštěstí pokročili a pro rozhodování nám stačí dojmy. Vyprávěl zajímavou historku o tom, jak se na architektonické konferenci zeptal, kolik z nich odhaduje cenu navrhovaného řešení. Z tří set architektů se mu prý přihlásili tři. To je hrozně zajímavé, navrhujeme architekturu a neřešíme kolik to bude stát.

Přednáška se hlavně točila kolem toho, jak je důležité dát programátorům kontrolu nad procesem, kterým pracují. Demonstroval to na tvrdých číslech o množství chyb. V jeho dřevních dobách trávili programátoři opravováních chyb asi tak 30% svého času. Nezapomínejte, že to bylo před nějakými čtyřiceti lety, to by se nám dnes nemohlo stát. Zkusili to změnit. Nejdřív to dali za úkol manažerům, ale to nevedlo k žádnému zlepšení. Když ale dali prostor lidem dole, kteří vědí kde je tlačí bota, tak to výrazně pomohlo. Detaily a odkazy na studie najdete tady

Don’t Give Up on Agile Just Yet

J. B. Rainsberger

Poslední byla keynote o agile. Staré známe pravdy, které stojí za to připomínat pořád dokola. Agile je hlavně tom dělat bezpečné a měřitelné experimenty a podle nich se rozhodovat. Vypíchnu dvě myšlenky. První je, že standup je především o risk managementu. Pokud ho děláte kvůli něčemu jinému, tak ho zrušte. Druhá je o to, že laťka v oboru je pořád nastavená hrozně nízko. Stačí přestat dělat úplné pitomosti a budete za hvězdu.