Dnes ráno jsem si řekl, že v poslední době dělám na tolika projektech a tak často je střídám, že mám problém udržet si přehled v tom, kde co mám hotové, kde je co potřeba vylepšit nebo dodělat. Času stráveného řešením tohoto “sena” bylo už zkrátka moc – tolik, aby se mi vyplatilo nasadit nějaký bugtracker, kam bych si přehledně zapisoval alespoň ty základní a důležitější úkoly. Zjistil jsem, že když si všechno přehledně někam vypíšu, zabere to daleko méně času než hledání a vzpomínání, co jsem kde zase chtěl vylepšit. A navíc mám přehled, kolik práce ještě musím udělat a tím pádem mám lepší odhad toho, o kolik nestihnu stanovené deadliny :-).
Inu ráno jsem se jal vybírat nějaký bug tracking systém, který by se dal napíchnout na SVN, kterou zatím (a doufám že už ne dlouho) používám na své projekty. Jakmile vyjde TFS 2010, okamžitě ho nasadím a začnu používat, protože je to kompletní řešení se vším všudy. Po docela dlouhém hledání jsem narazil na krásnou přehlednou tabulku na Wikipedii a z té přehršle jsem vybral pár kandidátů. Vyhrál BugTracker.NET, který je psán v .NETu a díky tomu jsem na server nemusel instalovat PHP a MySQL.
Nejsem idealista, takže jsem nečekal nějakou příjemnou instalaci typu spusť MSI, vyplň databázový server a ono se to nainstaluje a bude fungovat. U open source tyhle věci nejsou v módě, takže jsem asi 2 hodiny kopíroval soubory tam a tam, editoval konfiguráky a snažil se to zprovoznit, což se nakonec povedlo.
Už při studiu web.configu mi bylo jasné, že něco není v pořádku. První, co mě praštilo přes oči, je fakt, že connectionString k databázi nebyl v sekci connectionStrings, kam patří, ale jako položka v appSettings. Application settings je v konfiguráku několik desítek, naštěstí jsou proloženy komentáři, takže u většiny alespoň víte, na co jsou.
Celá aplikace je taková pochybná – funguje, ale má spoustu nedodělků typických pro open source (nedbalé a špatně použitelné GUI, které dělá uživateli schválnosti, a dále řada drobností, které člověka dost překvapí – řazení podle priority třeba řadí stringově a ne logicky, takže nejvýše je high, pak low a pak medium).
Po dalších dvou hodinách nadávání jsem zprovoznil i integraci se Subversion, kterou měli v dokumentaci dost ledabyle popsanou. Pozor, BugTracker.NET má na rozdíl od většiny jiného open source softwaru alespoň nějakou dokumentaci, i když občas dost nepřesnou a laxní.
Pak jsem se ale podíval do jedné ASPX stránky a málem jsem potom čistil večeři právě prošlou částí zažívacího traktu z klávesnice. Autor asi v životě neslyšel o MasterPage, neví, že v ASP.NET jsou serverové komponenty, jinak si nedovedu představit jediný důvod, proč aplikaci tak zprasil. V každé stránce je HTML element, v každé je HEAD sekce s explicitně definovaným includem jQuery skriptů (takže pokud se rozhodne použít novější verzi jQuery, tak bude muset měnit názvy souborů ve všech stránkách, kterých je bratru několik desítek; anebo spíš soubor přejmenuje na starý název) a podobné hovadiny. Pro menu se používají Server Side Includes samozřejmě (jak také jinak že, sitemapy přece ASP.NET neumí) atd. Aplikace je pro ASP.NET 2 mimochodem, u 1.1 by se to ještě dalo pochopit, tam většina výše uvedených featur prostě nebyla.
A tu mě napadlo, že ono to ASP.NET MVC, které nemám rád, přeci jen k něčemu bude. Tedy proč ho vlastně nemám rád – jde o to, že se mi už asi 50 lidí snažilo vysvětlit, k čemu je, ale žádný nepřišel s argumenty, které by prezentovaly nějaké jakoukoliv výhodu oproti WebForms, ale to je jedno.
Je mnoho programátorů, kteří si ASP.NET WebForms prostě nezaslouží. Nejsou schopni (anebo ochotni) si o té technologii přečíst ani základní shrnutí, jak vlastně funguje a co se tam jak dělá, a začnou v tom nějak bastlit – tak, jak byli zvyklí z PHP. Zápasí s ViewState, s PostBacky, netuší, že existuje něco jako MembershipProvider, sitemapy, vlastní komponenty, témata atd. A přitom to nedá tolik práce, stačí přečíst pár článků nebo nějakou knížku a člověk je hned v obraze a ví, co se jak má dělat. Někteří vývojáři (a není jich bohužel málo) si prostě ASP.NET WebForms nezaslouží.
ASP.NET MVC není oproti PHP takový rozdíl. Ten návrhový vzor, který se tam používá, není tak těžké pochopit, a začínající programátor v ASP.NET MVC nenadělá rozhodně tolik škody jako ve WebForms, které jsou řádově složitější a mají daleko strmější křivku učení.
Tím rozhodně nechci tvrdit, že ASP.NET MVC je jen pro začátečníky a nedá se v něm napsat seriózní aplikace (ostatně to jsem nikdy netvrdil). Jednou z jeho výhod je právě jeho jednoduchost, díky které programátoři, kteří s nemají moc zkušeností, nenapáchají tolik průšvihů.
Důležité je ale jedno – pokud se chcete nějakou technologii naučit, je dobré napsat si v ní nějaký projekt. Ale před tím je velmi vhodné seznámit se se všemi (nebo alespoň s většinou) možností, které nabízí, a pochopit její základní principy.