Dušičkový příběh vývojářský

Za okny je podzim, sychravé a zadumané roční období, jako stvořené pro vyprávění horrorových příběhů o zombiích, umrlcích a řízení vývoje webových projektů. Pojďme si tedy jeden takový hrůzyplný příběh, z něhož běhá mráz po zádech, převyprávět. A nezapomeňte, že děsivá pravda je tam někde venku!

Z komentářů na Zdrojáku, zejména u článků o organizaci práce („Autor popsal jen to, co všichni dávno vědí“), by se mohlo zdát, že komentující do jednoho pracují v těch progresivních firmách, kde všechno funguje naprosto perfektně. Pro ně bude následující příběh čirou sci-fi. Ale jak pravil v Jiránkově kresleném vtipu mimozemšťan u létajícího talíře pozemšťanovi: „Pro vás to je sci-fi, ale my v tom musíme lítat do práce“.

Na úvod je potřeba ujasnit jednu věc:

FIRMA V TOMTO PŘÍBĚHU, LIDÉ A MÍSTA, VŠECHNO JE SMYŠLENÉ. JEN POSTUPY VÝVOJÁŘŮ SE ZAKLÁDAJÍ NA ZAVEDENÉ TECHNICE.

Úvod

Každý správný horror obsahuje klíčovou děsivou větu. Něco jako: „Byly to stopy obrovského psa!“ Tento příběh má podobnou…

To odpoledne venku pršelo a fičel ostrý vítr, který hnal kapky deště téměř vodorovně. Dan P., programátor v malé firmě na okraji města, zadumaně hleděl z okna na stromy, které pomalu v podzimním nečase ztrácely listy, na chodce, skloněné proti větru, na šedé ulice… Přemýšlel nad zapeklitým případem, který právě řešil. Po chvíli se otočil zpět k monitoru a téměř okamžitě si všiml něčeho neobvyklého. Jakmile si uvědomil, na co hledí, krve by se v něm nedořezal a z úst se mu vydralo tiché zaúpění. Byl to mail od zákazníka!

Zadání

Na počátku příběhu byla zakázka. Zakázka stejná jako většina ostatních.

Město se koupalo v paprscích jarního slunce. Vzduchem vonělo jaro a slunce se snažilo ukázat světu, že si svou vládu už nenechá vyrvat. Jarda N., takto obchodní zástupce, měl v kanceláři otevřené okno a užíval si jarní atmosféry, když se ozvalo zaklepání na dveře. „Dále,“ zavolal Jarda a do místnosti vstoupil ředitel. „Ahoj, ahoj,“ pozdravil se s Jardou familiárně. „Poslyš, včera jsem byl na tom veletrhu a potkal jsem se tam s jedním známým, a ten mi dal kontakt na svého švagra. Ten jeho švagr, ňákej Janoušek, má firmu, zelinářství a stavební práce, a chtěl by udělat stránky, tak jsem řek, že to uděláme. Takže se s ním prosímtě dohodni, to bude rychlý, frk frk a fakturujeme.“

Jarda se vydal za zákazníkem a během hodinového rozhovoru zjistil vše, co potřeboval – tedy že zákazník chce portál, kde by lidi našli všechny potřebné informace o pěstování zeleniny a kopání zeminy, mělo by to být komunitní, s Facebookem, na Twitteru, plus fotogalerie, hodnocení uživatelů, geolokace a SEO. Na oplátku zákazníkovi vysvětlil, že to nebude problém, že by to měli do šesti týdnů zvládnout, a že pošle nějaké zadání k odsouhlasení.

Když se vrátil do kanceláře, sepsal to, co si pamatoval, poslal to zákazníkovi a v kopii Karlovi. Karel, šéf vývojářů, si zadání přečetl a pak zavolal Dana P. Dan byl jedním z jeho týmu pěti vývojářů, kteří ve Firmě pracovali na webech. Všichni byli mladí, výkonní programátoři, odchovaní na Javě, Delphi a MS SQL, kteří se během těch let, co pracovali pro Firmu, přeorientovali na PHP. Dan zrovna dokončoval práce na e-shopu pro místního obchodníka s realitami, takže byl vhodným kandidátem pro přidělení další zakázky. Karel mu předal zadání a dodal: „Kdybys něčemu nerozuměl, skoč si za Jardou, ten to s nima domlouval, ten ti řekne víc.

Dan pročítal zadání a v hlavě se mu už sama skládala hotová aplikace. V duchu viděl jednotlivé moduly firemního frameworku, jak se skládají k sobě a tvoří požadovaný celek. Tabulky mu před očima tančily, seskupovaly se do logických celků a hlava sama začala řešit problémy s AJAXovým updatováním informací o uživatelích. „Bude to krásné jaro,“ pomyslel si Dan, a aby se mu myšlenky nerozutekly, spustil konzolu od databáze a začal si načrtávat tabulky. Ten den šel z práce až pozdě, plný nápadů a elánu do programování.

Druhý den napsal Dan dokument, který nazval „Analýza – portál zemních prací“, kam rozepsal navrženou databázovou strukturu a moduly, které k vývoji použijí. Odpoledne si sedli s Karlem na malou poradu.

„Napíšeme to samosebou v Kázetef. Jsou tam funkce, který vlastně všechny máme, ne?“ – „Jo, všechno tam máme, až na ten – Twitter, ale to pude, pro to uděláme novej modul.“ – „Jasně, udělejte to tak. A co ten termín, je OK?“ – „Jo, myslím že je.“ Oba muži se usmáli a pokývli hlavami. Bude to rutina. Jako vždycky.

Framework

Kázetef, neboli Knihovna Základních Funkcí, byla hlavní knihovna, kterou ve Firmě používali. Napsal ji kdysi dávno sám Karel, v době kdy se učil PHP a chtěl, aby bylo co nejpodobnější Delphi. Napsal ji v PHP3 a použil ji ve všech projektech, co od té doby ve Firmě dělali. Pak se stal šéfem týmu a už nebyl čas KZF vyvíjet dál.

Před pěti lety ji přepsal kvůli PHP4 do objektové podoby (KZF2). Bylo to jednoduché: Rozdělil funkce do statických tříd a udělal k tomu systém, který dokázal includovat patřičné soubory. KZF řešila vše podstatné – šablonovací systém, připojení k databázi, ošetření výstupů. V poslední době sice pociťovali, že KZF trochu zastarává, ale riziko, že jejím přepracováním ztratí zpětnou kompatibilitu, bylo příliš vysoké. Navíc si Firma nemohla dovolit ztratit čas nějakým přepisováním knihoven – to žádný zákazník nezaplatí.

KZF obsahovala i databázovou vrstvu – include soubor „ db.php“, v němž byl objekt s metodami Connect, Close, Query, QueryToArray, QuerySingle a LastID – takže byl velmi flexibilní a programátor mohl zapsat i velmi složitý SQL dotaz přímo tam, kde jej potřeboval položit. Navíc obsahovala i sadu inteligentních widgetů, které bylo díky flexibilnímu tabulkovému designu možno vložit kamkoli.

Nejlepší na KZF bylo, že nepotřebovala zbytečné testy – byla dostatečně otestována dlouhými lety používání, takže každý podivný problém byl zcela evidentně problémem v instalaci, nikoli v knihovně. Stačilo jen nasadit vyzkoušenou verzi PHP a správné knihovny. Tím, že odstranili testování, při kterém programátoři stejně nic nevytvářejí, dosáhli ve Firmě obrovské efektivity práce. Alespoň tak to říkal Karel a tak tomu věřili všichni vývojáři.

Betaverze

Dan se bez dalšího otálení pustil do práce. Ve Firmě používali osvědčenou metodu, známou jako stavění od základů, kdy je základem databázový model, nad ním se postaví skripty, co pracují s databází, nad nimi zase skripty komunikující s uživatelem, a když ty fungují, tak se pro ně napíše HTML a to se nakonec nějak graficky upraví. Vše se průběžně ukládá na káčko, tedy na síťový disk K, kam každý programátor před odchodem domů zkopíroval celý projekt tak, jak ho měl ve svém PC. Byl to zaběhnutý postup, který ve Firmě fungoval od konce 90. let, takže Dan neměl rozhodně důvod něco měnit.

Po třech týdnech zavolal zákazník. Chtěl se pozeptat, jak postupují práce, a chtěl drobnou úpravu a rozšíření funkcí. Hovořil přímo s Danem, a ten mu řekl, že nové funkce nejsou problém, a že už příští týden bude moci ukázat, jak to bude fungovat.

Bylo krásné májové odpoledne a kanceláří Firmy voněla káva. Přijel sám majitel zelinářství a velkorypadel, švagr kamaráda ředitele, a Karel s Danem mu prezentovali dílo. Všechno fungovalo perfektně. Systém zakládal uživatele, vyhledával zemní práce a vyznačoval body na mapě, ale Karel s Danem si všímali, že pan Janoušek je stále zmatenější. Po hodině demonstrací se Karel osmělil a zeptal se přímo: „Je něco v nepořádku?“ Pan Janoušek polkl a osmělil se: „Ale – takhle to nebude vypadat, že ne?“

Kolize

Funkce fungovaly a nastal čas udělat uživatelské rozhraní. Dan se mu věnoval s plným nasazením a dle svých nejlepších zkušeností. Týden před odevzdáním bylo uživatelské rozhraní hotové a nakódované a Dan poslal panu Janouškovi odkaz na připravený web.

Když po hodině pokládal sluchátko telefonu, měl dojem, že ho někdo přejel kombajnem. V hlavě mu hučelo spravedlivým hněvem: Janoušek ví o webech houby, ale vymýšlí si nesmysly a jediné, co dokáže říct, je, že si to takhle nepředstavoval. Dohodli se nakonec na tom, že pan Janoušek má známého, a jeho syn dělá grafiku, tak že nějaký návrh s panem Janouškem připraví, a ten pak Danovi pošlou.

Přišel návrh, nad kterým se celý kolektiv vývojářů pobavil až do chvíle, než jim Karel vysvětlil, že za týden se musí předat, protože tu je ta zakázka od kraje, a ať tedy koukají máknout. Žádné s tím crcání, jedu, jedu, jedu…

Do toho volal i dvakrát denně pan Janoušek, který se se synem svého známého intenzivně radil a zásoboval Dana novými požadavky, které označoval vždy slovy drobná úprava, to máte za chvíli hotové…  Jedu, jedu, jedu… Žádné úpravy do databáze, žádné změny v modelu, žádné zasahování do logiky, rychle, rychle, rychle. Na dokumentování není čas, na testování už vůbec, blíží se deadline a projekt se musí předat a vyfakturovat!

Peripetie

Od rána byl Dan viditelně nervózní. Dolaďoval poslední změny v designu. Navíc předešlého odpoledne zkusil prohlédnout web ve Firefoxu, a to v něm vyvolalo záchvat zuřivosti. „Šmejd… Nic v něm nefunguje!“ Přes noc vygooglil několik záplat a teď je horečně dodělával, aby se web ve Firefoxu alespoň podařilo načíst.

U předávání byla atmosféra hustá tak, že by se dala krájet. Naštěstí na všechny všetečné dotazy pana Janouška („jak udělám to a ono?“) dokázal Dan předvést postup, takže po třech hodinách pan Janoušek rezignoval a uznal, že projekt je, až na drobné nedodělky, které Firma v nejbližší době odstraní, hotový.

Po předání nadešel čas napsat dokumentaci. Dan se probíral soubory na káčku, skript za skriptem otvíral a dopisoval komentáře tam, kde si vzpomněl, co měl na mysli.

Katarze

V příběhu jako je tento katarze nepřicházejí.

Přešlo léto, nastal podzim a projekt portálu zeleniny a výkopových prací byl sice formálně předán, ale co týden volal a psal pan Janoušek. Chtěl zapnout SEO, chtěl přidat nové funkce („to je jednoduché, navíc to bylo už v původní specifikaci“) a na Danovi bylo, aby nápady pana Janouška realizoval. Na živém webu tančil mezi vejci a každá úprava byla velmi delikátní operací. Přesto dokázal ve volném čase vše přenést na nový server, když starý nestačil, přidal desítky, možná stovky záplat, nebo třeba napsal texty pro web, protože si s panem Janouškem na začátku tak zcela nerozuměli, jak že to v tomto ohledu bude, a on je přeci od webu.

Mezitím udělal Dan další webový projekt a čekalo ho předávání. Karavana jela dál…

Karel měl jasné krédo: Na testování není čas. Na přepisování knihoven není čas. Optimalizace je třeba dělat racionálně a efektivně, tedy nejjednodušší cestou: zvýšením výkonu serveru. Zanášet do projektů cizí kód není vhodné, protože není čas řešit cizí chyby. Vývoj musí být hlavně rychlý. Máme pět programátorů, tak musíme být schopni dělat najednou sedm projektů. Hlavně za minimální náklady. Však nám to takhle funguje léta a zakázky jsme vždycky sehnali!

A, přátelé, tento konkrétní příběh je sice smyšlený, ale přesto byste neměli zapomínat, že tam někde venku jsou lidé, pro které je něco takového bohužel stále každodenní rutinou…

Ilustrace: Open Clip Art

Začal programovat v roce 1984 s programovatelnou kalkulačkou. Pokračoval k BASICu, assembleru Z80, Forthu, Pascalu, Céčku, dalším assemblerům, před časem v PHP a teď by rád neprogramoval a radši se věnoval starým počítačům.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 51

Přehled komentářů

BostX wow :)
kiLian Článek by měl být povinnou četbou pro všechny z oboru
peregrin Re: Článek by měl být povinnou četbou pro všechny zákazníky
Richard Re: Článek by měl být povinnou četbou pro všechny zákazníky
Karel Re: Článek by měl být povinnou četbou pro všechny zákazníky
srigi Genericke webstudio už nikdy
pssp Re: Genericke webstudio už nikdy
Tomáš Re: Genericke webstudio už nikdy
qin Re: Genericke webstudio už nikdy
Eledin Re: Genericke webstudio už nikdy
Internal Error Re: Genericke webstudio už nikdy
Eledin Re: Genericke webstudio už nikdy
Ifo Re: Genericke webstudio už nikdy
JaJa Jako ze života, ale...
Ivan Nový A co to takhle obrátit.
Radek Chceme pozitivní příběhy!
Michal Kára Re: Chceme pozitivní příběhy!
Lokutus Re: Chceme pozitivní příběhy!
Achteropteryx To musi byt o nasi firme :-)
vzxcvzxcvgsdfg Re: To musi byt o nasi firme :-)
Martin Soušek Re: To musi byt o nasi firme :-)
karlos Re: To musi byt o nasi firme :-)
František Kučera Re: To musi byt o nasi firme :-)
Karlos Re: To musi byt o nasi firme :-)
patrik.sima Re: To musi byt o nasi firme :-)
karlos Re: To musi byt o nasi firme :-)
mikiqex Standard
cc ....
Suchna Re: ....
codeman Re: ....
Gerlige Re: ....
cc Re: ....
qin Re: ....
Biktop Re: ....
TrSek Ambivalentny pocit
Ivan Nový Re: Ambivalentny pocit
Richard Re: Ambivalentny pocit
petiar Re: Ambivalentny pocit
Richard To jsou teda kydy
kiLian Re: To jsou teda kydy
Richard Re: To jsou teda kydy
kiLian Re: To jsou teda kydy
Internal Intel Re: To jsou teda kydy
kiLian Re: To jsou teda kydy
trep trep Re: To jsou teda kydy
Deer Re: To jsou teda kydy
ijacek Re: To jsou teda kydy
kdosi Kazdy komentar by mel mit titulek
Doupov Jera.cz Nabídka všechny chmury zahání
Ivan Nový Re: Nabídka všechny chmury zahání
Biktop Re: Nabídka všechny chmury zahání
Zdroj: https://www.zdrojak.cz/?p=3340