Psát webové aplikace je utrpení. Mnohem větší utrpení ale je po někom upravovat, nebo opravovat webové aplikace. Ti kdo je píšou jsou často prasata a jejich kód podle toho vypadá. V průměru každá první aplikace, která se mi dostane do ruky je bastl a tak nezbývá, než ji nějak "ohackovat", aby nějak fungovala a raději se tím moc nezabývat.
Na to, že takzvaní "programátoři" patlají dohromady HTML kód s aplikační logikou už jsem si zvykl a v podstatě s tím kromě ignorování moc nenadělám. Nicméně to, že většina těch blbů není schopna navrhnout databázi, s tím se prostě smířit nehodlám. Jenže co chtít od kreténa, který píše aplikaci tak, že začne psát HTML stránku a zhruba tak někde uprostřed si vzpomene, že by se tam měly zobrazovat (a zapisovat) nějaká data a tak narychlo nakliká v nějakém klikátku "databázi", pak přidá další tabulku, pak další a... hurá funguje to. No vida, že se to dá dělat i rychle! Zabít.
Dělal jsem tuhle ve škole zápočet z databázových systémů a... dostal z nich Ačko :). Ale když jsem sledoval úroveň znalostí mých spolužáků, přestalo mě to velice rychle těšit. Být tím zkoušejícím, tak je všechny z fleku vyhodím, včetně sebe, jenže... oni by dolezli zas a proč si přidělávat práci. No nakonec nemám to zkoušejícímu za zlé. Co mu, ale mám za zlé je celá koncepce výuky tohoto předmětu. Proboha jak chce někdo učit databázové systémy tím, že studentům vysvětlí jazyk SQL?! To je totéž jako kdyby opraváře automobilů učili jak správně pracovat s gola klíčem, ale už mu neřekli jak funguje auto a jak ho opravit!
Byl jsem pouze na jedné přednášce z tohoto předmětu a po půl hodině jsem znechuceně utekl na autobus, protože se mluvilo o jazyce SQL. Jako kdyby se celý svět databází točil jen kolem jazyka SQL, jako kdyby neexistovaly i jiné než relační databáze, jako kdyby návrh databáze nebyl tou nejdůležitější a nejsložitější věcí, jako kdyby... Ale což, řekl jsem si, třeba se o normálových formách aspoň zmíní. Ptal jsem se na to pak spolužáků před zápočtem. Evidentně tento termín slyšeli poprvé v životě. Jestli tihle lidé mají navrhovat nějaké databáze, tak potěš...
Proč o tom vlastně píšu... Vzpomněl jsem si, jak jsem kdysi pracoval v jisté společnosti na poměrně velkém projektu fotobanky. V podstatě je taková fotobanka jen velká a specifická obrázková galerie. Nic víc. Celé se to dá udělat s řekněme deseti databázovými tabulkami. Jenže ouha – ten co to navrhoval, ač byl studentem jisté prestižní informatické školy, navrhl strukturu takovým způsobem, že zabít ho za to by bylo málo.
Uvedu příklad: každá fotka, měla své unikátní číslo. Běžně se tomu říká ID, jenže tohle ID bylo komplikovanější. Bylo devítimístné a bylo členěno tak, že první dvě místa popisovaly kategorii, druhé dvě místa popisovaly podkategorii (takže kategorie byly omezeny jen na dvě úrovně), další tři místa popisovaly pořadové číslo fotky v podkategorii a poslední dvě místa popisovaly velikost obrázku (z každé fotky se při nahrání udělaly další tři velikosti, pro různá použití). Takto se samozřejmě ID nekonstruují, jenže to tomu truhlíkovi asi nikdo neřekl.
Vše fungovalo výborně a vlastně by nebyl ani důvod se o tom vůbec zmiňovat, kdyby se jednoho dne nestalo, že si zákazník vymyslel, že chce mít možnost mít jednu fotku ve více kategoriích. A samozřejmě jsem to byl já, kdo to měl zařídit. Nebudu to moc rozvádět, ale výsledek byl takový, že po 14denní snaze (fotek bylo tou dobou už kolem 20 tisíc) se mi podařilo dostat to do funkčního stavu, ale bylo to klasické škrábání se levou rukou za pravým uchem přes rozkrok. Od té doby již naštěstí aplikaci přepsali, takže už je to jedno. Nicméně špatná zkušenost s lidmi, kteří neumí dělat vlastní práci zůstala.
Proto jsem si na to opět vzpomněl u onoho zápočtu. Představa, že mí spolužáci prolezou vysokou školou nedotčení základními pravidly vytváření databází a půjdou směle s glejtem od školy do firem vyrábět podobné bastly, mě děsí. Zkušenost mi totiž říká, že nikdy nevím kdy zase chytnu po nějakém takovém "hlavně, že to funguje" zmršený projekt na opravu.
Hlavně, že to funguje...
Žádné komentáře:
Okomentovat