Jak realisticky odhadovat délku softwarových projektů
Git sám o sobě je jen nástroj. Skutečná hodnota se objeví až ve chvíli, kdy celý tým sdílí stejná pravidla práce s větvemi, commity a revizemi. Bez jasného workflow vzniká chaos: konflikty se řeší ukvapeně, historie se stává nepřehlednou a nasazování do produkce je riskantní. Základním kamenem je proto dohoda na jednom modelu, který všichni dodržují.
Nezapomínejte ani na konzistenci. Zvolte si jeden styl (např. uvozovky, středníky, odsazení) a dodržujte ho v celém projektu. Pomohou úložné prostory v malém bytěám nástroje jako formátovače, které styl sjednotí automaticky. A když píšete cykly, zkuste raději metody jako `map`, `filter` nebo `forEach` – jsou čitelnější než klasický `for` a častěji vedou k menšímu množství chyb.
Code review by mělo být povinné a rychlé. Ideálně do 24 hodin, jinak se práce zablokuje. Recenzent se zaměřuje na logiku, čitelnost a na to, zda změna skutečně řeší daný úkol. Nenechte se unést stylem a drobnostmi – to odvádí pozornost. Pokud narazíte na větší problém, rovnou to napište do komentáře a nechte autora opravit. Po schválení slučte větev pomocí merge commitu, který zachovává kontext celé větve.
Až je práce hotová, nemažte staré větve hned po sloučení. Nechte je ještě pár dní, ale označte je jako uzavřené. Pokud se objeví chyba, můžete se k nim vrátit. Když si tým zvykne na tato pravidla, ušetříte hodiny času, které by jinak padly na řešení konfliktů a na dohady, kdo co měl udělat jinak. Pravidelná revize workflow po každém větším projektu pomůže odhalit slabá místa a upravit proces podle aktuálních potřeb.
Jednoduchý test může vypadat takto: def test_soucet(): assert 1 + 1 == 2. Když test spustíte, pytest zobrazí přehledně, kolik testů prošlo a kolik selhalo. Pokud test selže, vypíše podrobnosti o tom, kde a proč k selhání došlo. Tím získáte rychlou zpětnou vazbu. Pro lepší organizaci můžete testy rozdělit do více souborů a složek – pytest automaticky prohledává všechny soubory odpovídající vzoru test_*.py nebo *_test.py.
Nejprve je potřeba pytest nainstalovat. To provedete příkazem pip install pytest v terminálu. Po instalaci vytvořte soubor s názvem test_example.py. Název musí začínat nebo končit slovem test, aby pytest soubor automaticky našel. V tomto souboru definujte funkce, jejichž názvy také začínají test_. Uvnitř funkcí použijte běžné assert pro ověření výsledku. Pytest pak spustíte příkazem pytest v adresáři s testem.
Asynchronní operace, jako je načítání dat z API nebo zápis do databáze, přinášejí do Reduxu vrstvu složitosti, která se dříve nebo později projeví na stavu aplikace. Nejčastější chybou je ukládání všech mezistavů, chyb a odpovědí do jednotlivých polí, což vede k rozsáhlým a nepřehledným reducerům. Řešením je zavést si jednotný vzor, který pokryje běžné stavy – čekání, úspěch a selhání – a ten pak použít pro všechny asynchronní akce.
Praktickým doporučením je vytvořit si vlastní malou knihovnu – sadu funkcí, které obalují vaše API volání a vracejí akce pro všechny tři stavy. Tím se izolujete od konkrétní implementace a usnadníte si testování. V komponentách pak stačí zavolat jedinou funkci, která se postará o dispatch všech potřebných akcí. Tím se snižuje počet řádků kódu a zvyšuje čitelnost.
Na závěr: čistý kód je běh na dlouhou trať. Nejdřív to bude vyžadovat vědomé úsilí, ale brzy se z toho stane zvyk. Až příště budete chtít „rychle" něco spáchat a přejmenovat proměnnou na `x`, vzpomeňte si, že číst se to bude mnohokrát častěji než psát. Investice do čitelného kódu se vám vrátí dřív, než čekáte.
Začít s vývojem pro Android není otázka talentu, ale správného postupu. Nejdříve si nainstalujte oficiální vývojové prostředí, které vám umožní psát kód, spouštět emulátor i ladit aplikace. Po spuštění vytvořte nový projekt s prázdnou aktivitou – to je základní obrazovka, kterou uživatel uvidí. Systém vám vygeneruje soubory s rozložením a logikou, ale nepokoušejte se hned vše přepsat. Projděte si strukturu, pochopte, kde se definuje vzhled a kde chování, a teprve poté začněte dělat první změny.
Základním krokem je rozdělení projektu na malé, nezávislé úkoly. Místo odhadu celého modulu „fakturace" odhadněte jednotlivé kroky: návrh databáze, API endpointy, formuláře, testy. Každý úkol by měl být dostatečně malý na to, aby jeho odhad nepřesáhl pár dní. U větších celků hrozí, na skryté závislosti. Doporučuji použít techniku „t-shirt sizes" nebo Fibonacciho posloupnost (1, 2, 3, 5, 8...), která nutí přemýšlet v relativních velikostech, ne v přesných hodinách.
Komentáře používejte střídmě. Dobrý kód se komentuje sám – stačí výstižné názvy. Komentář pište, až když vysvětlujete proč, ne co. Například proč je zvolený tento algoritmus nebo proč se čeká časový limit. Pokud komentář popisuje, co dělá další řádek, je to zbytečnost. Místo toho kód upravte tak, aby byl jasný sám o sobě.