V minulých měsících proběhlo několik takzvaných hackathonů – speciálních soutěží v rychlém programování. Skupinky jedno až čtyřčlených týmů měly vytvořit za 12 (nebo 24) hodin mobilní aplikaci na zadané téma. Nejlepší týmy potom dostaly věcné ceny. Tyto akce pořádal český Microsoft ve spolupráci se společností Nokia a s technologickými inovačními centry.
První hackathon se konal 8. prosince 2011 v Praze, jako soutěžní téma bylo za úkol vytvořit aplikaci s Vánoční tématikou. Další hackathon proběhl 18. ledna v Brně, cílem bylo vytvořit co nejlepší výukovou aplikaci pro základní školy. Poslední podobná akce se konala tuto středu 29. února v Hradci Králové, tématem byly Velikonoce, případně 1. máj. Nejspíš šlo o to, aby výsledná aplikace byla co nejvíce použitelná a aby ji poté bylo možné, například s drobnými úpravami, rovnou nahrát do Marketplace.
Účastnil jsem se všech tří těchto akcí, v Praze jsem se ukázal s krátkou přednáškou o vývoji her pro Windows Phone, v Brně a v Hradci Králové jsem potom byl přímo jako soutěžící.
Brno
V Brně jsem byl v týmu s Tomášem Hercegem, Jiřím Danihelkou a Martinem Suchanem. Vytvořili jsme aplikaci Back To School, více se o ní můžete dočíst například ve článku na serveru WinMag.cz. Byla zaměřená pro děti z nižších ročníků prvního stupně základní školy, jako příjemné zpestření výuky. Skládala se z osmi miniher, pro jejich inspiraci nám posloužily konkrétní komerční výukové programy. Některé minihry jsme tam doplnili jen tak pro zábavu. Jako technologii jsme použili kombinaci Silverlight a XNA v jednom projektu, pro sdílení zdrojových kódů jsme využili Team Foundation Server. Hra podporovala i odesílání nejvyššího skóre na internet, využili jsme webové služby na vlastním serveru. S výsledným projektem jsme byli spokojeni, podařilo se nám ho dotáhnout do konce vč. české a anglické lokalizace, podpory barevných schémat telefonu, ikonek apod. Zaprogramovali jsme si pěkně, byla to fajn akce.
Ze tří týmů jsme nakonec skončili na třetím místě. Kromě několika drobností nám bylo vytýkáno ne úplně konzistentní GUI napříč minihrami, možná také to, že data byla v aplikaci umístěná natvrdo, nešla dynamicky aktualizovat z internetu. Komentář poroty nám ale přišel dost neúměrný (vzhledem k některým ostatním aplikacím), měli jsme z něj poměrně špatnou hlavu, proto jsme se k této akci už později raději v žádných článcích nevraceli.
Hradec Králové
V Hradci Králové jsme vytvořili čtyřčlenný tým spolu s Lukášem Krislem, Štěpánem Šandou a Martinem Kaše. Chtěl bych jim touto formou ještě jednou poděkovat, protože za těch 12 hodin dokázali opravdu hodně! Téma “1. máj”, se dalo vyložit i jako “lásky čas” – pro naši soutěžní aplikaci jsme se inspirovali starou textovou hrou Playboy. Vytvořili jsme interaktivní hru s náznaky RPG. Hráč měl za úkol “sbalit” co nejvíce holek a pokud možno všechny dostat do postele. Z hlavního rozcestníku (pohled shora na jeho pokoj) šlo kliknout na postel, počítač, knihovnu apod. Když se vybraly dveře ven, mohlo se přejít do práce nebo na diskotéku. Hlavní část hry probíhala právě na diskotéce, na posuvné obrazovce si mohl hráč vybírat jednotlivé slečny. U každé se zobrazovalo srdíčky, v jakém je vůči hráči vztahu.
Samotná interakce probíhala textovou formou, hráč mohl vždy volit z několika odpovědí. Za touto textovou hrou byl poměrně propracovaný model, dívky byly několika různých charakterů (citlivka, dračice), mohly se nacházet na 4 různých levelech vztahu. Celkem bylo připraveno asi 25 otázek, ke každé ještě 2-3 varianty daných 4 odpovědí. Hráč mohl například urazit holku nakolik, že utekla pryč. Ve hře bylo 7 různých fotek holek.
Hráč měl také dva ukazatele síly a peněz (část jsme nestihli úplně dokončit). Obě položky si mohl doplnit formou miniher – peníze získával v práci “vynášením popelnic” (držením prstů na nich určitou dobu), ve spánku zase mohl klikat na dámské kalhotky. Z technologických podrobností – veškeré herní texty jsme měli připraveny v češtině i angličtině, byly uloženy v XML souboru. Když hra na začátku zjistila, že se na webu nachází novější verze, stáhla si tu aktuálnější. Měli jsme také připravenou podporu pro kompletní serializaci parametrů rozehrané hry do Isolated Storage, to jsme už ale nestihli úplně dokončit. Ve hře byla podpora pro online skóre, odesílalo se na službu mogade.com. Měli jsme rozmyšlené, že by se v dalších verzích hry mohly nacházet kromě diskotéky i další prostředí, jako například knihovna.
Myslím, že jsme udělali opravdu slušný kus práce. Na to, že jsme se společně předtím téměř neznali, tak spolupráce v týmu fungovala velice dobře. Jinak, hru určitě do marketplace nahrajeme v nejbližších dnech, budete si ji moci také odzkoušet. Věřím, že se u ní určitě pobavíte :)
Vyhodnocení v HK
Z celkových pěti týmů jsme nakonec skončili zase na třetím místě. Porota se tentokrát ani nijak nevyjadřovala k soutěžním aplikacím, což bylo docela škoda. Byli jsme rádi, že se nám to vše podařilo dokončit. Především ostatní kluci z našeho týmu ale odjížděli tak trochu rozladění. Tak nějak jsme se po naší prezentaci cítili alespoň na místo druhé :)
Pro příště by si to asi chtělo ještě více rozmyslet tu závěrečnou prezentaci. Víc tam vypíchnout klíčové vlastnosti dané aplikace. Přidat tam nějakou tu hromadu marketingových keců. Možná jsme už v průběhu dne měli více spolupracovat s porotou a snažit se je více “získávat na naši stranu”.
Je škoda, že z obou akcí jsem měl pocit, že záleží spíše na nápadu, jak se zalíbí porotě, než na tom, jak je aplikace rozsáhlá, kompletní, dokončená nebo promakaná. Přijde mi to jako poměrně škoda, že to potom záleží víc na náhodě a trefení se do vkusu, než na provedení.
Budoucnost?
Pokud bych mohl navrhnout drobné vylepšení, bylo by možné u příštích podobných akcí posuzovat aplikace podle nějaké předem dané objektivní stupnice? Aby měl každý tým z této akce mnohem lepší zpětnou vazbu. Věřím, že zavedení takovéto stupnice by žádným soutěžícím neuškodilo. Velice pěkné mi připadá rozdělení parametrů, pomocí kterého jsou hodnoceny aplikace na soutěži Imagine Cup – přikládám pro ukázku:
- 10% Problem Definition: How precise and relevant is the real world problem chosen by the team?
- 10% Consistency: How well does the project adhere to the given theme?
- 10% Innovation: Does the application approach a new problem, or look at an old problem in a new way?
- 10% Impact: Does the application either impact a large number of people very broadly, or impact a smaller number of people very deeply?
- 10% Effectiveness: To what degree does the application solve the problem in question?
- 10% User Experience: To what degree are the HCI (Human Computer Interfaces) intuitive, ergonomic, and user friendly?
- 10% Extendibility: Is the project technically open for evolution?
- 10% Complexity Management: How well does the solution assemble and handle all the technologies and techniques used to solve the problem?
- 10% Functional Completeness: Is the project implemented, working, and "demonstration-ready"?
- 10% Presentation: The judges will be looking for oral presentations that provide background and context to the project, explain why the problem is an interesting one, highlight how the system works, and include an insightful demonstration. Teams will also be evaluated on their ability to take questions from the judging panel.
Jsou zde zastoupeny všechny oblasti, vč. posouzení rozšiřitelnosti, funkční kompletnosti apod. Chápu, že ohodnotit všechna tato kritéria u všech soutěžních aplikací by asi bylo docela časově náročné. Přesto věřím, že soutěžící týmy programující předtím 12 hodin v kuse, by si na podrobnější výsledky určitě rádi počkali.
Tento příspěvek můžete brát jako takový otevřený dopis organizátorům. Pokud se pro příští akci doplní nějaká podobná pravidla posuzování aplikací, určitě se jí rád zase zúčastním. V opačném případě dám prostor dalším lidem.
Určitě bych nechtěl, aby tenhle příspěvek byl chápán jako nějaký nářek, obě akce byly opravdu povedené a vždy jsme se tam skvěle pobavili. Přesto jak se říká – všechno se dá ještě o něco vylepšit :)
Díky.