Postřehy z online kurzu MongoDB

Zapojil jsem se do online kurzu MongoDB, který pořádají přímo jeho autoři z 10gen. Aktuálně je kurz ve svém třetím týdnu (ze sedmi) takže už k němu mám pár postřehů.

MOOCs FTW

Současný trend pořádání “můků” považuji za naprosto úžasnou věc a rozhodně vám doporučuji se podívat na sity jako Coursera.org, které nabízí velké množství kurzů ze širokého spektra oborů. Takže se můžete, jak my v ETN odborně říkáme, ochytřit i v něčem jiném než v IT a rozšířit si obzory.

Pro zajímavost se také můžete podívat na blog 10gen, kde rozebírají, kolik pořádání takovýchto kurzů stojí.

M101J

Ale zpátky k MongoDB. Aktuálně běží kurz M101J - MongoDB for Java Developers. Začal na konci února a teď už do něj asi nedá zapojit. Nicméně v květnu začíná další běh.

Kurz představuje MongoDB jako takové a protože má Javu v názvu, tak ukázkové aplikace i domácí úkoly jsou v Javě. Každý týden je zveřejněna série videí (na Youtube) s přednáškami a k nim odpovídající domácí úkoly.

Ty neodevzdáváte v podobě hotové aplikace (nebo jejího zdrojového kódu), ale buď musí vaše aplikace něco vydolovat z MongoDB a odevzdáváte výsledek výpočtu, nebo k domácímu úkolu dostanete validační skript, který vaší (webovou) aplikaci “okliká” a když se mu její chování líbí, vrátí vám “tajný” kód, který odevzdáte do příslušného formuláře.

Na vyřešení úkolů máte čas vždy do konce týdne, pak už jsou zveřejněné přednášky a úkoly, které navazují na zadání z minulého týdne (a často obsahují řešení předešlých úloh). Na odevzdání správného výsledku máte také jenom tři pokusy. Diskuzní fórum kurzu bych proto v období deadline označil za zeď nářků.

Python eats Java

Velká hořekování Javistů se také objevila okolo toho, že validační skripty pro domácí úkoly jsou v Pythonu. Pro domácí úkol v minulém týdnu byla ještě k dispozici alternativní validační aplikace v Javě, ale minimálně pro aktuální úlohu už je jenom Python verze. Je tedy třeba si nainstalovat Python, což mnozí považují téměř za urážku, já na tom ale nevidím nic špatného. Původní verze kurzu byla celá v Pythonu a autoři zřejmě znovu použili hotové validační skripty. Přepsat je do Javy asi něco stojí. Možná se ale v dalším běhu M101J s Pythonem už nesetkáte.

Scala jako alternativa

Z Javy není do Scaly nikdy daleko, takže jsem se už na začátku rozhodl absolvovat celý kurz místo Javy ve Scale. Díky výše popsanému systému odevzdávání domácích úkolů je to relativně snadné.

V průběhu kurzu se v domácích úkolech postupně buduje weblog, jehož funkce externě validují zmíněné Python skripty. Práce na domácím úkolu se ale striktně omezuje na DAO vrstvu, takže student nemusí zbytek aplikace řešit - dostane jí hotovou. Originální zadání v Javě používá webový mini-framework Spark, který se inspiroval/zkopíroval projekt Sinatra z Ruby. Ač je to pěkná věc, rozhodl jsem se použít nativní Scala rešení.

Scala také má svůj odvar ze Sinatry, který se jmenuje (originálně) Scalatra. Do něj jsem se ale nepouštěl a použil jsem Play Framework, se kterým už mám zkušenosti.

Převod Spark aplikace do Play je docela zajímavé cvičení, které je samozřejmě o řád pracnější než jenom v připraveném DAO doplnit pár chybějících řádek kódu, a považuji ho za cennou zkušenost. Po dohodě s vedením kurzu převedená zadání domácích úkolů dávám k dispozici i ostatním studentům, kteří by si třeba chtěli zkusit Scalu. Ve wiki kurzu je stránka, kam umísťuji odkazy na jednotlivá zadání na Githubu (např. první z nich je zde).

Závěrem

Celkově se mi kurz hodně líbí. Ano, samotné domácí úkoly nejsou úplně výzva, ale to asi ani není účel. Přednášky jsou podle mě dobře udělané a celý kurz bych doporučil jako úvod nejen do MongoDB ale do celého světa NoSQL.

Článek obsahuje 1 komentář

  • petr

    1
    Kurz si taky delam a rozhodne to za to stoji, muzu taky doporucit!Je pravda, ze obtiznost neni vysoka (tvetsina kurzu na Coursera je o par radu tezsi), ale jako do uvod do NoSQL databazi je to upravdu super.
    Jinak diky za tva zadani, Scale a Play Frameworku se taky planuji delsi dobu mrknout na zoubek.