pátek 3. ledna 2014

Fenomén Coderetreat

… aneb Den, který může změnit váš profesní život

V sobotu 14. prosince 2013 proběhl další díl Global Day of Coderetreat. Tentokrát na více než 165 místech po celém světě. Možná by vás mohlo zajímat, proč se tahle akce stává rok od roku populárnější. Pojďme se na Coderetreat podívat očima účastníků akce, která proběhla na Vsetíně.

První nakouknutí do říše testů

David: Jsem děsně rád za tuhle akci, že jsem prozřel, jak se vlastně píšou testy.

Akce je určena pro všechny programátory, kteří se chtějí naučit nebo se zdokonalit v technikách agilního vývoje. Důraz je kladen především na Test-Driven Development. Největší mentální dopad má akce samozřejmě na nováčky, pro které je to tak trochu výlet do říše za zrcadlem. Ovšem i ti zkušenější se vždy dozví něco nového a mohou si třeba vyzkoušet psaní testů v jiném programovacím jazyce.

Test-First jako mentální blok

Zdenek: Již dříve jsem se naučil přemýšlet o psaní kódu tak, aby byl testovatelný. Dnes jsem si ale potvrdil, že mám velký mentální blok přemýšlet nejdřív o psaní testu a teprve potom o kódu.
Helena: Aha, takže takhle se o tom má přemejšlet. Teď jsem konečně pochopila podstatu TDD.

Věřím, že velké procento SW projektů v dnešní době už má ve svých postupech psaní testů. Je ovšem rozdíl psát testy po implementaci a nebo ještě před ní. Začít nejdříve od testů je pro mnoho lidí velkou psychickou bariérou. Během celého dne se pokoušíme tuto bariéru postupně bourat a porozumět výhodám Test-First přístupu.

Návrh a efektivnější implementace pomocí Test-First

Zdenek: Nejzajímavější částí bylo specifikování požadavků přes testy.
Honza: Psát testy jako první je pro mě velký mentální obrat a může mi pomoci vyhnout se snaze o sice perfektní, ale mnohdy zbytečnou dopřednou implementaci.

Test-First přístup nás nutí nejdříve přemýšlet nad tím, co potřebujeme implementovat a pak teprve jak implementovat. Psaní testu je fáze návrhu, kdy dostáváme okamžitou zpětnou vazbu o testovatelnosti kódu. Implementujeme pouze to, co si vyžadují testy. Pěkně inkrementálně po malých krůčcích. Žádné zbytečné věci navíc, které aktuálně nepotřebujeme.

Párové programování

Lenka: Líbilo se mi párové programování. Víc hlav víc ví a dovedu si představit, že bychom ho ve firmě používali.
Sváťa: Úplně super bylo párové programování. I kdyby ta dvojice problém nevyřešila lépe, tak budou mít v budoucnu oba o problému mnohem větší povědomí.
Jarda: Dnešní zkušenost mě utvrzuje v tom, že párové programování by se mělo určitě více využívat v praxi.
Libor: Viděl jsem, jak Kuba perfektně ovládá svoje vývojové prostředí, jedna klávesová zkratka za druhou.
Zdenek: Po pěti sešnách jsem si myslel, že už mě nic nepřekvapí. Ale tady kolega mi i v té poslední ukázal zcela jiný přístup, který byl téměř geniální.

Je u vás běžné, že přijdete za kolegou v práci a začnete řešit problém společně? Nebo jste spíše týmem individualistů? Během Coderetreatu pracujete v páru neustále. A každý blok s jiným parťákem. Zpočátku možná trochu nezvyklá a tudíž nepříjemná záležitost, ale postupem času se vám to začne líbit. Ztrácíte zábrany, učíte se komunikovat o problému, hledáte společně řešení, díváte se na problém optikou kolegy, poznávat jeho pracovní postupy. A tím vším se učíte nové věci, zlepšujete se a jste nuceni ze sebe dostat to nejlepší.

Příjemná atmosféra na prvním místě

Marek: Byla zde velice přátelská atmosféra. To jsem u ajťáků nečekal. :)
Vytvoření příjemné atmosféry je nejdůležitějším předpokladem pro úspěch celé akce. Pokud se lidé dokáží uvolnit, užijí si i ta nejnáročnější cvičení. Mezi účastníky jsou různě pokročilí programátoři, přesto byste nenašli žádné náznaky nadřazenosti nebo posměchu. Všichni si chceme den pořádně užít, naučit se něco nového a poznat nové lidi. Koncept celé akce je navržen tak, aby k dosažení těchto cílů maximálně napomáhal.

Skrze kód spolu komunikujeme

Tomáš: Když si myslím, že je něco naprosto jasné, tak se to těm ostatním vůbec jasné zdát nemusí.
Zdenek: U ping-pongu jsem si uvědomil, jak dobré je přesně se vyjadřovat. Kolega totiž dělal vše úplně doslova.

Nejoblíbenější aktivitou je obvykle ping-pong, při kterém ještě navíc vypínáme zvuk. Jeden z dvojice píše test a druhý musí napsat implementaci, která zaručí procházení testu. Nemluví se, proto je velmi důležité, aby bylo pouze z kódu zřejmé, co je záměrem testu. Správné názvy testů, principy čistého kódu a důraz na jednoduchost vyústí v kód, který je dobře čitelný a tím pádem i dobře pochopitelný a udržovatelný.

Za hranicí komfortní zóny

Libor: Některé omezující požadavky mně opravdu zamotaly hlavu.
Zdenek: Do příště se musím naučit UML, protože mám trochu hokej ve vazbách v class diagramech.
Jarda: Zase jsem objevil své slabé stránky a mám určitě o čem přemýšlet.
Marek: Naučím se pořádně klávesové zkratky svého IDE.

Všichni se na akci přicházíme naučit něco nového a jako bonus obdržíme zpětnou vazbu o tom, co nám ve skutečnosti moc nejde. Dělej hlavně to, co ti nejde (pokud to ovšem potřebuješ) neboli dostávej se mimo svoji komfortní bublinu tak často, jak jen to jde. Budeš se učit mnohem rychleji.

Přenášení znalostí do praxe

Jarda: Už jen kdybychom u nás ve firmě zavedli psaní testů, tak by to byl velký pokrok.
Roman: Z minulého CR jsem si odnesl spoustu věcí a aplikoval jsem je ve své praxi. Začal jsem psát mnohem více testy. Bez testů si dnes už některé věci vůbec nedokážu představit.

Coderetreat není pouze celodenní bojová hra, která skončí po poslední session. Je to především začátek procesu, během kterého se začnete na váš svět vývoje software dívat jinýma očima. Možná pak vyzkoušíte nějaké nové věci na reálných projektech a možná jednu sobotu zúročíte na další roky efektivnější práce.

Závěrem

Pokud se jednou rozhodnete, že se nějakého Coderetreatu zúčastníte, budu vám držet palce, aby vaše hodnocení vypadalo třeba nějak takto:

Zdenek: Dnes jsem si uvědomil, jakou pozitivní energií mě celá ta akce nabila, kolik nových témat a podnětů jsem si odnesl a kolik nových kamarádů jsem poznal.

A tady je naše celá parta ve slušivých trikotech:

Video - závěrečná retrospektiva

Na závěr akce jsou všichni účastníci požádáni, aby volně odpověděli na otázky:

  • Co jste se dnes naučili nového?
  • Bylo něco, co vás dnes překvapilo?
  • Bude něco, co začnete v budoucnu dělat jinak?

Pokud si chcete zasadit výše uvedené výroky do širšího kontextu, určitě mrkněte na tohle video:

Poděkování

Chtěl bych poděkovat:

Nashledanou příště …

Odkazy

Pokud se chcete o formátu Coderetreat dozvědět více, můžete také navštívit:

Žádné komentáře:

Okomentovat