Komentáře poroty k řešení z 3. kola
Výsledky 3. kola soutěže .NET Challenge
Třetí kolo .NET Challenge nás zavedlo na pole webových aplikací. Nejednalo se však o banální úlohy, které by bylo možné splácat za pár chvil bez rozmyslu. Každý soutěžící musel pečlivě naplánovat jakou technologii využije, jakým způsobem bude schraňovat data, jak vyřeší bezpečnost a hlavně jaké funkce nabídne koncovému uživateli, aby byla aplikace co nejpříjemnější na ovládání a zároveň bylo snadné získat potřebné informace.
První věc, kterou jsme při otevření archivu s úlohou hodnotili, byl způsob dodání aplikace / databáze a pohodlnost jejího nasazení pro testování. V zadání jsme tuto záležitost nijak nekomentovali a nechali jsme na vás, jak se s tím poperete.
Nejoblíbenějším řešením byla obyčejná složka s webovým projektem a přibalenou databází ve formátu MDF. Asi 80% soutěžících poprvé pohořelo na defaultním pojmenování SQL Server instance jako .\SQLEPXRESS - moje se jmenuje jinak. Pokud to ale byla jen otázka connection stringu, tak to chyba nebyla. Bohužel řada z vás nenakonfigurovala správně i providery (membership pro bezpečnost atp.) a tak se dědil původní connection string z machine.config a proto nefungovalo přihlášení - i tuto drobnost jsem vcelku přehlížel, jen jsem nečekal, že se nachytá tolik lidí.
Několik vyvolených dodalo databázi ve formátu XML (hezké řešení vzhledem k tomu, že dat bylo málo a cachování správně použili), či jako běžnou databázi do SQL Serveru (instalace buď v podobě SQL scriptu, BAK zálohy nebo dokonce formou automatické instalace pomocí datového modelu přímo z webové aplikace).
Po úspěšném spuštění (dalo to zabrat, ale povedlo se to u všech) jsme se před samotným hodnocením kódu a funkcí podívali na zoubek použitým technologiích. Poměrně populární se stává dlouho očekávaná MVC (nedávno vypuštěná jako Beta), což je nadstavba do ASP.NET oddělující striktněji kód, vzhled a datovou vrstvu. Na druhou stranu nikdo neimplementoval hojně propagovaný Silverlight, což plně chápeme, nebylo by to asi moc užitečné. Někteří vylepšili uživatelské prostředí AJAX Control Toolkitem nebo JavaScriptovou knihovnou jQuery. Pokud hovoříme o vzhledu, setkali jsme se párkrát s využitím opravdu skvěle vypadajících zdarma dostupných css šablon. Je ale jasné, že to v programátorské soutěži není berná mince hodnocení.
Lehká úloha - Novinky na webu
Výsledky úlohy Novinky na webu
Lehká úloha spočívala ve webové aplikaci, která funguje jako jednoduchý redakční systém na publikování novinek, co se mohou zařazovat do jednotlivých kategorií.
Sešlo se nám 15 řešení. Mohli jsme na ně nahlížet dvěma způsoby - jako uživatel na celkový dojem z výsledku a jako programátor na provedení. Je jasné, že kvalitní objektový návrh a dobře komentovaný kód dostane dost bodů, i když jeho GUI nebude moc přívětivé. Ale nebude jich pořád tolik, aby dosáhl na jednodušší aplikaci s promyšleným ovládáním. A můžou to být i drobnosti - co třeba abecedně seřazené kategorie nebo schování zbytečných údajů jako je Id záznamu, opravdu ho potřebuje uživatel znát?
Řada soutěžících i přes nepovinnost úkolu vypracovala rozsáhlé administrační rozhraní na editaci profilů a správu uživatelů. Často to při hodnocení rozhodovalo, výsledky jsou těsné. Zajímavá pak byla drobná vylepšení jako rozšířené stránkování, žebříček uživatelů, kteří nejvíce přispívají nebo vyhledávání podle rozsahu datumů.
Samotné zobrazování novinek řešil každý po svém. Bylo těžké určit, které řešení je nejlepší, když téměř všechny splnily zadání a rozdíl byl právě v těch "drobných" třešničkách na dortu.
Těžká úloha - Jezdíme sem a tam
Výsledky úlohy Jezdíme sem a tam
Úspěšné vyřešení těžké úlohy by mělo spočívat v napsání webu starajícího se o seznam plánovaných jízd a jejich poskytnutí ostatním uživatelům systému k zarezervování. Poslali jste nám 7 řešení.
Popisovat tady použité algoritmy by bylo asi zbytečné. 99% příkazů totiž jen buď obstarává data, popřípadě nějak vyhodnocuje požadavek nebo nastaví nějakému prvku určitou vlastnost, aby zobrazil rozumný nadpis. Žádná věda.
Mnohem zajímavější je ale zpracování uživatelského prostředí. Oproti jednoduché úloze se zde totiž můžeme dostat do více situací, které si vyžadují trochu odlišný přístup:
- vyhledávám jízdu, která mi bude vyhovovat - nechci vidět zbytečné záznamy (filtrované vyhledávání, hlídací pes)
- chci si založit svoji jízdu a mít přehled o rezervacích, které jsou v mém autě provedeny
- chci mít přehled o plánovaných jízdách - ať už je plánuji nebo se jich jen zúčastňuji
Při hodnocení bylo jasně vidět, kdo se snažil systém zdokonalit do použitelné podoby a kdo se spíše zaměřovat jen na strohé splnění úlohy. Jak už jsem ale psal na začátku - i ono strohé plnění úloh přináší hodně bodů a proto neříkám, že se jednalo o špatnou strategii.
Výsledné aplikace měli řadu podob, způsobů ovládání, validace, designu i náhledů na data. Všechny odevzdané řešení jsme dvakrát pečlivě prošli a snažili se podle jejich funkcí, návrhu, přehlednosti, komentářů a vlastních vylepšení optimálně sestavit hodnotící žebříček.
Závěrem
Všichni soutěžící odvedli skvělou práci. Děkujeme vám za čas, který jste tvorbě řešení obětovali! Doufáme, že psaní webové aplikace trochu obohatilo vaše zkušenosti nebo při nejmenším alespoň procvičilo dosavadní znalosti využitelné při dalším profesním počínání, či studiu.
Co se týče posledního kola, zkusíme si s ním pospíšit, aby se vše stihlo do vánoc.