pátek 30. ledna 2009

Takydatabáze takyprogramátorů

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...

pondělí 26. ledna 2009

Mají komunisté určovat, jak učit ve školách?

Zvláštní otázka. Položila ji lidem redakce Aktuálně.cz svým čtenářům jako reakci na výzvu KSČM týkající se školství. Pro tuto diskuzi je (jako ostatně pro většinu veřejných internetových diskuzí dnešních dnů) typické, že většina diskutujících si ani pořádně nepřečetla otázku a namísto přemýšlení o tom jestli má vůbec tato otázka smysl - zda-li skutečně chceme aby nějaká politická strana určovala jak, nebo dokonce co se má ve školách učit - začali s obvyklými pitomými výlevy typu "komunismus je zlo", "zakázat KSČM" a podobně. To mě přivedlo na dvě myšlenky.

  1. Je vidět, že tzv. komunistické školství patrně nebylo na příliš vysoké úrovni protože většinu diskutujících nenaučilo ani pochopit psaný text. Otázka totiž zněla: "Mají komunisté určovat, jak učit ve školách?", pro pomalejší znova zdůrazňuji: jak učit, nikoliv co učit. Ovšem vzhledem k tomu, že většina diskutujících si neuvědomuje význam věty, pak se na tuto otázku přímo vnucuje odpověď: ne nemají, protože jejich přístup k tomu jak učit evidentně vede k nepochopení psaného textu a je tudíž pro společnost nebezpečný :) Je ovšem nutno podotknout, že komunistické školství bylo vyprojektováno v jiné době a na základě odlišných pedagogických poznatků, proto není tak docela férové obviňovat jej z neschopnosti naučit žáky něco, co ani nebylo jeho cílem.
  2. Možná chci příliš mnoho, možná jsem nenapravitelný idealista, ale mým ideálem je školství, kde žádná politická strana neurčuje jak, tím méně co učit. Školství by nemělo být politikou, naopak má dát člověku předpoklady pro vzdělání a vzdělávat ho v různých směrech. Tedy neindoktrinovat ať již komunistickou, kapitalistickou, církevní, nebo jakoukoliv jinou ideologií, ale naopak má naučit kritickému myšlení. Což se neděje…

Tedy: buď ať určují jak učit ve školách všechny (parlamentní) strany, nebo (lépe) žádná. Pokud přistoupíme na hru, že politici určují jakým způsobem, nebo co učit, pak je nutné (demokraticky) dát prostor pro (pluralitní) vyjádření názoru i komunistům. Pokud na tuto hru nepřistoupíme, pak je celá diskuze na Aktuálně.cz zbytečná :)