Cayman Islander | Diary of a Freelance Programmer traveling the world

Cayman Islander's blog - Diary of Freelance Programmer

Umíme správně plánovat projekty nebo nám chybí dobrý "software scénárista"?

Nemám teď na mysli plánování jasných a jednoduchých "projektů" typu, jak postavit zeď 5x3 m z cihel za pomoci dvou zedníků, kdy se dá jednoduše odhadnout a skoro přesně spočítat, jak dlouho to bude trvat.

Jde nyní o projekty, či úkoly, se kterými se člověk ještě nesetkal, kdy je pro vyřešení potřeba ještě nějaká technologie nebo speciální znalost, kdy se jedná třeba o nějaké unikátní, individuální rešení, šité na míru daným podmínkám.

Takovou typickou oblastí jsou třeba softwarové projekty, kdy je potřeba vyvinout nějaké nové řešení, doplnit speciální funkčnost do již stávající aplikace, převést staré programy na jinou technologii, popř. integrovat více individuálních rozdílných řešení do jednoho komplexního balíku.

Už jsem kdysi psal, že se na mě obracejí různé firmy převážně z USA, které chtějí třeba převést sadu Excel tabulek do SQL databáze a místo maker v Excelu, chtějí plnohodnotnou aplikaci pro Windows; popř. někdo chce převést "aplikaci" v Accessu do "pořádné" databáze, neboť jim nějak nefunguje, když Access začne používat +200 uživatelů současně (!); či se někdo nedávno poptával, zda bych jim převedl starou aplikaci v DOSu - ano i taková řešení ještě některé firmy (i nadnárodní) používají - do Windows, či přímo na Web, a současně chtějí převod z file-server řešení do client-server, či chtějí využít 3-Tier technologie.


Jak se obvykle začíná (zjednodušeně)?

Každému návrhu řešení předchází v ideálním případě důkladná a pečlivá analýza, která by měla zdokumentovat současné procesy a postupy a měl by to být základní vstupní materiál pro následný návrh řešení pro zákazníka a základní technickou specifikaci pro vývojový tým.

Po odsouhlasení vstupní analýzy a návrhu řešení všemi zainteresovanými stranami by teoreticky mohlo následovat detailní plánování projektu, definování priorit a jednotlivých etap, lidí a dalších zdrojů, které budou potřeba (servery, databáze, dodatečný software, případně školení), odhad časové náročnosti, příprava finanční kalkulace, definování kritických bodů projektu, stanovení přesného časového plnění s detailním rozpisem úkolů pro management, pro jednotlivé týmy, či konkrétní osoby.


Jak to (pěkně) funguje v praxi?

Musím říci, že nesnáším všechny ty teoretické metodiky a certifikace na cokoliv, jako je ITIL, ISO 2000-10, z ověřených důvodů nesnáším ani firmy, které v rámci několikaměsíční analýzy připraví sadu dokumentů s názvy jako Project Registration, Proposal & Bid Documents, Product Plan, Staff Assignment, Design Specification, Trends & Risks,... a na závěr připraví ještě prezentaci v PowerPointu pro zákazníka.

Co mi pomůže, když mi nějaký "certifikovaný" konzultant připraví sadu takových rádoby "certifikovaných" dokumentů, kdy než dočtu ty stovky stran a vyznačím chyby, ukazující totální neschopnost "certifikovaného" pablba, tak se situace již změnila a skutečnost už neodpovídá přečtenému, popř. jiná firma již dodává hotový prototyp nebo "full solution":

"While other companies work on a Design Specification in the same time we are already delivering the full solution."


Co stačí, aby veškeré přípravné fáze projektu byly k "ničemu"?

Jsou to možná "maličkosti", ale stačí, aby podklady dodané zadavatelem nebyly úplně kompletní a až teprve v průběhu vývoje se nalezne něco, co vše staví na hlavu a je potřeba přepracovat analýzu a všechny související etapy. (S kolika špatnými analýzami jsem se už setkal!)

Při malé zkušenosti firmy - týmu s nějakým složitým projektem, či technologií, pak hrozí třeba taková "maličkost", že navrhovaná technologie není schopna zajistit bezproblémový chod a výkon při nasazení v konkrétních podmínkách, třeba při větším počtu uživatelů. (Kolik takových JAVA projektů jsem už viděl!)

Ani taková "maličkost", jako je vedení týmu "Project Managerem" bez zkušeností, bez znalostí, bez umění jednat s lidmi, bez schopnosti správně motivovat tým, který ani neví, koho řídí, danému projektu také moc nepomůže. Když navíc z takových důvodů odejde 1 nebo 2 zkušení členové týmu, tak kam asi takový projekt může dojít? (S kolika takovými "managery" jsem se už setkal?)


"A good plan is never done!"

S problémem, jak plánovat projekty, popř. jednotlivé úkoly, u kterých není možné žádným jednoduchým způsobem odhadnout náročnost, se potýkám od té doby, kdy jsem přišel k počítačům :-)

Neexistuje žádný tool, který by mohl OPRAVDU pomoci, neboť odhadnout náročnost (časovou) jednotlivých úkolů a etap, tím pak i délku celého projektu, může jen profesionál, který má předchozí zkušenost s podobnými úkoly. A každý, i sebezkušenější borec, stejně není schopen při plánování postihnout všechny varianty potenciálních problémů, které případně mohou nastat.

(Nemluvím teď o toolech jako je MS Project & spol., které sice můžou něco dokumentovat a graficky pěkně znázorňovat, ale na to aby byl vyčleněný EXTRA člověk na správu všech etap v takovém toolu!)

Takže jediná šance je si uvědomit, že na plánu je nutno neustále pracovat, plán není nikdy hotov, je nutné ho doplňovat o nové poznatky, upravovat časovou (finanční) náročnost, opakovaně projednávat se zákazníkem priority, doplňovat funkční specifikaci, korigovat vlastní vývoj "on the fly". Jinými slovy, plán nemůže dělat nějaký ňouma, ale přímo jeden z hlavních členů týmu.


Analytik či "software scénárista"?

Základem každého dobrého řešení je každopádně dobrá analýza, ať procesní, finanční, marketingová, či technická. A tak mě napadá, že v dnešní době. plné všech těch rádoby "konzultantů", nějak vymizela ta stará dobrá profese "programátor-analytik", popř. pouze "analytik", co by dělal jen analýzy a vývoj svěřoval specializovaným týmům v US, ČR, či Indii.

(Je to asi podobné, jak si filmaři stěžují, že není problém natočit film, ale že jim chybí dobré scénáře. U nás bych ještě doplnil, že chybí peníze, ale třeba v USA mají peněz, technologií, režisérů i herců dost a chybí jim "jen" dobré náměty a scénáře.)


Možná dobrý podnět pro zájemce na závěr?

Jestli máte nějaký nápad, tak se na něj vrhněte a nenechávejte se omezovat tím, že třeba neznáte technologii, jak to udělat, že nevíte, jak udělat dobrý marketing, či že nemáte finance na rozběhnutí. Zkuste udělat "jen" analýzu řešení. Kdo to pak fyzicky udělá nebo bude financovat, je opravdu druhotné. Když je dobrý návrh, procesní analýza, tak je více jak půlka hotová a nějaký "angel" se vždycky najde.

A zaručuji vám, že takový nápad pak buď lehce prodáte, či ve spojení s někým zrealizujete. Minimálně se ale naučíte pořádně analyzovat problém, což je základ všeho, ať se to týká počítačů, či čehokoliv jiného.

Proč moc neplánuji a používám při vývoji software metody jako Agile Modeling a Extreme Programming, to popíšu někdy příště, neboť to je na samostatné příspěvky.

Schválně, používáte někdo nějaký chytrý software na plánování projektů, či úkolů?

0 comments :

Okomentovat