Honza Malý27.7.2011Zpět

Kniha: Agile Web Development with Rails

Agile Web Development With Rails (dále AWDwR) se dá sehnat v papírové podobě kolem € 30, není k ní žádné fyzické doprovodné médium a je zajímavá tím, že se často obnovuje dle aktuální verze RoR (aktuální čtvrté vydání je z letošního dubna). Doplněna je přístupovým odkazem na tutoriály, kódy ke stažení a diskuzní wiki stránky, to vše na webu vydavatelů The Pragmatic Bookshelf. Sami autoři označují AWDwR jako „autoritativní“, což plyne mj. z jejich výčtu – dva špičkoví web developeři a samotný tvůrce frameworku Rails.

 

Obal knihy - zdroj (c) The Pragmatic Programmers, LLC 
obal knihy - zdroj © The Pragmatic Programmers, LLC, 2011 

Kniha však rozhodně nemá ambice být referenční příručkou, dalším klasickým dílem technické knihovny z poličky „O'Reilly“. Jejím cílem je přijmout kohokoliv se zájmem o web, naučit ho Rails na slušnou úroveň a odkázat na zdroje, kde načerpá víc.

Toho dosahuje pravda zajímavou metodou zelené praxe. Vymýšlí si příběh klasického zákazníka, který přichází k našim programátorům s požadavkem vytvořit eshop (na knihy, jak jinak) a my v roli Rails developera jeho sny plníme po jednotlivých iteracích, vývojových cyklech.

Jak se z ní učí

Kniha moudře kombinuje jednoduchý předběžný návrh ve formě náčrtků s postupným zvyšováním obtížnosti a kupením požadavků ze strany klienta. Ukazuje, jak se s tím vyrovnat, nezbláznit se, a co je důležitější, jak si udržet aplikaci stále funkční a změnami ji nerozbít (= jak testovat). Nakonec, až je vše hotovo a předáno, rozebírá jeden aspekt Rails za druhým a ve stylu „jednotlivé komponenty hlouběji“ je představuje na světlo (a stále to není referenční příručka!).

Kniha se také úzkostlivě snaží nabádávat programátory k údržbě svého kódu, k aplikování principů, které jsem popsal v článku Kvalitní programování není přežitek!. Tím pečuje o dobrý duševní stav programátorů, klienta a v nemalé míře také těch, co přijdou po nich.

Paralela „místo teorie skutečný projekt“ funguje excelentně a skutečně baví, dokonce tak, že vám nevadí přepisovat (někdy i dlouhé) pasáže kódu a sledovat, jak se to projeví, mnohdy se soukromými tipy dopředy – jejichž četnost roste se znalostí.

Co mi vadí

Ona živelnost ovšem má také svoje ale. Na konci každé iterace jsou hloubavci vyzváni, aby vyřešili doplňkové úkoly. Jejich obtížnost velmi kolísá a minimálně v několika případech jsem narazil na skutečné perly, jejichž vyřešení stálo mnoho úsilí, času a příspěvků v diskuzních fórech. Zde bych tedy vytknul malou dodatečnou podporu těchto úkolů, a minimálně nějaké referenční řešení – i když je vydání velmi čerstvé a diskuze k řešení na webu vydavatelů se teprve tvoří.

Co mi vadí daleko víc je smutný fakt, že zavedené změny z doplňkových úkolů nejsou v souladu s hlavním postupem děje, sem tam se díky tomu něco rozbije a za svoji přílišnou aktivitu v předchozí fázi budete odměněni opět zdlouhavým zkoumáním, proč příslušná komponenta nebo test neustále selhává. V těchto chvílích mě nejvíc mrzelo, že i přes proklamovanou dobrou podporu komunity v Rails prostě s pomocí moc nepochodíte, jednak proto, že se vaše problémy buď blbě popisují (rozsah kódu je obvykle přes několik různých částí, záleží na nastavení prostředí, situaci apod.) nebo jsou natolik konkrétní, že nikoho s prominutím nezajímají. Ale možná jsem jen hledal na špatném místě.

Komu je určena

Znáte Ruby? Pokud ne a máte nějakou praxi v programování, zkuste cestu Zenu – Edgecase Ruby Koans. Jde o praktickou výuku formou doplňování testovacích skriptů správným a fungujícím řešením.

Kniha není vhodná pro absolutní začátečníky. Je dobré mít nějaké zkušenosti s webem, podtrhujícími technologiemi a pokud neznáte Ruby (pod Rails běžící jazyk a prostředí), tak aspoň základy programování v moderním jazyku s podporou objektů, ideálně Java, C#, PHP nebo Python. Ruby se pro účely knihy naučíte z několika stran, je ale lepší, chcete-li pracovat později v RoR profesionálně, najít ještě nějaký samostatný výukový zdroj. Naštěstí je Ruby expresivní a dobře se čte, což vám učení velmi usnadní.

Ideální čtenář bude mít za sebou aspoň rok / dva praxe ve vývoji v PHP od verze 5+. Pak to skutečně „odsejpá“ a hodně stran spíš proletíte, než byste se jimi nějak dalekosáhle zabývali.

Hlavní výhodou AWDwR je především styl, jakým je vytvořena. Dobře se s ní pracuje, protože:

  • příklady táhnou - realita se často od teorie velmi odlišuje,
  • dbá na správné programování - testování, verzování, dodržování DRY pomáhá,
  • je členěna podle praktických úkolů - ne podle komponent či jiného abstraktního rozvržení.

Zejména poslední zmíněná vlastnost je neocenitelná a pomáhá učení. Mozek zkrátka tak nějak více slyší na přiřazení abstraktního (jazyk, framework) na konkrétní situaci (řešený úkol). Nedávno se nám dostala do rukou kniha Mariana Böhmera Zend Framework – Programujeme webové aplikace v PHP, který stejné zadání (jiný framework a programovací jazyk) vyřešil spíše s akcentem na jednotlivé části a komponenty frameworku – a hned se to čte daleko hůře, byť je cíl podobný – vytvoření e-shopu.

Shrnutí – pro ty, co nečtou dlouhé věci  

Kniha je: skvělý výukový zdroj, který dokáže vzbudit vášeň pro RoR a agilní programování jako celek.

Je určena pro: mírně pokročilé webové vývojáře.

Jejím největším záporem je: občasný zásek v doplňkových úkolech a chybějící informace – každé vydání začíná tak trochu jako betaverze.

Každopádně je skvělou součástí knihovny každého zájemce o moderní webové technologie.

Honza Malý
maly@kurzor.net
+420 722 211 443
Honza se specializuje na návrh webů a UI, věnuje se také vývoji.