Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

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!

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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

Martin Malý

Martin Maly

Začal programovat v roce 1984 s progra­movatelnou kalkulačkou. Pokračoval k BASICu, assembleru Z80, Forthu, Pascalu, Céčku, dalším assemblerům, před časem v PHP a teď je rád, že neprogramuje…

Školení SEO (optimalizace pro vyhledávače)

DW - Školení SEO
  • Jak fungují vyhledávače a co od nich můžete očekávat.
  • Analýza klíčových slov - kde hledat, jak slova vybrat, jak optimalizovat.
  • Metody linkbuildingu - jak získat zpětné odkazy aniž byste za ně museli platit.
  • Vyhodnocování SEO - nesledujte jen pozice.

Další informace o školení SEO »

Přehled názorů

wow :)
BostX 8. 10. 2010 00:23
Nový
Článek by měl být povinnou četbou pro všechny z oboru
kiLian 8. 10. 2010 03:34
Nový
└ 
Re: Článek by měl být povinnou četbou pro všechny zákazníky
peregrin 10. 10. 2010 08:36
Nový
 
└ 
Re: Článek by měl být povinnou četbou pro všechny zákazníky
Richard 10. 10. 2010 13:56
Nový
 
 
└ 
Re: Článek by měl být povinnou četbou pro všechny zákazníky
Karel 11. 10. 2010 16:18
Nový
Genericke webstudio už nikdy
srigi 8. 10. 2010 07:34
Nový
├ 
Re: Genericke webstudio už nikdy
pssp 8. 10. 2010 09:57
Nový
└ 
Re: Genericke webstudio už nikdy
Tomáš 8. 10. 2010 10:57
Nový
 
└ 
Re: Genericke webstudio už nikdy
qin 8. 10. 2010 19:27
Nový
 
 
├ 
Re: Genericke webstudio už nikdy
Eledin 8. 10. 2010 19:39
Nový
 
 
├ 
Re: Genericke webstudio už nikdy
Internal Error 8. 10. 2010 23:00
Nový
 
 
│
└ 
Re: Genericke webstudio už nikdy
Eledin 8. 10. 2010 23:22
Nový
 
 
└ 
Re: Genericke webstudio už nikdy
Ivo Peterka 12. 10. 2010 09:21
Nový
Jako ze života, ale...
JaJa 8. 10. 2010 07:43
Nový
A co to takhle obrátit.
Ivan Nový 8. 10. 2010 07:59
Nový
Chceme pozitivní příběhy!
Radek 8. 10. 2010 09:09
Nový
├ 
Re: Chceme pozitivní příběhy!
Michal Kára 8. 10. 2010 11:03
Nový
└ 
Re: Chceme pozitivní příběhy!
Lokutus 8. 10. 2010 20:39
Nový
To musi byt o nasi firme :-)
Achteropteryx 8. 10. 2010 09:46
Nový
└ 
Re: To musi byt o nasi firme :-)
vzxcvzxcvgsdfg 8. 10. 2010 11:33
Nový
 
└ 
Re: To musi byt o nasi firme :-)
Martin Soušek 8. 10. 2010 14:41
Nový
 
 
└ 
Re: To musi byt o nasi firme :-)
karlos 8. 10. 2010 19:49
Nový
 
 
 
└ 
Re: To musi byt o nasi firme :-)
Franta Kučera 10. 10. 2010 15:42
Nový
 
 
 
 
└ 
Re: To musi byt o nasi firme :-)
Karlos 10. 10. 2010 20:32
Nový
 
 
 
 
 
└ 
Re: To musi byt o nasi firme :-)
Patrik Šíma 12. 10. 2010 10:38
Nový
 
 
 
 
 
 
└ 
Re: To musi byt o nasi firme :-)
karlos 12. 10. 2010 13:21
Nový
Standard
Michal Novák 8. 10. 2010 11:21
Nový
....
cc 8. 10. 2010 14:21
Nový
├ 
Re: ....
Suchna 8. 10. 2010 15:28
Nový
│
└ 
Re: ....
codeman 8. 10. 2010 16:06
Nový
└ 
Re: ....
Gerlige 8. 10. 2010 16:36
Nový
 
└ 
Re: ....
cc 8. 10. 2010 17:15
Nový
 
 
├ 
Re: ....
qin 8. 10. 2010 19:32
Nový
 
 
└ 
Re: ....
Biktop 12. 10. 2010 15:20
Nový
Ambivalentny pocit
TrSek 8. 10. 2010 16:29
Nový
├ 
Re: Ambivalentny pocit
Ivan Nový 8. 10. 2010 17:45
Nový
├ 
Re: Ambivalentny pocit
Richard 8. 10. 2010 22:23
Nový
└ 
Re: Ambivalentny pocit
petiar 10. 10. 2010 18:43
Nový
To jsou teda kydy
Richard 8. 10. 2010 18:38
Nový
└ 
Re: To jsou teda kydy
kiLian 8. 10. 2010 20:30
Nový
 
├ 
Re: To jsou teda kydy
Richard 8. 10. 2010 22:09
Nový
 
│
└ 
Re: To jsou teda kydy
kiLian 8. 10. 2010 22:52
Nový
 
├ 
Re: To jsou teda kydy
Internal Intel 8. 10. 2010 22:51
Nový
 
│
└ 
Re: To jsou teda kydy
kiLian 8. 10. 2010 22:56
Nový
 
│
 
├ 
Re: To jsou teda kydy
trep trep 9. 10. 2010 00:57
Nový
 
│
 
└ 
Re: To jsou teda kydy
Deer 9. 10. 2010 22:39
Nový
 
└ 
Re: To jsou teda kydy
Karell 9. 10. 2010 02:07
Nový
Kazdy komentar by mel mit titulek
kdosi 11. 10. 2010 04:12
Nový
Nabídka všechny chmury zahání
Doupov Jera.cz 11. 10. 2010 09:46
Nový
├ 
Re: Nabídka všechny chmury zahání
Ivan Nový 11. 10. 2010 16:14
Nový
└ 
Re: Nabídka všechny chmury zahání
Biktop 12. 10. 2010 15:25
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem