Jak realisticky plánovat čas v projektech

Na závěr si zvykněte na pravidelný rytmus: commit mějte malé, merge dělejte často, a před nahráním na vzdálený server si vždy stáhněte aktuální změny od kolegů. Tím minimalizujete konflikty a udržíte historii čitelnou. Verzování není jen o technice, ale o disciplíně. Začněte s jednoduchým projektem, zkoušejte větve a postupně si osvojte pokročilejší nástroje. Po pár týdnech zjistíte, že bez verzování už nikdy pracovat nechcete.<br> <br> <br> <br> Volba mezi REST API a GraphQL není otázkou módy, ale praktických potřeb. Obě technologie řeší komunikaci mezi klientem a serverem, ale každá jiným způsobem. REST staví na zdrojích a HTTP metodách, GraphQL na dotazech, které si klient definuje sám. Než se rozhodnete, zvažte, jaká data vaše aplikace skutečně potřebuje a jakým způsobem je bude konzumovat.<br> <br> <br> <br> Typickou chybou začátečníků je ignorování .gitignore. Tento soubor říká, které soubory nemají být verzovány – typicky konfigurace s hesly, složky jako node_modules nebo buildovací výstupy. Pokud je neignorujete, zanesete do historie obrovské množství zbytečných dat a riskujete únik citlivých údajů. Vždy si proto na začátku projektu vytvořte správný .gitignore. Další častý problém je špatné psaní commit zpráv. Vyhněte se větám jako „oprava" nebo „update". Místo toho pište popisně: „oprava nefunkčního tlačítka na stránce kontaktu".<br> <br> <br> <br> Na závěr: neřiďte se módou, ale konkrétními požadavky. Nakreslete si datové modely, odhadněte, kolik dotazů bude potřeba, a změřte, jakou velikost odpovědí klienti skutečně využijí. Pokud by GraphQL u jednoduchého blogu znamenal jen zbytečnou komplexitu, radši zůstaňte u REST. Naopak u aplikace s hluboce propojenými daty se GraphQL vyplatí i přes vyšší nároky na údržbu.<br> <br> <br> <br> Dalším častým problémem je odhadování „ve vzduchu" bez znalosti existujícího kódu. Pokud neznáte architekturu, použité knihovny nebo kvalitu testů, je váš odhad jen tipování. Před odhadem si projděte relevantní části kódu, podívejte se na podobné úkoly z minulosti a zjistěte, jak dlouho reálně trvaly. Historická data z vašeho týmu jsou nejcennějším zdrojem – pokud je nemáte, začněte si je zaznamenávat.<br> <br> <br> <br> Kdy naopak sáhnout po GraphQL? GraphQL vyniká tam, kde máte složité datové vztahy a potřebujete efektivně agregovat data z více zdrojů. Typickým příkladem je mobilní aplikace, která pro jednu obrazovku potřebuje kombinaci uživatele, jeho přátel, příspěvků a komentářů. V RESTu byste museli volat několik endpointů a pak data skládat na klientovi. GraphQL umožňuje poslat jeden dotaz, který vrátí přesně to, co potřebujete, bez nadbytečných dat.<br> <br> <br> <br> Pravidelně porovnávejte odhady se skutečností. Po dokončení úkolu si zapište, kolik času reálně zabral, a proč se lišil od odhadu. Po čase získáte kalibraci, díky které budou vaše odhady stále přesnější. Nepodléhejte iluzi, že odhadování je exaktní věda – je to dovednost, kterou lze trénovat. Důležité je být konzistentní, sledovat metriky a nebát se přiznat nejistotu.<br> <br> <br> <br> Nezapomínejte ani na psychologické aspekty. Tým pod tlakem vedení má tendenci odhadovat nízké hodnoty, aby úkol „prošel". To je cesta k přepracování a nekvalitě. Vytvořte prostředí, kde je bezpečné přiznat, že něco může trvat déle. Místo otázky „Kolik to bude trvat?" se ptejte „Co všechno musíme udělat, abychom to dokončili?" Tím přesunete pozornost od odhadu k plánu.<br> <br> <br> <br> Odhad implementace: odhadujte v relativních jednotkách Pro implementaci používejte spíše bodové odhady (story points) než hodiny. Body vyjadřují relativní složitost, ne skutečný čas. Týmu to umožní srovnávat jednotlivé úkoly bez tlaku na přesnost. Přepočet bodů na hodiny pak získáte na základě týmové rychlosti (velocity), kterou si změříte po prvních sprintech. Pokud přesto potřebujete hodinový odhad pro plánování, odhadněte implementaci v bodech a poté vynásobte průměrnou rychlostí – nezapomeňte, že rychlost se liší podle člena týmu.<br> <br> <br> <br> Praktickým přístupem je tzv. tříbodový odhad. Pro každý úkol si určete optimistický, realistický a pesimistický čas. Výsledný odhad pak spočítejte jako vážený průměr: (optimistický + 4× realistický + pesimistický) / 6. Tento postup zohledňuje nejistotu a nutí vás přemýšlet o rizicích. Pokud je rozdíl mezi optimistickým a pesimistickým odhadem velký, úkol je nejasný – vyplatí se ho nejprve rozebrat nebo prototypovat.<br> <br> <br> <br> Na závěr si vyzkoušejte rozšíření programu: přidejte dotaz na věk a vypište ho společně s pozdravem. Tím si procvičíte práci s číselnými datovými typy, jako je int. Pozor na to, že Console.ReadLine() vrací vždy řetězec, takže věk budete muset převést pomocí int.Parse() nebo bezpečnějšího int.TryParse(). Druhá metoda je vhodnější, protože nezpůsobí výjimku, když uživatel zadá neplatný vstup. Toto cvičení vám pomůže pochopit, jak funguje převod mezi typy, a to je základ pro každou složitější aplikaci.