Nápad za milion

Peníze

Známe to všichni: jednoho dne přijde na vývojáře Nápad. Je skvělý, úžasný, ušetři spoustu práce, vydělá spoustu peněz a lidé budou nadšení. Když ho vysvětlíme kolegům vývojářům, jsou nadšení! Nápad je úžasná věc, zbývá jen maličkost – realizovat ho. A na tom spousta nápadů pohoří. Jak se tomu vyhnout?

Situaci z perexu znají snad všichni vývojáři. Nápad je úžasná věc, ale velmi snadno se může stát, že přijde vniveč. Jak tomu předejít, jak se vyhnout známým pastem a jak nápad dotáhnout z oblasti idejí do reality?

Co dělat, když dostanete nápad?

Zaprvé: Nepropadejte panice! Nejste první, komu se něco takového stalo. Postihlo to spousty dalších lidí, a ti to bez úhony přežili. Nemusíte se ničeho bát. Držte se rad lidí, kteří si tím už prošli, a využijte jejich zkušeností.

Zadruhé: Nefantazírujte! Nápad už máte, teď zapněte racionální myšlení. Ne, neznamená to, že nesmíte být nadšení – jen je potřeba se soustředit na ten nápad. Jakmile si pustíte fantazii na špacír, dostanete se do úvah nad tím, jak za pět let budete nakupovat virtuální servery v cloudu a obchodovat ve velkém, začnete hned hledat vhodný cloud, porovnávat cenové nabídky, testovat spouštění serverů, diskutovat o úložištích a rozmýšlet marketingovou strategii pro EMEA. Ne že by to nebylo zajímavé – ale právě proto, že to zajímavé je, hrozí nebezpečí, že zapomenete na drobný detail, totiž že máte zatím jen nápad.

Zatřetí: Nezpychněte! Nemyslete si, že máte v hlavě zlatý důl, za který vám dá někdo majlant. Zatím máte tak maximálně mapku s ostrovem pokladů – ale dokud tam nedoplujete a nevykopete ho, tak je to jen cár papíru s obrázkem.

Začtvrté: Udělejte to! Jasně, trocha fantazírování, nadšení i pýchy k tomu všemu patří, ale pak je potřeba sednout a udělat to. Mluvit o tom, psát o tom, diskutovat o tom a obhajovat to můžete donekonečna, ale jediné, co se doopravdy počítá, je mít to reálně fungující.

V hlavě to je bezcenné

Stává se vám, že potkáváte lidi, kteří vám chtějí nabídnout spolupráci, a jdou na to stylem: „pojď se mnou na tom dělat, je to skvělá věc, tyjo, bomba… ale neřeknu ti ten nápad, víš, ten je jako docela unikátní, nemůžu prozradit víc, aby mi to někdo neukradl…“? Nebo se tak snad chováte sami? Víte, věc se má tak: Buď ten nápad někomu řeknete a spolu ho realizujete, nebo ho realizujete sami. Jiná možnost není. Chodit a paranoidně naznačovat, že nemůžete říct víc, je naprosto k ničemu. Jste tak v situaci člověka, který si představuje auto, jaké by se mu líbilo, ale nikomu o něm neřekne, aby mu ho neukradli.

V diskusích „vytvářet české klony cizích služeb, nebo ne?“ často zaznívá argument „…místo kopírování raději vymyslete něco nového!“ Odhlédněme teď od konkrétní debaty, a zamysleme se nad jinou otázkou: Mají čeští vývojáři málo dobrých nápadů, nebo jich mají stejně jako jiní, jen je nedokáží realizovat?

Udělat to brzy

Je jen jedna věc, která je důležitější, než nápad udělat – totiž udělat ho brzy. Pro mnoho čtenářů to budou kacířská slova, protože věří, že uspějí pouze tehdy, když svůj nápad dotáhnou nejprve do plně perfektního stavu, a až pak jej nabídnou lidem.

V ideálním světě by to tak fungovalo. V reálném světě, a ve světě webové vývojařiny obzvlášť, platí ale, že perfektní stav neexistuje: vždy je něco, co lze přidělat, vylepšit a upravit, a vyhrává ne ten, kdo nabídne naprosto perfektní řešení dnešních potřeb za pět let, ale ten, kdo dokáže nabídnout dost dobré řešení zítra.

Více o principu „good enough“ v článku Jak budeme psát webové aplikace za tři roky?

Ještě jednou si to zopakujme: Udělat nápad brzy je důležitější než udělat ho naprosto perfektně. U mnohých čtenářů tento postoj vzbudí nevoli – u někoho principiální, protože je třeba přesvědčen, že jen dokonalé věci mají právo na život (protože v jeho světě jsou věci buď dokonalé, nebo špatné), u jiných proto, že si jej vyloží nesprávně, tj. doslova a dogmaticky, a přečtou ho tak, že autor vybízí k vytváření nedodělaných polofunkčních šmejdů. Což je omyl a zásadně chybný výklad.

Jasně, je dobré dělat věci dobré a dotahovat je do konce. Ale přistupovat k tvorbě stylem „perfektní – nebo žádné!“ dost často končí právě tím „nebo žádné“, protože na webu málokdy víme, co bude konečným produktem. Vytvořit naprosto dokonalou věc navíc vyžaduje spoustu času, práce a peněz. Pokud je máte, OK. Ale pokud je nemáte, smiřte se s tím, že musíte začít od podstatného, dokonalost přijde na řadu později.

Vysvětleme si to na příkladu: Dostanete nápad, že uděláte službu na tisknutí a rozesílání faktur (třeba). Princip je v tom, že uživatel zadá online fakturu, a za poplatek ji někdo vytiskne a pošle příjemci.

Máte dvě možnosti:

Pokud věříte, že vše musí být nejprve perfektní, tak věnujete rok práce tomu, že budete implementovat pět platebních metod, nakupovat tiskárny, pročítat manuály od účetních programů, psát moduly do účetnictví, domlouvat s poštou posílání hromadných zásilek, automatizovat správu poplatků pomocí výpisu z banky, založíte si na to s.r.o., připravíte si marketingovou strategii, reklamní materiály, barterovou smlouvu s dodavatelem obálek, … Během toho roku nebudete mít v ruce naprosto nic, co by nějak, jakkoli, fungovalo, jen „nápad v hlavě“.

Nebo můžete sednout a za týden spustit službu, která bude fungovat. Platby budete ze začátku zadávat každé ráno ručně podle banky, propojení s účetnictvím ještě nebude, jen jednoduchý textový import, tisknout to budete na laserovce za 3000 a rozesílat každé odpoledne z místní pošty. Ale nápad bude fungovat a bude žít! Bude mít uživatele, může začít generovat nějaký příjem, získáte zpětnou vazbu od lidí, a navíc, co je hlavní: máte v ruce funkční věc! S tou získáte třeba i investici do dalšího rozvoje – a to mnohem snáz než s nápadem, který nikomu neřeknete, aby vám ho někdo neukradl.

Snad všechny „success stories“ startupů a webových služeb začínají popisem toho, jak firma začala s jednoduchým produktem, stlučeným na koleni, který vylepšovala podle toho, co zákazníci opravdu potřebovali. Skoro nenajdete vyprávění, jak tým mnoha lidí začal tím, že si půjčil spoustu peněz, aby mohl připravovat několik let perfektní produkt, vymyšlený geniálním vizionářem, a pak na něm všichni ukrutně zbohatli. Je dobré mít to na paměti, když se rozhodnete realizovat vlastní nápad.

Zopakujme si to: Udělat nápad brzy neznamená odfláknout ho, nasekat v něm chyby a jít od toho, to je nesprávný výklad. Udělejte ho dobře, funkční a spolehlivý, ale nebuďte zajatcem myšlenky, že tam musí být všechno, hned a bez chyby. Nemusí. Začněte od základu, od kostry, od podstaty nápadu, a udělejte ho tak, aby bylo vidět, jak (dobře) funguje!

V našem příkladu je podstatou nápadu to, že „někdo fakturu vytiskne a pošle poštou“ – ne to, že je možné platit kartou, PayPalem, SMSkou a převodem z účtu, ani to, že je možné posílat přímo z patnácti účetních programů. Udělejte nejdřív to podstatné, snaha udělat rovnou vše, a nejlíp, váš nápad spolehlivě zabije!

Co pomůže?

Jak jsme si už na začátku řekli: Nejste v tom sami. V podobné situaci byla spousta lidí, takže existuje řada návodů i doporučených postupů. Dokonce existují i nástroje, které pomohou nezabřednout do tisíce podružností a dobrat se k cíli, tj. k nápadu ve funkční podobě, v relevantním čase.

Důležitou pomůckou pro rychlý vývoj webových stránek či aplikací jsou makety (mockups), prototypy a wireframes („drátěné modely“).

Dovolte poznámku – třeba u strojařů či architektů je naprosto běžné, že si připraví nejprve model zamýšleného výrobku či domu. Staví si „funkční prototypy“, na kterých se ověřují postupy, funkce a používání. Takový prototyp je třeba pomalejší, některou funkci neřeší, něco funguje jen přibližně, ale je to důležitá součást vývoje. Není důvod, proč by to při vývoji programů nemělo jít podobně. Tedy jeden důvod by byl – nikdo to nechce zaplatit. Ale nic jiného do budoucna nezbude.

Pro vytváření maket můžete klidně použít tužku, papír, nůžky, lepidlo, kancelářské sponky a barevné fixy, ale existují i specializované nástroje (autor používá Balsamiq Mockups; další naleznete například v tomto článku). Pomocí těchto nástrojů velmi snadno a rychle vytvoříte maketu aplikace („bude tam textové pole, dvě tlačítka, tady nějaké blabla, a tady šoupátko“).

Je dobré použít k vytváření makety právě takové nástroje, v nichž vypadá vše „jako od ruky kreslené“, a nepoužívat třeba vizuální editor rozhraní. U „kresby rukou“ totiž zůstanete myšlenkami soustředění na princip a nebudete řešit detaily vzhledu; jakmile byste udělali návrh třeba v Delphi, snadno sklouznete k tomu, že začnete zarovnávat prvky, hrát si s jejich rozmístěním na ploše, ladit mezery mezi boxy a dělat další podobné věci. Pokud bude maketa vypadat příliš „jako hotová aplikace“, začnete se v týmu bavit o barvách a „tohle bych dal o tři pixely výš“, místo toho, abyste se bavili o funkci.

Stejně tak není dobré připravovat maketu webu přímo v HTML a CSS. Jednak se hned na začátku zamotáte do stylování prvků, a jednak vám bude líto pak celý kód zahodit a nakódovat design naostro („a nešlo by jen nastylovat tu maketu?“)

Zmíněný nástroj od Balsamiq dokonce umožňuje hotovou maketu vyexportovat a překonvertovat do aplikace v Adobe AIR, která vypadá stále jako od ruky nakreslená, ale lze klikat na tlačítka, listovat seznamy a přepínat volby. Pokud to chcete ukázat šéfovi, klientovi nebo kolegům, je taková živá maketa mnohem lepší než série obrázků.

Když si na maketě ujasníte, co všechno tam tedy nezbytně musí být a jak to má fungovat, je čas na vytvoření prototypu. A opět platí: Prototyp nemusí být perfektní. Nemusí mít design od předního studia ani rozhraní navržené odborníkem na použitelnost. Důležité je zpracovat kvalitně podstatu nápadu a nebabrat se s podružnostmi.

Na vytvoření prototypu je ideální nějaký RAD nástroj, kde si „naklikáte“ kostru aplikace s minimem námahy, a můžete se místo ladění CRUD operací nebo tabulkových výpisů věnovat podstatným věcem. Můžeme sem započítat Adobe AIR, MS Visual Studio (v Express verzi zdarma) nebo i RadPHP. Velmi dobrou službu poskytnou nástroje jako Django nebo Rails, v nichž lze snadno vygenerovat („naklikat“) většinu oné „provozní omáčky“, jako je adminské rozhraní, routování požadavků, databázový model a jeho provázání s databází apod. Pomocí těchto nástrojů vytvoříme rychle velmi slušnou a kvalitně nakódovanou kostru aplikace, do níž zasadíme srdce – náš nápad.

Velmi dobré rady k tomu, jak přeměnit nápad ve fungující webovou aplikaci, přináší článek o Scuku, resp. celý seriál Scukařina.

Výhodou Djanga, Rails a podobných frameworků je to, že jejich kód je natolik slušný, že jej můžeme bez obav použít k produkčnímu nasazení. Jediné, na co se musíme soustředit, je zpracování vlastní myšlenky – právě díky takovému frameworku na to budeme mít čas.

Na prototypu poměrně dobře uvidíte, co je potřeba dodělat hned do první verze a co počká, co není nezbytně nutné mít, či na čem by se vývoj zadrhl. Je lepší oželet funkci, jejíž vývoj by trval dva týdny, a místo toho mít o týden víc času na doladění podstatných věcí a o týden dřív spustit hotovou aplikaci.

Navíc si u prototypu uděláte opravdovou analýzu problému. Teorie sice říká, že analýza má být předem, ale mnozí vývojáři budou z praxe spíš souhlasit s tvrzením Davida Grudla: „Nejlepší analýzu programu uděláte tak, že ho naprogramujete.“ Pokud jste si udělali prototyp, máte analýzu toho podstatného za sebou.

Závěr

Nápad je skvělá věc. Ale sám o sobě, nerealizovaný, je bezcenný (jeden příklad za všechny: Nový Hledač). Pokud chcete s nápadem uspět, musíte jej realizovat, není jiné cesty. Při realizaci mějte na paměti, že fungující věc brzy je vždy snáze prodejnější než špičkové, dokonalé a excelentní dílo za dva roky, pokud všechno dobře půjde, nedojdou peníze a neudělá to někdo dřív.

Pamatujte na pravidlo známé z open source: Release early, release often. Při vývoji webů vlastně ani neexistuje alternativa. Chcete-li uspět, udělejte svůj nápad a nabídněte ho lidem. A udělejte to co nejdřív (ale zase ne tak rychle, abyste odflákli funkčnost). Existují nástroje, co vám pomůžou, ale musíte jim vyjít vstříc.

Pokud budete věřit, že si všechno musíte naprogramovat sami, a svět pak ocení váš špičkový výkon, skončíte velmi pravděpodobně v půlce cesty, bez prostředků, s miliónem krásných řádků kódu, které nebudou naprosto k ničemu, a s jedním zabitým nápadem.

Máte tipy na dobré zdroje informací a rad pro takové situace? Podělte se s ostatními v diskusi pod článkem!

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: 33

Přehled komentářů

honzamac Miluji články na zamyšlení
cb Re: Miluji články na zamyšlení
Laethnes Re: Miluji články na zamyšlení
denzil Ještě tip
JS Re: Ještě tip
vetesnik Railsy
ruka Díky
marek-atlas dakujem
Neddy Záleží na velikosti nápadu...
vetesnik Re: Záleží na velikosti nápadu...
erasmus Re: Záleží na velikosti nápadu...
Neddy Re: Záleží na velikosti nápadu...
snehuliak Re: Záleží na velikosti nápadu...
Kit Re: Záleží na velikosti nápadu...
tiso Re: Záleží na velikosti nápadu...
keff Re: Záleží na velikosti nápadu...
nishkam na druhou stranu
Peter Polák Re: na druhou stranu
Michal Zahradnicek Re: Nápad za milion
ufak Proč o mě všichni píší?
cb Re: Proč o mě všichni píší?
Saljack Re: Nápad za milion
keff Re: Nápad za milion
imploder Re: Nápad za milion
gofry Re: Nápad za milion
Satai Re: Nápad za milion
uf Re: Nápad za milion
keff Re: Nápad za milion
sono Re: Nápad za milion
Kit Re: Nápad za milion
PhoeniX Pěkný článek
Juraj vdaka
Martin Balsamiq
Zdroj: https://www.zdrojak.cz/?p=3417