Neokrádejte své klienty aneb jak také dělat (nejen) web
Nedávno jste se na Intervalu v článku „Jak dělat web“ mohli dočíst o vcelku logických a používaných zásadách řízení (nejen) IT projektů. Představa takto bravurně řízeného projektu je mnohdy jen vzdáleným ideálem. Zákazník často přes sebelepší analýzu neví, co chce, a kromě toho se popisovaná metodika neslučuje s „pozorováním programátorů v divočině“. Co s tím?
Expozice
Začněme se strohými fakty. Co brání úspěšnému dokončení IT projektu? Odpověď takřka tautologická zní: Jsou to rizika. Pokud toto stručné tvrzení rozvedeme hlouběji, jistě nás napadnou i konkrétní příklady. Jsou to například:
- zpoždění harmonogramu
- přemíra chyb ve výsledném produktu
- nepochopení zadání
- časté průběžné změny zadání
- zbytečně komplikovaný produkt
- fluktuace pracovníků
- … a další
Za účelem minimalizace rizik vznikají různé metodologie projektového řízení. S esencí velké části z nich jste se mohli seznámit ve zmiňovaném článku Jak dělat web. Projdeme-li však „klasickou metodu“ realistickým okem šťourala, i na těchto typických rizicích zjistíme, že ideální průběh má od reality mnohdy daleko.
Krize
(To, že v našem článku předchází krize kolizi, můžeme brát jako důkaz, že opravdu není možné na vývoj software slepě aplikovat tradiční postupy.)
Zpoždění harmonogramu
Upřesněný harmonogram prací vzniká v průběhu analýzy. Obvykle vychází z detailní analýzy požadavků a zkušeností projektových týmů s obdobnými projekty. Zákazník se samozřejmě bez závazného harmonogramu neobejde. Na druhou stranu je pochopitelné, že se zde při sebezkušenějším týmu skrývají četná potenciální úskalí, která na povrch vyplynou až v realizační fázi. Těmto úskalím se dodavatel snaží předejít započtením notných rezerv a maximální striktností požadavků specifikovaných v analýze.
Tento postup však mnohdy vede doslova k „boji o rizika“ – zákazník se snaží z dodavatele vyždímat maximum, ten naopak může podlehnout pokušení zneužít nezkušenosti zástupců klienta a schovat do analýzy rizika na straně zákazníka takovým způsobem, že valnou část předávací fáze tvoří dohadování argumentované dodavatelem slovy „ale to přece v analýze nebylo“.
Přemíra chyb
Proti chybám se bráníme testováním, to je známá věc. Pokud postupujeme stylem „analýza -> architektura -> implementace -> testování -> předání“, přirozeně nás napadnou zvídavé otázky související s předchozím problémem: Bude na testy dost času? Nehrozí, že testy budeme muset z nedostatku času oželet? Nevynoří se během testování problémy nečekané obtížnosti?
Nepochopení zadání
Proč se vlastně dělá nějaká analýza, a nezačneme rovnou architekturou systému a programováním? Je to proto, že zákazník a dodavatel mluví různými jazyky. Zákazník vidí své obchodní potřeby, má přibližnou představu o svých požadavcích, leč mnohdy (a nezazlívejme mu to) vůbec nerozumí implementační náročnosti „samozřejmých detailů“. Přesně opačná situace může nastat u dodavatele – na technologickou stránku věci jsou „mistři, jako tygři na skákání“, jejich představy o významu jednotlivých „drobností“ pro zákazníka jsou však silně ovlivněny čistě technickým náhledem. Tento rozpor drsně ilustruje Scott Adams v dilbertovských stripech z konce letošního září, v nichž nebohá Alice umírá na nevyléčitelnou otravu uživatelským rozhraním, navrženým programátory.
Proto se dodavatel se zákazníkem snaží nalézt jazyk společný v dokumentu zvaném „analýza požadavků“. Tento dokument musí splňovat základní vlastnosti:
- musí být dostatečně přesný a racionálně strukturovaný, aby se z něj technicky orientovaní pracovníci dodavatele nezbláznili
- musí být dostatečně srozumitelný, aby zákazník věděl, jak vlastně dodavatel vnímá jeho potřeby
- musí používat dostatečně jasné a přímočaré formulace, aby se minimalizovalo riziko nedorozumění
Pro správné pochopení zadání je dodržení všech tří podmínek klíčové. Samozřejmě se nabízí otázka: „co znamená ‚dostatečně‘?“. To prokáže budoucnost. Tak s chutí do práce.
Hmm… a neexistuje nějaký lepší způsob, jak nalézt společný jazyk, než je přepečlivá analýza?
Časté průběžné změny zadání
Zde je v tradiční metodice projektového řízení dodavatel ve výhodě, alespoň za předpokladu vytvoření analýzy natolik srozumitelné, kdy je zákazník schopen uznat, že opravdu žádá změnu a nikoli samozřejmou a předpokládanou vlastnost. Project manager suše oznámí, že se jedná o změnu, že zpracování tohoto požadavku zabere tolik a tolik účtovaného analytického času, pak se zákazník dozví, na kolik dalšího účtovaného času změna přijde, a mezitím vesele a nelítostně cválá harmonogram.
Což je pro nás jako dodavatele v zásadě fajn, ale ruku na srdce, není vám v tuto chvíli nebohého zákazníka trochu líto?
Zbytečně komplikovaný produkt
Obecnost, obecnost, obecnost. Proč psát jednoúčelový kód, když problém lze krásně převést do abstraktní roviny a vytvořit sofistikovanou univerzální a znovupoužitelnou komponentu? Stejně víme, že zákazník si navymýšlí spoustu novinek, co když tímto geniálním zobecněním vyřeším X potenciálních požadavků? A vůbec, co by tomu řekl můj učitel programování, který nad přímočarými řešeními ohrnoval nos a vedl nás k většímu nadhledu a obecnějším řešením?
Na pohled logické otázky, ale ruku na srdce, ta obecnější komponenta nás (potažmo klienta) bude stát čas, při zobecňování mnohdy stejně začneme řešením jednoúčelovým, a kdo ví, jestli se zadání nepozmění natolik, že celá naše veleobecnost přijde vniveč?
Hle, dilema.
Fluktuace pracovníků
Není možné navážet se do tradičního vývoje. Lidé přicházejí a odcházejí, někoho přejede tramvaj, někdo se rozhodne konečně dodělat školu a někdo prostě začne být projektem neodvolatelně „unaven“. Takový je život – a tomuto problému žádnou zázračnou metodikou nepředejdeme. Čemu však předejít můžeme, jsou negativní vlivy této fluktuace – a jistě se shodneme na tom, že o ty nám jde především.
Typicky zde klademe důraz na důkladnou dokumentaci zdrojového kódu a dodržování společné štábní kultury, zejména testování vlastních kusů kódu a jednotný coding style. Napadat tyto zdravé zásady by bylo bláznovstvím, ale i zde se nabízí šťouravá otázka – když už ne obligátní „a nešlo by to nějak jinak a lépe“, tak alespoň „nešlo by zde dělat něco víc?“.
Ty z vás, kteří mým šťouravým řečnickým otázkám dosud nadšeně přitakávali, musím nyní trochu zklamat. Článek je dlouhý až až, je tedy čas udělat si pauzu, využít diskusi pod článkem k tomu, nakolik se shodujeme s hodnocením rizik a názorech na jejich možnou prevenci. Rozuzlení nastane v druhém dílu, který již bude notně konstruktivnější a v němž se dozvíme, co je to avizované extrémní programování vlastně zač. Zatím se budu těšit na vaše názory.
Odkazy a zdroje
- Kent Beck: Extrémní programování (Grada 2002) – odsud jsem si dovolil vypůjčit termín „pozorování programátorů v divočině“
- www.extremeprogramming.org
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
9 nejzajímavějších doménových koncovek
19. srpna 2024 -
AI v programování: Jak používat GitHub Copilot (část 1)
12. února 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024