Jak spolehlivě odhadovat délku softwarových projektů
Pro první kontakt s programováním v C# je konzolová aplikace ideální volbou. Nevyžaduje žádné složité grafické rozhraní, stačí textový výstup a vstup. Celý kód se spouští v terminálu, což vám umožní soustředit se na základy jazyka, aniž byste se ztráceli v návrhových vzorech nebo knihovnách. Nejprve si otevřete vývojové prostředí (například Visual Studio nebo Visual Studio Code) a vytvořte nový projekt typu Konzolová aplikace. V něm najdete soubor Program.cs – to je místo, kde se odehrává celá logika.
Kde se nejčastěji ztrácí čas Největším zdrojem nepřesností jsou skryté závislosti a chybějící specifikace. Pokud zadání není jasné, odhadněte čas na vyjasnění a do odhadu zahrňte rezervu na změny rozsahu. Vždy počítejte s tím, že se během vývoje objeví nečekané problémy — zastaralé knihovny, nesoulad verzí nebo chybná data. Přidejte proto k celkovému času rezervu 20–30 % pro neznámé. Tato rezerva není zbytečná, je to investice do reálnosti.
Typickou chybou je verzování celého projektu jako jedné velké verze, která zahrnuje i změny v knihovnách. Pak není jasné, která verze knihovny je v které verzi projektu obsažena. Při hledání chyby pak musíte procházet celou historii, místo abyste se podívali na seznam závislostí. Další častou chybou je, že knihovny mají příliš časté aktualizace, které mění veřejné rozhraní. To pak nutí všechny projekty k okamžitým úpravám. Proto pro knihovny platí pravidlo: měnit veřejné rozhraní pouze ve větších, předem oznámených verzích.
Začněte dekompozicí úkolu na jednotlivé funkce a podfunkce. Každou z nich ohodnoťte v hodinách podle své zkušenosti, ale nezapomeňte přičíst čas na testování, opravy chyb a nezbytné porady. Častou chybou je odhadnout jen čistý čas strávený psaním kódu, zatímco realita zahrnuje i ladění, integraci a komunikaci. Pro malé úkoly do 8 hodin použijte bodové hodnocení, pro větší celky pak rozložte práci na menší části.
Async akce testujete podobně, ale potřebujete mockovat závislosti, jako jsou API volání. V Redux Thunk se akce stává funkcí, která přijímá dispatch a getState. V testu zavoláte tuto funkci s mocknutým dispatch a getState a ověříte, že dispatch byla volána s očekávanými akcemi. Pro Redux Saga je postup složitější: potřebujete spustit generátor a kontrolovat, jaké efekty vrací. Můžete použít knihovnu redux-saga-test-plan, která zjednodušuje testování sekvencí efektů. Důležité je nastavit časové limity pro async operace, aby test nespadl na otevřeném spojení.
Na závěr si uvědomte, že odhad není závazek, ale pracovní hypotéza. Pokud se realita výrazně liší, komunikujte to včas a upravte plán. Díky tomu se váš odhad stane užitečným nástrojem pro plánování, nikoli zdrojem stresu. Postupem času a sběrem dat se vaše čísla stanou spolehlivějšími a tým získá důvěru v to, že odhady mají smysl.
Na závěr si osvoj pravidlo, které ušetří hodiny práce: nejdřív si data prohlédni v příkazové řádce, až potom je zapoj do aplikace. Napiš si malý test, který ověří, že API vrací očekávaný tvar. Tím předejdeš situaci, kdy tvůj kód spadne kvůli tomu, že jedno pole má jiný název, než předpokládáš. S takovým základem zvládneš první projekt s API bez zbytečného tápání.
Začněte tím, že si definujete tři oblasti, na které se budete ptát: co funguje, co nefunguje a co bychom chtěli zkusit. Tyto oblasti napište na tabuli nebo do sdíleného dokumentu a dejte každému 5–10 minut na tiché zapsání svých postřehů. Teprve poté otevřete diskusi. Tento postup zabrání tomu, aby se první řečník stal hlavním tématem a ostatní se k němu jen přidávali. Každý bod pak procházejte jednotlivě a ptejte se: „Co konkrétně jsi tím myslel?" nebo „Jak to vidíš, že bychom to mohli změnit?"
Praktický tip: vytvořte si malý program, který sečte dvě čísla od uživatele. Nejdříve načtěte první číslo, pak druhé, obě převeďte na int, sečtěte a vypište výsledek. Tím si procvičíte vstup, výstup, proměnné i konverzi. Pokud chcete, aby se program nezavřel okamžitě po skončení, přidejte na konec příkaz Console.ReadKey – počká na stisknutí klávesy. To se hodí, když spouštíte aplikaci přímo z terminálu.
Když už zvládáš jednoduché volání, zkus přidat parametry dotazu. Třeba pro filtr nebo stránkování. To je častý bod, kde začátečníci tápou – nevědí, jestli parametry patří do URL, nebo do těla. Pro GET je používej v URL za otazníkem, pro POST je dej do těla jako JSON. Vždy si přečti dokumentaci konkrétního API, protože formát se liší. A hlavně: nikdy neposílej citlivé údaje v URL – může se ti to vymstít v logách.