Jak pracuju

Jak se ode mě dostane zadání až do produkce, na čem si zakládám a kde si to můžete sami ověřit.

Jak postupuju

Pořád stejně — ať jde o systém pro armádu, web pro klienta, nebo nástroj na víkend. Po každém kroku zůstane něco hmatatelného.

  1. 01

    Pochopit zadání

    Čtu zadání, dokud k němu neumím napsat akceptační kritéria. V obraně to byla formální specifikace (SRS), jinde stačí krátký návrh.

    výstup: akceptační kritéria
  2. 02

    Domluvit rozhraní

    Nejdřív se ustálí to, přes co spolu části mluví: API, rozhraní, tvar zpráv. Implementace za tím se pak může měnit, aniž by se to dotklo ostatních.

    výstup: OpenAPI nebo rozhraní
  3. 03

    Postavit jednu funkci celou

    Jedna funkce od endpointu přes data až po UI, v jedné složce. Ne nejdřív všechny vrstvy a pak doufat, že do sebe zapadnou.

    výstup: funkce, která funguje
  4. 04

    Ověřit

    Testy tam, kde dávají smysl: unit na logiku, integrační proti skutečné databázi, a když jde o výkon, tak benchmark.

    výstup: zelené testy a čísla
  5. 05

    Nasadit

    Pull request s review, CI a nasazení, které si samo ověří, že služba běží, a když ne, vrátí předchozí verzi.

    výstup: schválený PR
  6. 06

    Provozovat

    Monitoring, zálohy ověřené obnovou a krátký zápis, co se změnilo a proč.

    výstup: runbook a zápis

Na čem si zakládám

Nejdřív rozhraní

Napřed vymyslím, jak spolu věci mluví, pak teprve věci samotné.

Example API má jeden OpenAPI kontrakt a deset implementací. Každá musí projít stejnou sadou testů zvenčí, než se vůbec začne měřit. Orbital Ops odděluje stejně: výpočet drah běží zvlášť a zeměkoule jen zobrazuje výsledky.

interface IRouteSolver { solve(stops): Route }
✓ GreedySolver splňuje kontrakt — ten, kdo ho volá, nemusí nic měnit.
Vertical slices

Kód dělím podle funkcí, ne podle vrstev.

webplatform má asi 30 modulů. Každý má vlastní databázové schéma a s ostatními komunikuje jen přes jasné kontrakty a transakční outbox. Order API je stejné zadání napsané dvakrát — po vrstvách a po slices — takže rozdíl je vidět, nemusím ho obhajovat.

YAGNI

Nejlepší kód je ten, který vůbec nemusel vzniknout.

Abstrakci zavádím, až když ji opravdu potřebuju podruhé. Pro vlastní infrastrukturu jsem odmítl celou sadu knihoven na cache, generování klienta a formuláře — pro systém, o který se starám sám, by to byla zbytečná zátěž. Tenhle web má jen tři runtime závislosti.

odhad řádků kódu · 5 240
✓ zbyl jen kód, který něco nese — může se nasadit.
Důkazy

Než něco tvrdím, změřím to.

Benchmarky dělám se zamčenými verzemi, zahřátím před měřením a celým rozložením latence, ne jen s průměrem. Čísla na tomhle webu, která se dají spočítat z dat, se opravdu počítají — počet projektů, jazyků i spuštěných věcí na stránce Teď.

Ukázka:Example API
Provoz

Co postavím, to taky provozuju.

Starám se o vlastní infrastrukturu: 19 služeb, nasazení s automatickým návratem, když něco selže, testovací prostředí a noční zálohy, které jsem skutečně zkusil obnovit. Když vím, že mě v noci vzbudí můj vlastní kód, píšu ho jinak.

Zkušenost z obrany

Chyby stojí hodně, tak se podle toho pracuje.

Dva roky v uzavřeném vojenském prostředí: systémová analýza, specifikace SRS a SDD, review před každým mergem a technické prezentace v angličtině pro zahraniční partnery. Mám prověrku NATO Secret a osvědčení NBÚ na stupeň Tajné.

Střídmost

Žádné gradienty, žádné rozmazané sklo, žádný štítek u každého slova.

Ploché plochy, tenké linky a jedna barva na zvýraznění. Dekorace tu musí mít důvod — na celém webu smí svítit jen strom.

Elevate Your Synergy

✨ Get Started
PETR VALÍK
backendy, na které je spoleh · od .NET po prohlížeč
táhněte ⇔ — vlevo to, co dělám já, vpravo typická šablona
Autorství

Pod kódem jsem podepsaný já, a že používám AI, říkám otevřeně.

AI agenty používám denně a napsal jsem pro ně claude-kit, aby dodržovali pravidla konkrétního repozitáře: hlídání, kontrolu rizikových změn, review. Commity ale zůstávají moje — že pomáhala AI, uvádím jednou u projektu.

Ukázka:claude-kit
a71c3f feat: pass prediction Petr Valík
b1002d app theme adjustment Petr Valík
61c34e localization + app state Petr Valík
5df7ec routes + notfound Petr Valík
↳ v historii jsem jen já — pomoc AI uvádím jednou, na stránce projektu.

Z historie má být jasné, kdo za kód odpovídá. Pomoc AI dostane jednu poctivou větu u projektu, ne podpis pod každým commitem.

Jestli chcete, aby se takhle pracovalo u vás v týmu nebo na vašem projektu, napište mi.