...et respice finem!

Pravidlo pro všechny autory, pro programátory pak zejména, ale nejen pro ně.

Quiquid agis, prudenter agas et respice finem.
Cokoli děláš, dělej s rozvahou a ber v úvahu konečný cíl.

 

Každý se s tím potkal a snad každému se to napoprvé přihodilo. Že nevíte o čem mluvím?

To takhle dostanete nápad na úžasný web. Skvělá ajda, za pár dní, přinejhorším týdnů to bude hotové... Takže se do toho dáte, všechno jde úžasně a vy uprostřed práce zjistíte, že by s minimem úprav šla přidat ještě funkce, se kterou jste původně nepočítali. Nu co už, tak ji tam připíšete. A pak ještě jednu a ještě jednu... a pak si řeknete, že by se dalo k tomu všemu přidat ještě něco podobného (klíčová slova: komplexní funkcionalita), tak to celé pojmete šířeji, jste nadšení z představy, co všechno to bude umět... až se to zadrhne. A ono se to zadrhne. Čím víc věcí se může zadrhnout, tím víc se jich taky zadrhne. Z týdnů jsou náhle měsíce a vy máte pod rukama torzo čehosi, co by mohlo dělat spoustu věcí, jen kdyby to někdo dodělal.

Vím o čem mluvím. Mám jich tu několik mega.

Kde jsem udělal chybu a kde ji dělá spousta dalších lidí, dokud si ji neuvědomí a nezačne se na ni soustředit? Zapomněl jsem na ten citát na začátku!

Je velmi důležité si na počátku říct, co vlastně dělám. A pokud je to na pár dní, tak to taky během těch pár dní udělat. Nepodlehnout vábení dalších funkcí a možností. Jasně, člověka napadne spousta věcí, co by šly udělat. Ale nepodlehněte. Zapište si je, maximálně si kód upravte tak, aby šly snadno udělat, ale držte se stále své linie. Pravidlo vývojářů malých projektů je Release early, release often, tedy snažte se mít co nejdřív funkční výsledek a vydávejte často update, třeba každou novinku.

Důležité je nepodlehnout pocitu, že co udělat mohu, to udělat musím. Nemusím! Tohle pravidlo je univerzálně platné a ostatně se hodí i v životě (spolu s tím alžbětinským Když nevím co dělat, nedělám nic).

Tenhle postup jsem si vyzkoušel u Teidu a zopakoval s Jdem.cz. I když mě napadla spousta věcí, které bych mohl udělat, tak jsem je nedělal hned. Jen jsem s nimi do budoucna počítal. Snažil jsem se hlavně držet cíle a celé to ukočírovat k nějakému výsledku. (Kdepak, koncovky projektů mi nikdy moc nešly – člověk má to zajímavé za sebou a čeká ho jen nudná a neproduktivní piplačka s fasádou.)

A stejný postup doporučuju všem: Dělej to, co ses rozhodl udělat. Až to bude, tak přijde chvíle na vylepšování a rozšiřování. A když to máš hotové, tak přestaň. Pokud na tohle pravidlo zapomenu a podlehnu svodům Sirén, skončím s rozdělaným torzem, co mě přestane bavit dřív než ho dodělám.

Ostatně tohle pravidlo využijí nejen vývojáři. Vzpomněl jsem si na všechny ty jednorázové akce a prohlášení, které se nedržely tohoto pravidla (tedy "začít, udělat, skončit") a v nadšení (Můžeme...) se proměnily ve všelijaké platformy, iniciativy, hnutí a sdružení pro... a po čase zdechly na obskurnost, nezájem nebo na přesvědčení, že celá ta vlna veřejné podpory trvá. Nejčastěji na kombinaci všech těchto faktorů. Příkladů je neurekom – některé impulsy se vydaly cestou změny, jiné změnou cesty a ještě jiné... Některé jsou velké, jako Unie svobody, která vznikla jako AntiKlaus hnutí, ale zapomněla včas zastavit. Další jsou třeba akce typu Děkujeme, odejděte, jejichž autoři udělali co zamýšleli, a když viděli odezvu, tak podlehli vůdcovské iluzi a dojmu "kdo, když ne my?" a začali přemýšlet, co by ještě udělali... A na konci škály příkladů jsou party typu "Rodiče ze sídliště Březová II za zachování dětského hřiště", co sepsali prohlášení, rodiče z okolních paneláků jim to podepsali a oni se nesmířili s tím, že odevzdáním prohlášení a informování o výsledku jejich věc končí a snaží se vystupovat jako "síla, s nimiž musí město počítat".

Takže ať píšete článek, děláte web, akci pro děti nebo třeba petici proti hlučné hospodě, nezapomeňte dělat věci s rozvahou a nepouštět ze zřetele konečný cíl.

Když se tohoto pravidla nebudete držet, může se vám taky stát, že začnete stavět poličku na zeď a po týdnu se přistihnete, že kinkláte kladivem nad prknama a u hlavy máte komiksovou bublinu s obrázkem odpalovací rampy LC17.

Dne 31.08.2008

Twittni

Přidej do: asdf.sk StumbleUpon Toolbar Stumble It!

Komentáře

[1] (klokane [openID] - WWW) 31.08.2008, 22:07:55 [X] [D]
Za sebe bych si jeste dovolil dodat. Vyser se na "akademicky ciste reseni". Je krasne kdyz je reseni univerzalni jak jen to jde, ale napred udelej funkcni reseni, vylepsit to muzes vzdycky.

A bod 2. nikdy nezapominej na Paretovo pravido (jinak tez zname 80/20) a snaz se soustredit na tu cast kde je 20% prace a zaroven 80% funkcnosti.

[2] (Pavel Neuman - Mail - WWW) 01.09.2008, 01:49:00 [X] [D]
Skvělý článek Arthure, myslím že si tím asi projde každý. Sám na sobě pozoruju, jak jsem schopen se pohnout dál od doby kdy jsem si to uvědomil (ne, že by to pořád nedalo dost práce ...což mi připomíná, že bych ti měl poslat mail ;)

[3] (Lokutus - WWW) 01.09.2008, 09:28:03 [X] [D]
Sakra, taky jsi to mohl napsat už v lednu. :-(

[4] (Spock lone wolf - WWW) 01.09.2008, 09:56:39 [X] [D]
Jo. Jdu dodělat co jsem rozdělal. Popořadě. Abych zas nedělal na třech věcech napřeskáčku.

[5] (Michal Čaplygin - Mail ) 01.09.2008, 10:47:27 [X] [D]
Za zmínku myslím stojí související přístup "nebudete to potřebovat" (YAGNI:"You Ain't Gonna Need It"), proklamující: "Vždy implementujte jen to, co zrovna opravdu potřebujete, nikoli to, o čem soudíte, že budete potřebovat v budoucnu."
http://en.wikipedia.org...iki/YAGNI
http://c2.com...YouArentGonnaNeedIt
(Další hezký akronym do rodiny KISS, DRY, CoC…)

[6] (Roman - Mail - WWW) 01.09.2008, 11:06:04 [X] [D]
neurekom => neúrekom

[5] ...a nezabudajme na JFDI ;-)

Mimochodom fakt dobry clanocek, tiez si tymto prechadzam pri kazdom projekte a hlavne to sposobujem vrasky "manazerom" pretoze to vzdy znamena ze terminy sa nestihnu. Najvacsia sranda je ze z 99% pripadov to koncovy zakaznik neoceni a nepochopi ;-)

[7] (Laura ) 01.09.2008, 14:06:10 [X] [D]
Mimo jiné by tohle mělo být motto veškerých diplomek :)

[8] (jan korbel - Mail - WWW) 01.09.2008, 17:58:04 [X] [D]
Tato myšlenka (a jiné kolem budování aplikací) je, podrobněji rozvedená, k nalezení ve skvělé knize 37signals Getting Real http://gettingreal.37signals.com...

[9] (Radek [openID] - Mail ) 01.09.2008, 18:04:46 [X] [D]
Cenné rady. Opravdu. Podvědomě jsem tohle tušil, ale na disku se mi projekty hromadí a TODO-listy bobtnají, což značí, že tušit je málo. Div divoucí, že jsem vůbec něco dokončil. Teď si to ještě někam zapsat, nejlíp přes půl zdi v kanceláři.

[10] (pankreas - WWW) 01.09.2008, 22:37:55 [X] [D]
Omlouvam se moc za mirne OT, ale doufam, ze mne, amaterovi, odpustite.

Kladu si otazku.

Je takova aplikace, vyvijena presne tim trochu samodomo zpusobem, ktery AD popisuje.

Aplikace (i) produkcne bezi, (ii) vyviji se dal ku sirokym a krasnym zitrkum.

Co kdyz mezi (i) a (ii) vstoupi potreba rychle opravit maly bug, udelat malou funkcicku-pro-vyvojare-na-pulhodinu, a tak?
Verze (ii) je rozvrtana a neodladena; zasah do (i) je naproti tomu snadny.
Rychlozasahem do (i) ovsem vznikne nekonzistence s (ii), kterou je potreba nejak resit.
Znovu upozornuju - jedna se o domaci projekt bez CVS apod.

Jak to delate vy?

Mate 3 verze?
Cekate s malymi opravami do nejakeho "buildu" (ii)?
Drobne opravy v (i) prenasite rucne do (ii), prskaje a fluse?

Nebo jak se to hrome tzv. "opravdu dela"?

Ja nevim.
Opravdu se jen ptam.
Zajima me to.
A znovu se omlouvam za OT.

Snad me nezpraskate.

[11] (mike ) 01.09.2008, 22:54:51 [X] [D]
[10] Tohle je jeden z duvodu, proc jsem pouzival VCS i na samodomo aplikace. Uz nekdy v praveku, kdy jeste zadny web nebyl ;-)

Pro domaci pouziti se hodi treba Perforce, ktery ma licenci pro dva uzivatele zdarma. Jinak je velmi drahy, ale mozna nejlepsi. V tomhle pripade jednoduse obranchujes verzi (i) do (ii) a pokracujes ve vyvoji ve verzi (ii). Chyba se opravi ve verzi (i) a pak se zaintegruje do verze (ii). Jednoduche, prehledne, s historii zmen a navic se to da snadno zalohovat.

[12] (Arthur Dent [openID] - Mail - WWW) 01.09.2008, 23:18:05 [X] [D]
[10][11] Já na to používám SVN repository, co mi běží na WD BookWorld. A přesně jak píše Mike: I na samodomo projekty. Jenak mám zálohováno, jednak mám v kódech pořádek a jednak se můžu, když něco nehorázně rozvrtám, vrátit.

Nebo lze využít veřejné služby, které nabízejí SVN zdarma pro malé projekty - já používám Google Code nebo Assembla (to když nechci kódy zveřejňovat).

[13] (mike ) 02.09.2008, 00:15:39 [X] [D]
[12] Jen dodam: a kdyz neco zmrsim, tak dokazu v historii najit odpoved na otazku kdy se to stalo, jak se to stalo a mnohdy i proc se tak stalo. Pri tymove praci se to ovsem uplatni casteji.