Než začneme programovat…

Největší nebezpečí, které na vývojáře číhá, je, že dostane nápad a začne ho okamžitě realizovat. Tomuto nebezpečí lze čelit vhodnou aplikací některých postupů, známých z projektového řízení. V článku se nedozvíte o projektovém řízení nic; místo toho si řekneme, co je důležité si uvědomit dřív, než sedneme ke klávesnici.

Úvodní déjà vu

Tento článek je určen především solitérním vývojářům a malým týmům. Pokud pracujete ve velkém SW studiu, pravděpodobně tyto věci řeší někdo jiný. Článek neobsahuje žádné nové informace ani převratná sdělení, přesto bude (snad) pro někoho užitečný. Naleznete v něm několik tipů a rad z oblasti, které mnozí technokratiční vývojáři nepřipisují přílišnou důležitost, a tou je projektové řízení. Autor sám není v této problematice nijak systematicky vzdělán, přesto se drze cítí oprávněn rozdávat rady – všechny chyby, o nichž bude řeč, totiž coby vývojář udělal, některé i víckrát.

Známe to všichni: Brouzdáte si po webu a najednou – nápad! Mohl bych udělat takový a onaký web, to by bylo skvělé něco takového mít, a nedalo by to ani moc práce! Ještě chvíli se s myšlenkou mazlíme, a pak vybereme název, nakoupíme domény a jdeme nadšení spát.

Ráno bývá moudřejší večera, ale my jsme nadšení, sedáme ke klávesnici a nic nás nezastaví. Následuje několik dní, kdy spotřebováváme zásobu endorfinů, a na konci se najednou probereme a zjistíme, že máme zhruba hotový nějaký web či aplikaci a že nevíme co teď s tím. Zahodit se nám to nechce, takže s tím musíme ven, a čeká nás všechna ta otrava – psát k tomu texty, propagovat to, dohadovat se se známými, že to opravdu mělo smysl a k něčemu to bylo…

Timothy Leary, známý psychedelický guru, kdysi údajně prohlásil, že po podání MDMA („Extáze“) by člověku mělo být dva dny zakázáno uzavřít svatbu. Stejně tak by mělo platit nějaké pravidlo, které by webovému vývojáři, co dostal nápad, zabránilo dva dny kupovat domény a spouštět vývojářské nástroje. Webový vývojář, který dostal nápad, je mnohdy ještě nebezpečnější než zákazník, který dostal nápad. Nápad na úplně novou službu totiž není požehnáním, ale závazkem (ne, trestem snad ne).

Co dělat s nápadem?

Dostali jsme nápad a víme, co nesmíme: Nesmíme vymyslet název, koupit doménu a začít datlovat. Co bychom ale měli dělat?

Každý preferuje jiný konkrétní postup, někdo si naleje sklenku vína a kouká do stropu, jiný jde na koncert, jiný jde něco malého pojíst a další se donutí dělat něco jiného a rozchodit to. Účelem je jediné – zamyslet se dřív než začneme něco dělat. Co všechno si máme rozmyslet a jak, na to existuje spousta návodů ve spoustě knih od spousty velmi zkušených autorů; jejich společným rysem je, že si je většina vývojářů nikdy nepřečte. Vím o čem hovořím – byl jsem přesně takový. Shodou náhod a řízením osudu jsem se najednou ocitl na druhé straně barikády, vystaven záplavě nápadů a nadšených vizí, a mou rolí bylo být právě tím korektivem, tím, kdo bude říkat počkej, počkej, počkej, ještě nic neobjednávej, nic neprogramujeme – nejdřív se zamyslíme…

Nakonec jsem si formuloval takovou velmi jednoduchou pomůcku, kterou jsem nazval pro naše interní potřeby podle své internetové přezdívky Dentova břitva. Zněla takto: „Co to bude, pro koho to bude, k čemu mu to bude a z čeho to zaplatíme?“ Není nijak originální, ale v praxi se mi osvědčila na nápady cizí i vlastní.

Co to bude?

Nelze dělat něco, když nevíme co budeme dělat. Bude to databáze, e-shop, komunitní server, galerie nebo informační systém? Nebo to bude něco úplně nového? Pokud ano, nezapomeňte, že nic nového nevzniká v naprostém vzduchoprázdnu, ale vždy to má nějaké předchůdce – i když hodně vzdálené. I naprostou novinku lze popsat nějakým „je to jako… něco mezi…“ Co na tom, že se v průběhu vývoje ukáže, že vlastně máme dělat něco jiného – důležité je v každé chvíli vědět, k čemu naše snažení bezprostředně směřuje. (Mimochodem: nejtragičtější projekty vznikají z toho, že někdo objeví volnou doménu se jménem, co se mu zamlouvá, a vymýšlí, k čemu by se dala použít.)

Uděláme stránky o jazzu! Doména jazz-hudba.cz je volná!

Naprosto nepřijatelné je odpovědět slovem „stránky“ (nebo „web“ nebo „aplikace“). Určitě jsme každý už slyšeli obdobu výše uvedené věty a známe ten pocit bezmoci, který v programátorovi vyvolá. Leckdy je to ale těžké:

Fajn, stránky o jazzu – ale co tam bude? Nějaké texty o jazzu? Recenze jazzových desek? Pozvánky na jazzové koncerty? Teorie? Historie? Ukázky hudby ke stažení? Noty?

Ano, to by bylo skvělé, kdyby tam šlo dát všechno!

V takovém případě je dobré klienta (i když jím jsme v tuhle chvíli my sami) upozornit, že kdo chce všechno, nemá nic. Než takovou kládu naprogramujeme, tak nám dojde nadšení už ve čtvrtině práce, a zjistíme, že nemáme nic – lépe řečeno že máme čtvrt galerie, čtvrt blogu, čtvrt e-shopu, čtvrt redakčního systému, čtvrt systému na registraci uživatelů… Spoustu věcí, ale žádnou hotovou. Je lepší dělat jednu věc, a tu rychle dodělat, dřív než nás přejde nadšení. A abychom ji mohli dělat, musíme si nejdřív říct, co to bude.

Pro koho to bude?

Je k nevíře, kolik autorů tuto otázku ignoruje. Co mi po tom kdo to bude používat, já to dokážu udělat! V zásadě to není špatná odpověď, ale musíme si uvědomit, že v takovém případě děláme dotyčnou věc pro sebe, takže veškeré náklady na vývoj, čas atd. se musí vyrovnat přínosům, které to bude pro nás mít. Ale většinou při vývoji na web vyvíjíme něco, co budou používat i ostatní. Kteří?

Odpovědět na tuto otázku je velmi důležité – ovlivní totiž celou výslednou podobu toho co děláme. A to nejen design webu a použitý jazyk, ale i logiku práce s webem. Budou naše dílo používat programátoři? Kuchaři? Matky v domácnosti? Mladí? Traktoristi? Umělci? Důchodci? Naštvaní padesátiletí radikálové? Vysokoškoláci se zájmem o genderovou problematiku? Inteligenti nebo „obyčejní lidé“?

Zaměření webu na určitou cílovou skupinu není dogma, ani není nikde psáno, že musí být cílová skupina vymezena nějak přesně a úzce. (Například u Bloguje.cz jsem jako primární cílovou skupinu určil „lidi, co chtějí psát a mají co psát, ale nemají čas nebo zkušenosti zařizovat si hosting a instalovat si vlastní blogovací systém.“ – pozn. aut.) Znát cílovou skupinu nám ale pomůže při rozhodování o konkrétních věcech v návrhu (Má tam být to či ono? A jak to udělat?) nebo při uživatelském testování.

K čemu mu to bude?

Je fajn, že víme co děláme a pro koho, ale musíme si položit i otázku k čemu mu to bude. Otázka vypadá sice nevinně, ale zkuste ji položit a zaměřit se na to, jestli odpověď odpovídá opravdu na dotaz K ČEMU TO JE? a jestli neutíká někam jinam…

No, ten uživatel tam přijde, zaregistruje se, tam bude mít svoje kamarády, těm bude moct poslat zprávu, bude moct sdílet co se mu líbilo, bude tam moct komentovat, najde tam informace o té hudbě, ukázky známých skladeb a bude si je moct zahrát, protože tam najde i noty!

To je všechno hezké, ale to popisuje funkce, nikoli smysl a účel. Tady je na místě oponovat: A opravdu chce naše cílová skupina dělat právě toto? Proč to chce dělat?

Odpověď na tuto otázku by měla obsahovat dvě věci: formulovanou potřebu cílové skupiny („milovníci jazzu chtějí poslouchat jazz“) a popis způsobu, jak náš produkt tuhle potřebu naplní („nabídneme jim skladby k poslouchání!“). Samosebou můžeme chtít uspokojit víc potřeb, tak si je můžeme sepsat všechny, a u všech vymyslet, jak je naplníme (nebo škrtat a škrtat). Při odpovědi na tyto otázky si mimochodem odpovíme i na jinou, totiž Proč to děláme? Přece pro cílovou skupinu, aby mohla nějak naplnit svoje potřeby.

Z čeho to zaplatíme?

V jistých vývojářských kruzích je slovo „peníze“ skoro tak sprosté jako „marketing“. Web přeci musí být svobodný, komerce ho kazí, budoucnost je v open source… Realitou je, že komerce proměnila web z akademické hříčky ve společenský fenomén, který ovlivnil celý svět. A ačkoli se někomu (autora nevyjímaje) může příčit přepočítávání všeho na peníze, u plánování projektů se bez toho neobejdeme.

Náš nápad budeme nějakou dobu vyvíjet, a naše práce něco stojí. Bude muset někde fungovat, a server není zadarmo. Budeme tomu muset udělat nějakou reklamu, i když malou a lacinou, ale i to jsou náklady. Budeme se tomu muset dál věnovat, což jsou další náklady… Ve skutečnosti tedy tím, že uděláme nějaký projekt „na svoje triko“, okamžitě proděláme, a dalším provozem se ztráta zvyšuje. Pokud počítáte s tím, že budete vše neustále dotovat z vlastní kapsy a vlastní prací zdarma, je to v pořádku; je to vaše věc. Ale jinak je na místě se zamyslet, z čeho náklady na provoz pokryjeme.

Konkrétním radám na téma „jak na svém webovém projektu vydělat miliony, nebo aspoň neprodělat kalhoty“ se budu věnovat v některém dalším článku, protože jde o velmi obsáhlé téma. Na tomto místě tedy poslední bod Dentovy břitvy obsáhnu stručnou radou: Dřív než vůbec začnete programovat, tak si rozvrhněte, co budete dělat měsíc po spuštění, co za půl roku, co za rok, a proč za to budou lidé platit.

Samosebou nevíme, kam se přesně během roku trh (ano, trh – třetí neslušné slovo v jednom textu, fuj!) posune a na co bude potřeba reagovat (možná budete řešit změnu funkcí, možná se bude celý váš projekt evolučně vyvíjet, možná – a to bych vám přál – budete bojovat s obrovským náporem zájemců). Každopádně je dobré počítat s několika pravděpodobnými scénáři vývoje a být flexibilní. Ostatně, i agilní metodiky vývoje připouštějí stav, kdy se sice přesně neví, co se stane a jak to ovlivní vývoj, ale je jasné, že to někam směřuje. V našem případě tedy k hotovému dílu, které je pro někoho užitečné a dovede si na sebe vydělat.

Shrnutí

Dostali jsme nápad, a dokázali jsme se samým nadšením nezbláznit. Zvládli jsme prvotní nával emocí, a i když nám cuká ruka ke klávesnici, tak jsme se donutili sednout si a přemýšlet: Je to opravdu něco smysluplného? Neudělal to už někdo? V čem to bude jiné proti tomu co existuje? Kdo to bude používat? K čemu mu to bude? Jak to bude fungovat? Budu to provozovat nebo to někomu prodám? Jak dlouho to budu provozovat?

Nejhorší možnou kombinací odpovědí na Břitvu je: „Nevím co to bude, nevím pro koho to bude a nevím k čemu mu to bude.“ Takový projekt (spíš „projekt“) je lépe zarazit včas, protože když děláme a nevíme co to bude, pro koho a k čemu, tak pravděpodobně uděláme šmejd, co nebude nikomu k ničemu. Všechny příklady geniálních objevů, co vznikly náhodou bez konkrétního záměru, jsou čestnými výjimkami z tohoto pravidla, s pravděpodobností výskytu v řádu zlomků promile.

Doporučuju si odpovědi sepsat a použít je jako základ pro všechny neprogramátorské věci, co budete muset dělat – tedy sepsat nějaký záměr, zadání, nějaký byznysplán a byznysmodel a vůbec všechny tyhlety soft skills, kterými pravý vývojář pohrdá nebo se jich bojí, ale bez nichž téměř nemá šanci udělat smysluplný projekt.

Článek by bylo vhodné uzavřít bonmotem. Co třeba něco takového: Schopnost vývojáře se projevuje v tom, co udělal; jeho moudrost v tom, co nakonec neudělal.

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.

Komentáře: 16

Přehled komentářů

bli zkušenosti, pro zábavu
wn Re: zkušenosti, pro zábavu
vlabra Re: zkušenosti, pro zábavu
Michal Kára Re: zkušenosti, pro zábavu
CrazyWolf Re: zkušenosti, pro zábavu
Zdenda nejlepší kombinace
František Kučera Re: nejlepší kombinace
Laethnes Re: Než začneme programovat...
Martin Existuje záchranný kruh
frr Re: Existuje záchranný kruh
uf Re: Existuje záchranný kruh
miki Re: Existuje záchranný kruh
Slavek Re: Existuje záchranný kruh
Sergej Sú skúsenosti skutočne prenosné?
lzap Velmi pěkné + jedna další poznámka
asystematic Pěkné
Zdroj: https://www.zdrojak.cz/?p=3220