Kdybych měl od zítřka zase psát webové aplikace...

Kategorie:

... tak bych s tím měl obrovský problém. Ne proto, že jsem zapomněl, ale proto, že se nerad vracím k horšímu.

Pamatujete se na to, jak jste se učili číst? Nejdřív jste slabikovali velká tiskací písmena, pak jste je četli plynně, pak jste se naučili i malá tiskací písmena, četli jste si první knížky, a pak jste přišli do první třídy a trpěli jste, protože vás učitelka nutila číst zase po písmenech a slabikách - to prý abyste netraumatizovali ty děti, co ještě v první třídě číst neumí. A že to traumatizuje ty, co číst umí, to nikomu nevadí?

Ale co už.

Každopádně jde o ten princip, kdy se naučíte nějaké pokročilé metody, jste nadšení z toho, jak skvělé to je, a pak vám někdo řekne Zapomeň, kamarýde, zpátky na stromy! Zkuste si někdy přesednout ze svého krásného nového auta s posilovačem řízení, s posilovačem brzd, tempomatem a s vylepšením lecčeho zpátky do Škody 105. Jako jo, dá se tím jet, někam se tím i dostanete... s rodičema jsme se tím dostali třeba za 24 hodin jízdy z Prahy do Splitu. Dneska můžu ráno vyjet v osm z baráku a v pět večer už popíjet na terase nad Jadranem (a to to nebudu nijak kalit). A víte proč? Protože se nebudu s*át s nepohodlným verkem, kde musím točit kličkou jako debil, abych si otevřel okýnko, a kde dostanu už za Vídní křeč do nohy od plynového pedálu. Tyhle radosti z totální vlády nad strojem dnes už s chutí přenechám zilogatorům a podobným.

Kdo sleduje moje zápisky pravidelně, ví, v jakém duševním rozpoložení jsem byl, když jsem končil s webařením. Několik let jsem měl dojem, že sloužím jako humanoidní překladač byznys logiky na SQL dotazy; později na metody datového modelu. Každý zvyjebaný CRUD jsem psal ručně, každý řádek kódu jsem musel nabušit do klávesnice, se vším jsem se crcal - a víte vy co? Přišlo mi to normální.

Pak nastal zlom a legendární zaměstnání "ne, nebojte, weby dělat nebudete", kde jsem nejen psal idiotské SQL dotazy, ale navíc pro idiotský template engine s názvem "XSLT", pro PHP 5.0.2, protože ve vyšších verzích to nefungovalo, práci, kde jsem musel bojovat za použití jQuery a kde jsem si znovu procházel martyriem se stupidními argumenty "Naši zákazníci mají IE" a "Kdybys ten web udělal tabulkama, máš to rychlejc...", a tehdy jsem si jasně uvědomil, že to dře. Nebýt takhle razantní zpátečky a skoku někam do roku 2004, asi by mi nedošlo, jak moc mě to prudí, a nad psaním tun kódu v PHP bych dál mával rukou. Naštěstí ta razantní zpátečka přišla - nejdřív mi kolega vysvětlil, že "jQuery asi možná má něco do sebe, ale ty na to zapomeň, ty budeš dělat web v tabulkách a v JScriptu pro IE", a pár dní nato jsem měl tři týdny v Americe na přemýšlení. A dneska si myslím, že tehdy opravdu zapůsobil ten americký vir "pojďme něco udělat!" Tak jsem udělal.

Teď jsem dva roky pryč z aktivního psaní webů, navíc mám díky práci možnost vidět, jak "to dělají jinde", tak se cítím přesně jako po těch třech týdnech s Dodgem: "Mé příští auto musí mít tempomat, zónovou klimatizaci a automatickou spojku!" Dokud to nezažijete, tak si myslíte, že to nepotřebujete. (A pokud to zažijete a zjistíte, že to nepotřebujete, tak budete idiot, když si to pořídíte, btw!)

Kdybych měl od zítřka zase psát webové aplikace...

...nechtěl bych používat PHP. Sorry, fakt ne. Ten jazyk není na psaní webů nějak zásadně špatný, jen je hrozně low-level a než se člověk někam dostane, tak si omlátí prsty o klávesnici. Musel bych mít nad tím hodně silný nástroj. Ne, Nette to není: při vší úctě k Davidovi mi Nette nepřipadá jako dobrá cesta ve chvíli, kdy si můžu vybírat. Jo, mít tým PHPčkařů, co píšou web, tak neváhám a Nette jim naordinuju coby coding standard, ale mně to je málo.

...potřeboval bych generátory kódu. Hlavně na CRUD a další podobné věci, co si jsou z 80% jako vejce vejci. A to v komentářích čtu "je to skvělé, ale tak na 80% našich požadavků, takže to nemůžeme použít..." No, já nejsem purista, co chce věci buď dokonalé, nebo žádné; mně bohatě stačí ten generátor na 80% případů. Z těch zbývajících dvaceti bych si půlku přiohnul tak, abych je mohl taky generovat, no a zbytek holt napsal. Že to není optimální? Že bych to ručně napsal "hezčí"? Napsal, a co? Ruční práce je drahá; deset řádků pro generátor, co vygeneruje slušný kód, nebo 250 ručně laděného? Sorry, ale když nejde o životy, tak beru ten generovaný. Ostatně - generátor má furt konstantní kvalitu kódu, nedělá překlepy, nedělá náhodné chyby a pro stejné zadání vytvoří stejný kód. Se stejnými "coding standards", s předpřipraveným vším tím nutným balastem, kód, který pravděpodobně bude fungovat. Klávesnici beru do rukou jen tehdy, když je potřeba vypustit nějaký klenot ducha, na jemnou ruční práci. Hrubé osekání kódu může dělat stroj, tak ať ho taky dělá!

...budu hledat nástroj na makety, co je spojený s generátorem kódu. Takový Balsamiq Mockups s výstupem do HTML5 ideálně. Výsledek bude kostra HTML kódu, se kterou bych začal tak jako tak, jen si ji nebudu muset datlit ručně.

...programování začnu s tužkou v ruce. Pak vezmu do ruky myš... Do kódu sáhnu, až když bude 90% práce hotové. Dneska už vím, že to tak jde.

...budu trvat na automatizovaných testech. Nejen pro jednotky, ale i pro větší celky (integrační testy). A generátor těch testů by se mi taky hodil.

...budu hledat nástroj s CLI. To je takový prazvláštní cirkulární posun - od interpretu BASICu k překladačům, kde bylo editování, překlad a spouštění přísně oddělené, a přes interprety, kde je oddělené editování od spouštění jsem se vrátil zpátky ke starému "dialogu s vesmírem". Tedy s aplikací. Chci ho minimálně v podobě konzolových příkazů a la Django či Git. "Vytvoř novou aplikaci" - pink! "Vytvoř verzovací repository" - pink! "Udělej mi nový datový model" - pink! "Vytvoř mi k tomu adminské rozhraní" - pink, pink, cink! "Zmigruj databázi na produkční server" - trrrrr, cink! Aspoň takhle aby to fungovalo. Takový přístup a la Smalltalk či Forth, jen nemusí být až tak úplně do puntíku ortodoxní. Nedokážu vysvětlit, proč to chci takhle, ale faktem je, že jsem si "ke konci" psal PHP CLI utility, takže nějaké vnitřní puzení tam je.

...použiju pravděpodobně Python (Django) nebo JavaScript (jo, Node.js). Možná Rails, ale s nimi se zatím míjím. Jo, musel bych se to učit, ale připadá mi to jako mnohem efektivnější, než si psát generátory pro PHP / pronikat do dokumentace k Nette (takový interní žert) / potýkat se se Zend Frameworkem. Možná bych sáhnul i po CouchApp, to je věc, která mě poměrně oslovila svým přístupem.

...použiju asi CoffeeScript. Protože!

...použiju S3 pro statické soubory (obrázky, styly, skripty) a JS knihovny hostuju v CDN.

...nebudu rvát relační databázi tam, kde potřebuju "uložit objekt". A pokud někde na pozadí bude, chci být aspoň tři vrstvy nad ní, ideálně někde na úrovni "vytvoř mi datový model 'uživatel' - Pink! - a připrav pro něj úložiště - Pink! - a napiš k němu CRUD a modul do administrace!"

...nebudu poslouchat řeči, co začínají slovy "já tomu rozumím, protože dělám velké enterprise aplikace v Javě/dotnetu, a..." - protože víte proč? Protože to je váš problém; já nehodlám dělat velké enterprise aplikace v Javědotnetu, ty si dělejte vy, já v tom nenacházím zaujetí. Moje představa o webové aplikaci není "e-shop" ani "systém pro", ehm... "cokoli". Moje představa webové aplikace, kterou píšu, pokud už tedy nějakou od zítřka píšu, se točí kolem HTML5, API, JS a malých efektivních jednoúčelových služeb, co jsou snadno použitelné... Na to fakt nepotřebuju znovuimplementovat Quicksort ani debatovat o tom, co řeší velké frameworky.

...tak počítám s tím, že v očích většiny opravdových programátorů budu matlal a "webový Babica", co vaří z polotovarů, a co víc - je mu to naprosto putna! Bodejť - nedělal bych přeci aplikace kvůli tomu, abych jejich kód vystavoval v muzeu krásných kódů, ale proto, aby dělaly to, co po nich chci, aby to dělaly dobře a hlavně aby fungovaly dřív, než mi dojdou nápady, elán a peníze. Myslete si o tom co chcete.

Kdybych nepřestal psát weby v PHP a nedělal dva roky něco jiného, tak si pravděpodobně nic z toho neuvědomím, dodneška se hrbím nad CRUDama, MVC považuju za přelomový nápad, píšu dál framework a přijde mi to normální.

Když to po sobě čtu, tak si uvědomuju, že se k programování webových aplikací už asi nevrátím. Pro mne není cesty zpět. Jistě je to pro vás úleva - ale nebudete věřit, jak tohle zjištění ulevilo mně!