Avšak situace – např. podmínky na trhu, obchodní potřeby nebo jedinečná příležitost – může opodstatnit určité kompromisy ve prospěch rychlosti. Vývoj však musí zůstat efektivní, transparentní a bezpečný. Se zjednodušením a urychlením softwarových projektů může pomoci těchto jedenáct strategických rozhodnutí.
Správnými strategickými rozhodnutími lze urychlit softwarové projekty a využít obchodní příležitosti. Manažeři IT si ale musejí být vědomi možných úskalí a kompromisů.
1. Usměrněte představy interních zákazníků
Každý chce mít své slovo a zainteresované strany od marketingu přes obchodníky po účetní přicházejí se svými velkými sny. Trik je v tom, nalézt sny, které je nejjednodušší naplnit. Příklad z praxe – stovky prodejců mnohokrát denně vyplňovaly určitý formulář a pouhé předvyplnění implicitních hodnot jim v součtu ušetřilo tisíce hodin práce. Pár řádek v HTML kódu navíc a programátoři byli za génie. Snažte se dosáhnout toho, aby měli uživatelé realistická očekávání. Dokážete-li zaměřit jejich pozornost na jednoduché funkce a drobná vylepšení, která jim ale přinesou výrazný užitek, projekt ponese rychle ovoce.
2. Nedovolte, aby se vývojáři nechali unést
Unést se mohou nechat nejen uživatelé, ale i vývojáři. V každé odrážce projektu mohou spatřovat příležitost konečně vyzkoušet nějakou módní technologii, která je nová, úžasná, inteligentní a neuvěřitelně časově náročná na implementaci. Nadšení vývojářů je důležité, ale je potřeba je směrovat k co nejefektivnějšímu splnění zadání.
3. Omezte objem funkcí
Osekání požadavků může vypadat jako lenost, vždyť menší rozsah funkcí je samozřejmě možné naprogramovat rychleji. Důležité je zajistit, aby bylo možné k vytvořenému základu vynechané funkce postupně doplňovat. Pokud například stačí jednoduchá úprava schématu databáze, ušetřete čas a zaměřte se pouze na klíčové funkce a další nechte na později.
4. Zefektivněte testování
Jednou z nejnáročnějších činností před nasazením nového softwaru je testování. Trendem poslední doby je rozdělení projektu na dílčí úkoly, které mohou postupovat nezávisle na sobě. Je-li každý z nich také nezávisle testován, představuje to velkou zátěž. Některé architektury založené na mikroslužbách plných desítek mikroprojektů musejí projít desítkami testů. Testování nelze obejít, ale je možné si práci usnadnit současným testováním dílčích projektů, které fungují dohromady.
5. Zjednodušte architekturu
Při omezování množiny funkcí a odkládání části práce na později je někdy možné zároveň přehodnotit architekturu. Budete-li funkce dodělávat za čtvrt roku nebo i za rok, je lépe ponechat základy beze změn. Pokud však nejsou odložené funkce zásadní, může být nesmírně osvobozující velké části architektury osekat.
6. Omezte zaručený výkon
V době, kdy se dařilo, chtěl každý odpovědi za milisekundy a zároveň zajistit, aby data byla replikována na třech geograficky vzdálených místech pro případ, že současně udeří hurikán a zemětřesení. Kdo by nestál o dokonalost? Vysoký výkon obecně znamená mnoho dodatečných vrstev mezipamětí, vyvažování zátěže a replikací. Tyto vrstvy trvá vytvořit, nastavit, odladit a udržovat. Jeden z nejjednodušších způsobů, jak ušetřit čas, je přesvědčit interní zákazníky, že bude-li aktualizace výpisu dat na obrazovce trvat o malinko déle než mžiknutí oka, při práci je to fakticky nezdrží. Ne každý projekt vyžaduje preciznost a spolehlivost na úrovni operace mozku.
7. Využijte existující kód
Nejsnazší způsob, jak strávit s projektem více času, je zkoušet nové technologie. Ano, z dlouhodobého hlediska je důležité investovat do inovací, ale není pro to vhodná příležitost v situaci, kdy někdo buší do stolu a ptá se, kdy už konečně bude hotovo a zda to nelze urychlit. Pracovat se stejným jazykem a databázemi jako u desítky předchozích projektů bude rozhodně rychlejší a snazší. Mnohdy budete moci využít existující kusy kódů, a práci si tím ještě urychlit. A nejen to, zachováte i konzistentnost, která vývojářům usnadní přechod mezi různými projekty.
8. Pracujte s technickým dluhem
Vývojáři rádi mluví o tzv. technickém dluhu, pokud chtějí mít něco rychle hotové, a doplnění chybějících funkcí či implementaci modernějších technologií nechají na později. Určité míry technického dluhu se není třeba obávat – není nutné vždy použít nejnovější databázovou platformu nebo programovací jazyk. Někdy lze přeskočit i tři nebo čtyři generace nejmodernější technologie a později zavést tu, která je právě aktuální. Tím si lze ušetřit nemalé starosti.
9. Angažujte se v open source
Příliš mnoho projektů obsahuje příliš mnoho proprietárního kódu. Pokud o něco usilujete, je pravděpodobné, že se o totéž snaží i někdo jiný a možná spustil open source projekt, k němuž se můžete připojit.
Open source samozřejmě není všelék a nic není zadarmo. Často je nutné spolupracovat s jinými týmy, přistupovat na kompromisy a hledat shodu na kódu, který bude vyhovovat všem. Pokud bude takový proces fungovat dobře, budete muset na svůj příspěvek do projektu vynaložit jen zlomek úsilí, které by vyžadoval vlastní vývoj.
10. Užívejte základní hotové nástroje
Mnoho projektů lze uskutečnit s pomocí hotových nástrojů. Je až neuvěřitelné, čeho lze dosáhnout s využitím standardních webových formulářů od Drupalu, Google Forms nebo Survey Monkey, které předávají data do tabulky, kde probíhá analýza. Není to uhlazené a programátor by to možná ani nenazval programováním. Ale pokud tím získáme spolehlivé a opakovaně použitelné řešení, které dodá požadované odpovědi, možná máme nejrychlejší cestu, jak velký vývojový projekt dokončit.
11. Buďte realističtí
Všichni sníme o tom, že postavíme web, na který se pohrnou uživatelé, a plánujeme vše s ohledem na maximální zátěž. Slyšel jsem pečlivé architekty popisovat třívrstvý systém s vyvažovači zátěže a mnohonásobnou replikací databáze, aby se nakonec ukázalo, že návštěvnost dosahuje zhruba 100 lidí za den. Nebyl by to problém, pokud by korektní škálování bylo snadné, ale přidání těchto vrstev projekt prodlužuje a komplikuje a znesnadňuje následnou údržbu. Přibrání nových programátorů je složité a náprava i nejmenších chyb si může vyžádat dlouhé týmové mítinky. Některé bezserverové nástroje jako Google App Engine škálování usnadňují, ale za cenu kompromisů z hlediska komplexity a nákladů.
Dobří projektoví manažeři předvídají všemožné problémy, které se mohou během projektu vyskytnout. Dobré řízení nákladů ale vyžaduje realistický pohled na jejich pravděpodobnost včetně případného akceptování snížení výkonu nebo selhání systémů při mimořádné události.
Zajímají vás informační technologie a chcete získat nadhled?
Odebírejte náš Newsletter, který posíláme zpravidla dvakrát do měsíce a který obsahuje výběr unikátních článků nejen našich autorů, ale také ze sítě mezinárodního vydavatelství IDG.
» Přihlaste se zdarma! [Odběr můžete kdykoli zrušit]