Zum Inhalt springen

Odhad času bez skrytých činností: proč realita neodpovídá plánu

Aus TerraDuniaWiki

Nakonec si ověřte své odhady na minulých úkolech. Když dokončíte práci, porovnejte odhad se skutečností a zapište si, co způsobilo rozdíl. Po pár iteracích získáte data, která vám umožní odhadovat přesněji. Skryté činnosti nezmizí, ale naučíte se je předvídat – a to je klíč k tomu, aby vaše odhady byly konečně realistické.

Dalším častým pochybením je zřetězení řetězců při sestavování dotazů. SQL z proměnných bez použití prepared statements, dříve či později uděláte chybu. Stejně riskantní je dynamické sestavování dotazů podle uživatelských voleb, kde se může útočník dostat k nevyžádané části WHERE či ORDER BY. V takových případech vždy mapujte vstup na předem definované povolené hodnoty, nikoli na přímo zadaný text.

Další častou chybou je ignorování kontextu. Pokud víte, že vás čeká úkol v části kódu, se kterou pracujete poprvé, přidejte navíc čas na seznámení se s architekturou. Stejně tak zohledněte, že některé činnosti nelze dělat paralelně – čekání na odpověď od jiného týmu, build, nebo deployment. Do odhadu je třeba započítat i samotnou komunikaci, nejen práci s klávesnicí.

Když už máte funkční kód, zaměřte se na čitelnost. Pojmenovávejte proměnné tak, aby vypovídaly o obsahu – místo a a b použijte prvniCislo a druheCislo. Uvnitř metody Main držte kód krátký a logicky členěný. Pokud zjistíte, že opakujete stejný kód, vytvořte si vlastní metodu. Tím se dostanete k základům objektového programování, které je pro C# klíčové. Nemusíte hned rozumět třídám a dědičnosti, ale zvykněte si na to, že kód se dá strukturovat.

Důležité je také rozlišovat mezi činnostmi, které se opakují u každého úkolu, a těmi, které přicházejí jen někdy. Například nastavování testovacích dat, psaní migrací nebo úprava CI pipeline může být jednorázová záležitost, ale pokud ji ignorujete, překvapí vás. Vytvořte si kontrolní seznam typických skrytých činností pro váš tým a před odhadem si ho projděte. Tím snížíte riziko, že na něco zapomenete.

Poslední zásada se týká pravidelné aktualizace a testování. Udržujte framework, databázové ovladače a knihovny v nejnovějších verzích, protože opravují známé zranitelnosti. Pravidelně provádějte penetrační testy a skenujte aplikaci automatizovanými nástroji. Ještě lepší je zavést bezpečnostní testy přímo do vývojového procesu. Při code review se zaměřte na místa, kde se pracuje s databází, a kontrolujte, zda jsou všechny dotazy parametrizované.

Druhým klíčovým bodem je identifikace typických skrytých činností ve vašem týmu. Může to být dohledávání informací úložné prostory v malém bytě dokumentaci (která je často neúplná), synchronizace s backendem, nastavování lokálního prostředí, nebo dokonce čekání na schválení přístupů. Zkuste si po dokončení interiéru úkolu zapsat, co jste skutečně dělali, a porovnat to s původním odhadem. Po několika takových záznamech budete mít data, která vám umožní odhady zpřesnit.

Dalším úskalím je podceňování oprav chyb a technického dluhu. Ve stávajícím kódu se při implementaci nové funkce často objeví problém, který nesouvisí s vaším úkolem, ale musí se vyřešit, aby vše fungovalo. Mějte v odhadu vyhrazenou dobu na „nečekané ladění", která pokryje i tyto situace. Dobrým pravidlem je rozdělit práci na dílčí kroky a každý z nich ohodnotit dvěma čísly: optimistickým a pesimistickým. Výsledný odhad pak nechte mezi těmito hodnotami, blíže k pesimistickému konci.

Největší chyba rekonstrukce koupelny krok za krokemčátečníků je verzovat až když je projekt hotový. Verzování není zálohování, které se dělá na konci. Funguje nejlépe, když ho používáte průběžně – i na nedokončené věci. Pokud potřebujete vyzkoušet experiment, vytvořte větev, pracujte v ní a po testování ji buď sloučte zpět, nebo smažte. Hlavní větev tak zůstane vždy ve stavu, který lze nasadit do provozu.

Druhým klíčovým opatřením je striktní validace vstupů. Nikdy nevěřte uživatelským datům. Ověřte, že vstup odpovídá očekávanému formátu – číslo musí být číslo, e-mail musí mít správnou strukturu. Používejte whitelist povolených znaků a odmítejte vše ostatní. Vyvarujte se pouhému escapování speciálních znaků, protože tato metoda je náchylná na chyby a v některých kontextech je nedostatečná. Raději kombinujte validaci s parametrizací.

Jak se bránit a co nedělat Prvním krokem je používání parametrizovaných dotazů. Většina moderních jazyků a frameworků nabízí prepared statements, kde se hodnoty předávají odděleně od struktury SQL příkazu. Například v PHP s PDO vypadá bezpečný dotaz jako příprava s placeholdery a následné bindování hodnot. Tím se vstup nikdy nestane součástí SQL syntaxe, a i když útočník vloží nebezpečný řetězec, databáze ho vyhodnotí jako data, ne jako příkaz.