Vít Šafařík, vývojář na volné noze z Opavy

Jsem vývojář na volné noze z Opavy. Do IT jsem přišel v roce 2009 přes technickou podporu, kód píšu od roku 2018 a v letech 2021 až 2026 jsem vedl vývoj v menší webové agentuře. Stavím systémy, na kterých firmy denně stojí, a stejnou váhu jako vývoji dávám tomu, co přijde po předání: zálohám, monitoringu a provozu.

Sedm let v B2B obchodu a devět let marketingu mě naučily, jak firma získává zakázky a kde jí utíká marže. Tři roky na helpdesku mi ukázaly, že chyba se projeví u člověka, který systém používá, ne v logu. Nejvíc mě ale naučilo vedení vývoje: dodávka a odhady, review pull requestů, servery a produkce.

Na volnou nohu jsem šel proto, abych mohl stavět celé systémy a ručit za ně od zadání po provoz. Stavím s AI agenty, protože zrychlují práci rozdělenou do malých dávek s nezávislým review. Architekturu, datový model, bezpečnost a rozhodnutí o rozsahu si nechávám. Za výsledek odpovídám já: testy, monitoring a zálohy s ověřenou obnovou.

Kariéra od roku 2002 po dnešek

ObdobíRoleCo jsem dělal
2002–2009Obchodní zástupce Abacus Electric, Lamdaprint CZ, Impression Media

Sedm let B2B obchodu ve třech firmách: velkoobchod, partneři a budování dealerské sítě. Naučil jsem se, jak firma získává zakázky a co pro ni znamená marže.

2009–2012Helpdesk a implementace software CCV s.r.o.

Technická podpora klientů a implementace software. Tady jsem začal v IT a poprvé viděl, jak se chyba v systému projeví u člověka, který s ním denně pracuje.

2014–2023Specialista webového marketingu RS Ňamka

Devět let webového marketingu, v posledních letech souběžně s vývojem. Odsud vím, jak vypadá cesta od reklamy k objednávce a co majitel čte v číslech.

2018–2020Software engineer WP-admin.cz, Opava

První vývojářská pozice. Weby a aplikace na WordPressu a v PHP.

PHP, WordPress

2020Software engineer, Průmysl 4.0 Brano a.s.

Osm měsíců vývoje pro výrobní podnik v rámci Průmyslu 4.0.

Node.js, Express, Vue

2021–2026Vedoucí vývoje Menší webová agentura

Měl jsem na starosti dodávku a odhady, technická rozhodnutí, review pull requestů a nasazení na demo a produkci. Spravoval jsem zhruba 20 linuxových serverů a 80 produkčních webů, zálohy s ověřenou obnovou a DR testy a alerting jsem zredukoval jen na to, co vyžaduje akci. Aplikace jsem stavěl v Symfony 7 a na WordPressu.

Symfony 7, WordPress, Docker, nginx, Borg

2026–dnesVývojář na volné noze safarik.dev

Čtyři systémy v ostrém provozu pro skupinu e-shopů a montážní firmu: dispečerské CRM, generátor objednávek k výrobci, přehled pro 17 e-shopů a AI vizualizátor rolet. Stavím s AI agenty a ručím za provoz. Zkušenosti z vedení vývoje přenáším přímo do firem.

TypeScript, Node.js, PostgreSQL, Next.js, Claude Code

Čemu věřím

  1. Kladný signál není důkaz účinku.

    Skript vrátí nulu, endpoint vrátí 200, záloha hlásí hotovo, a přitom se nic nestalo. Letos jsem testoval obnovu git serveru z off-site zálohy na čistý server a záloha, která denně hlásila úspěch, měla rozumnou velikost a hlídal ji monitoring, neobsahovala data aplikace. Proto měřím na druhém konci a zálohu považuju za zálohu až po obnově, která dnes trvá pod pět minut.

  2. Premisa padne až při měření.

    Než něco opravím, změřím, jestli je to opravdu příčina. U přehledu pro skupinu e-shopů jsem 141 460 dokladů z Fakturoidu ověřil proti API do haléře, místo abych věřil součtům z exportů. Teprve pak bylo vidět, co doopravdy nesedí: při kontrole s finančním oddělením seděl obrat dvou e-shopů objednávka po objednávce a na řádku storen zbyl rozdíl 0,44 %, který má jméno a příčinu.

  3. Plán není autorita.

    Když review najde vadu, kterou předepsal můj vlastní plán, rozhoduje zadání, ne plán. Agent chybu z plánu poslušně naimplementuje a ještě ji obhájí, protože přesně to měl v úkolu, takže ten nález je můj, ne jeho. Opravím kód i plán, aby v repozitáři nezůstal návod, o kterém vím, že je špatný.

  4. Feedback ve smyčce, ne ad hoc.

    Podněty od klienta posbírám na jedno místo, přepíšu je na příčiny a opravím v jedné dávce. U generátoru objednávek pro skupinu e-shopů jsem před nasazením ověřil data a právě tam se ukázala chyba, kterou testy neviděly. Nový postup pak několik týdnů běžel ve stínovém provozu vedle starého, než jsme ho přepnuli naostro.

  5. Agenti zrychlují, ale nový risk layer chytá jen člověk.

    Z osmi incidentů s agenty za tři měsíce nezachytila žádný automatická pojistka. Všechny chytil lidský review. Proto pracuju v malých reviewovatelných dávkách, na konci jde nezávislý průchod proti zadání a každé číslo, které mi agent nahlásí, ověřuju spuštěním.

  6. Platí se za výstup, ne za hodiny.

    Hodinová sazba oceňuje vstup, který AI zlevnila. Pevná cena za dohodnutý výsledek nese riziko odhadu na mé straně, a tak to má být. Vy platíte za to, co dostanete, ne za to, jak dlouho mi to trvalo.

  7. Chyba na mé straně se platí slevou, ne popíráním.

    Letos v září jsem tak u dispečerského CRM pro montážní firmu nacenil se slevou funkci, kterou má nabídka slíbila nejasně. Popírání chyby stojí důvěru a ta se draze kupuje zpátky.

Čím stavím

Aplikace

TypeScript, Node.js, Fastify, NestJS, Hono, Next.js, React, PostgreSQL, Prisma, Drizzle, BullMQ, pg-boss, Playwright, Vitest, PHP, Symfony 7, Doctrine, WordPress, Python, Astro

Integrace

Shoptet, Shopify, Fakturoid, mWork365, WhatsApp přes Twilio, obrazové modely OpenAI, Resend, Google Ads, Meta, Sklik, kurzy ČNB, GoPay, HubSpot, SmartEmailing

Infrastruktura

Linux, Docker, Traefik, Coolify, Hetzner, KVM, nginx, PostgreSQL, MariaDB, Redis, Borg a Borgmatic, Uptime Kuma, Loki a Grafana, CrowdSec, fail2ban, Tailscale, Cloudflare Pages

AI nástroje

Claude Code s vlastními skilly, hooky a MCP servery, subagenti s nezávislým review, Codex, lokální modely přes Ollama, Claude API v aplikacích

Je to jen to, co dnes skutečně používám v provozu, ne seznam všeho, co jsem kdy zkusil.

Napište mi, co potřebujete

Popište mi proces nebo systém, který vás trápí, a já vám řeknu, jestli jsem ten správný člověk. Odpovídám osobně, do 24 hodin.

Napsat poptávku