„Dobrý kód je jako příběh“ odhaluje senior programátor v rozhovoru o kódování, vývoji softwaru a mýtech v programování
16.06.2025 | 15 min Anasofťáci
V rozhovoru prozrazuje, jak se z papíru a Pascalu dostal k vývoji komplexních řídicích systémů, proč je podle něj programování kreativní činnost a co má společného s jachtingem.
Technologie hýbou světem, ale kdo vlastně stojí za jejich vývojem? Jaké jsou každodenní výzvy, motivace a dovednosti lidí, kteří budují digitální řešení a komplení softwary? V sérii rozhovorů personal<IT>y nahlédneme do zákulisí práce v IT očima odborníků z ANASOFTu. Odhalují nejen svůj pracovní svět, ale i osobní, protože i za zdrojovým kódem se ukrývá člověk se svými zálibami, pohledem na spolupráci, ale také způsobem, jakým přemýšlí nad problémy.
Senior programátor Štefan se věnuje programování již delší dobu, vede tým kolegů a ukazuje, že kód musí být nejen funkční, ale také udržitelný a čitelný jako dobrý příběh. V rozhovoru prozrazuje, jak se z papíru a Pascalu dostal k vývoji komplexních řídicích systémů, proč je podle něj programování kreativní činnost a co má společného s jachtingem.
Štefanova práce připomíná průkopnici počítačové vědy Adu Lovelace (na obraze), která jako první pochopila, že programování není jen o číslech, ale o nápadech, struktuře a vizi. Stejně jako Lovelace psala první algoritmus s představou, že stroje jednou budou umět vytvářet hudbu či umění, i Štefan vnímá kód jako kreativní jazyk, kterým lze řešit komplexní problémy světa.
Počítačový kód na papíře
Pracuješ jako programátor už několik let.
No, v podstatě jsem programátor, ale při projektech se věnuji také technickému návrhu. To znamená, že se částečně starám o organizaci práce v týmu, připravuji technické zadání tak, aby jeho realizace pokryla požadavky klienta, usměrňuji programátory a zajišťuji, že vývoj probíhá podle plánu.
Jaké je tvoje zaměření?
Většinou se soustředím na backend, to znamená, že se starám o to, aby aplikace správně fungovala na pozadí. Backend developer se zaměřuje na to, jak aplikace funguje na serverech, jak zpracovává data, jak komunikuje s databázemi a podobně. To jsou věci, které nejsou pro uživatele viditelné, ale jsou klíčové pro správné fungování systému.
Jak ses dostal k programování?
Programování mě začalo zajímat už v dětství. Měl jsem rád matematiku a začal jsem s ní už na základní škole. Tehdy ještě počítače nebyly běžnou součástí každodenního života, ale ve škole jsme začali programovat na starých počítačích. Poté jsem se programování věnoval na střední škole, kde jsme používali jazyky jako Pascal a později i C.
Jaké byly tvoje začátky s programováním?
Na začátku to bylo zajímavé. Pamatuji si, že jsme začínali s jazykem Karel – to byl jednoduchý jazyk pro děti, který pomáhal pochopit základy programování hravou formou. Potom jsme přešli na Pascal, což už bylo o něco složitější, ale stále velmi přístupné. Mezitím jsem se pomocí různých tutoriálů sám učil jiné jazyky. Tehdy jsem začal opravdu chápat, co znamená programovat. Ale doba byla jiná – počítače a internet nebyly tak dostupné jako dnes. Pamatuji si, že jsem občas psal kód na papír nebo si později stahoval a na disketách nosil domů tutoriály, které jsem po večerech studoval.
Jaký je rozdíl mezi tím, co se učíš ve škole, a tím, co děláš v praxi?
Ve škole se učíš teorii, algoritmy, základy jazyka. To je dobrý základ, ale v praxi je všechno mnohem praktičtější. Musíš řešit reálné problémy, ne jen teoretické úlohy. Také musíš umět optimalizovat kód, aby byl efektivní, a brát v úvahu věci jako bezpečnost a výkon. V praxi rychle zjistíš, jak to, co ses naučil, aplikovat na skutečné problémy.
Kromě toho ve škole většinou píšeš kód „na zelené louce“ a sám, ale v praxi se to stává málokdy. Častěji jde o rozšiřování už existujícího komplexního softwaru, na kterém pracuje více programátorů.
Programování je velmi kreativní činnost, i když si to mnoho lidí neuvědomuje
Co tě na programování nejvíc fascinuje?
Programování je velmi kreativní činnost, i když si to mnoho lidí neuvědomuje. Když řešíš problém, musíš přijít na to, jak ho vyřešit co nejlépe – a to není vždy jednoznačné. Můžeš mít stejný cíl, ale každý programátor ho může dosáhnout jiným způsobem. Tento proces hledání řešení a vymýšlení nových, efektivnějších přístupů je na tom to nejzajímavější.
V čem je programování kreativní?
Kreativita v programování spočívá v hledání nových přístupů k řešení problému. Mnohokrát máš jeden cíl, ale můžeš ho dosáhnout různými způsoby. To znamená, že neexistuje jen jeden „správný“ způsob, jak napsat kód – každý programátor ho může napsat jinak, a přesto může všechno fungovat správně. Je to o tom, jak využít své dovednosti k vytvoření efektivního řešení. Tento proces je velmi kreativní, protože neexistuje jediná odpověď.
Řešení reálných problémů pomocí algoritmů
Jaké jsou nejdůležitější fáze při vývoji softwaru?
Základní fáze je analýza. To je moment, kdy se shromažďují požadavky od klienta a analytici vytvářejí detailní funkční specifikaci. Poté následuje fáze návrhu, kdy se vytvoří architektonické řešení a naplánuje se, jak budou jednotlivé části systému spolupracovat.
A pak už začíná samotné programování – tedy psaní kódu podle těchto návrhů. Po napsání kódu přichází fáze testování. Na té se podílejí různí lidé, nejen programátoři, ale i testeři, kteří hledají chyby. Programátoři často testují svůj vlastní kód, ale mnoho chyb se objeví až při společném testování, kdy se celý systém testuje jako celek.
Jaká je tvoje konkrétní zodpovědnost při tvorbě softwaru?
Mojí hlavní zodpovědností je finální produkt – tedy to, aby software, který vyvineme, byl kvalitní a odpovídal požadavkům zákazníka. Když je kód napsán, kontroluji ho a zajišťuji, že všechno je na svém místě. Programátor může být zodpovědný za určitou část kódu, ale já jsem zodpovědný za celkové fungování a implementaci.
Ne každý programátor je uzavřený do sebe
Programátoři se často zobrazují jako samotáři u počítače. Je programování individuální práce?
Je to určitě týmová práce. Než se něco napíše, je vždy potřeba to konzultovat s ostatními kolegy. Programování je individuální činnost v tom smyslu, že každý programátor píše svůj kód, ale každý kód musí být zkontrolován, otestován a sladěn s ostatními částmi systému. Takže i když každý dělá svou část, na konci musí všichni spolupracovat, aby systém fungoval jako celek.
Mnoho lidí si myslí, že programátoři jsou introverti. Je to podle tebe pravda?
Ne úplně. Určitě jsou mezi námi i introverti, ale je to velmi individuální. Ne každý programátor je uzavřený do sebe, i když někteří mohou být méně společenští. Je to jako v každém jiném povolání. Důležité je, aby každý našel způsob, jak fungovat v týmu a komunikovat. Programátoři musí být schopni spolu komunikovat, aby mohli společně řešit problémy.
Pro programátory je také důležité neustále se učit, vzhledem k rychlému vývoji technologií. Jak to máš ty?
Neustále se učím, protože technologie se mění velmi rychle. Dnes je to o tom, že musíš být flexibilní a ochotný přijímat nové nástroje a jazyky. Čtu články, sleduji online kurzy a účastním se různých konferencí nebo webinářů. Když pracuji na projektu, často se setkávám s novými technologiemi, a pokud něco neznám, prostě se to naučím. Programování není jen o tom, co už víš, ale o tom, jak se přizpůsobuješ a učíš nové věci.
Do jaké míry je matematika nezbytná při programování?
Logické myšlení a matematika jsou pro programování velmi důležité. Nemusíš být matematik na úrovni PhD, ale základní pochopení algoritmů, logiky a datových struktur je nezbytné. Programování je jako řešení matematických úloh – vyžaduje schopnost analyticky myslet. Pokud rozumíš logice a vzorcům, budeš při psaní kódu mnohem efektivnější.
Každý problém, který řešíš, má své vlastní řešení a je třeba se na něj podívat z různých úhlů
A kdy ses rozhodl, že se chceš věnovat právě backend programování?
Vždycky jsem se cítil komfortněji při práci na backendu. Na frontendu je podle mě více omezení a očekávání ohledně výsledného produktu – často i z netechnických důvodů, jako jsou aktuální trendy nebo preference klienta. Samozřejmě i pro mě jako uživatele je vizuální stránka aplikací a jejich uživatelská přívětivost důležitá, ale jako programátor jsem si dovednosti a cit pro tuto oblast příliš nerozvíjel. Vždy mě více zajímalo to, co je „za oponou“.
A co považuješ za největší výzvu v této práci?
Určitě práci s logikou a optimalizaci. Každý problém, který řešíš, má své vlastní řešení a je potřeba se na něj podívat z různých úhlů. Mnoho věcí si člověk musí propracovat krok za krokem, aby dosáhl co nejlepšího výsledku. Často si musíš vymyslet nová řešení pro staré problémy – a právě to je ta kreativní část práce.
A jaké další dovednosti považuješ za důležité při programování?
Kromě technických dovedností je důležité mít i schopnost dobře komunikovat a pracovat v týmu. Programování není jen o psaní kódu. Je to i o spolupráci, řešení problémů s ostatními a schopnosti vysvětlit svá řešení kolegům. A samozřejmě je nutné se neustále učit. Technologie se mění velmi rychle – a pokud nechceš zůstat pozadu, musíš se přizpůsobovat a vyhledávat nové trendy a nástroje.
Řešit problémy, které ještě nikdo neřešil
Co pro tebe znamená „dobrý kód“?
Dobrý kód je takový, který je jasný, čitelný a udržitelný. Není to jen o tom, aby fungoval, ale také o tom, aby ho další programátor, který přijde po tobě, dokázal pochopit a upravit. Kód by měl být napsán tak, aby se četl jako příběh – měl by být logicky srozumitelný. Když je kód napsán správně, nejenže řeší problém, ale je i snadno přizpůsobitelný do budoucna.
Co znamená „udržitelný kód“?
Udržitelný kód je takový, který je snadno pochopitelný, jednoduše se udržuje a je snadno rozšiřitelný. Pokud je kód napsán špatně, může být později problém ho upravovat nebo rozšiřovat, protože nový programátor bude mít potíže s jeho pochopením. Udržitelnost kódu je proto klíčová.
Kód by měl být jako příběh, který dává smysl
Často se říká, že kód píšeš pro stroj, aby ho vykonával. Ty ale tvrdíš, že kód píšeš pro lidi, aby ho uměli číst. Můžeš to vysvětlit?
Přesně tak – kód je primárně psán pro lidi, ne pro stroj. Počítač kód sice vykonává, ale lidé s ním pracují, upravují ho a rozvíjejí. Proto je důležité, aby byl kód čitelný, aby ho další programátoři, kteří přijdou po tobě, pochopili bez problémů. Kód by měl být jako příběh, který dává smysl.
Máš nějaký příklad, kdy jsi musel vymyslet nové řešení pro konkrétní problém?
Ano, například při digitalizaci řízení skladu. Měli jsme projekt, kde jsme museli převést fyzické úkoly, které vykonávali lidé, do softwaru. Když jsme začali implementovat systém, který sleduje práci ve skladu a pracovní zadání pro operátory, museli jsme zajistit, aby systém správně rozděloval úkoly, aby se nepletly a aby všechno fungovalo správně. Tento projekt byl zajímavý, protože jsme museli vyvinout nový způsob řízení úloh a optimalizace skladových procesů.
Jaký typ projektů tě nejvíc baví?
Mám rád projekty, které jsou komplexní a vyžadují inovativní řešení. Když řešíš problém, který ještě nikdo neřešil, je to opravdu zajímavé. Rád pracuji na projektech, které mají mnoho pohyblivých částí, protože díky tomu můžu přicházet s novými nápady. Je to výzva, ale zároveň velmi uspokojivé, když se všechno spojí a funguje tak, jak má.
Když řešíš problém, který ještě nikdo neřešil, je to opravdu zajímavé
Mluvil jsi o tom, že často diskutuješ s analytiky, abys obhájil své odhady a technická řešení. Můžeš se podělit o nějaké zkušenosti z těchto diskusí?
Ano, je to velmi běžné – často se s analytiky musíme dohadovat o technických řešeních a odhadech. Často přicházejí s požadavkem na zjednodušení projektu, aby se zohlednil rozpočet nebo termín. Někdy musíme hledat kompromisy, které neohrozí funkčnost systému, ale zároveň umožní splnit obchodní požadavky. Není to vždy jednoduché, ale je důležité, aby si každý dokázal obhájit svá rozhodnutí – proto musím být schopen přesně vysvětlit, proč jsou určitá technická rozhodnutí důležitá.
Kdy je potřeba zapojit softwarového architekta do projektu?
Softwarový architekt bývá zapojen už v počátečních fázích projektu, kdy se definují technické principy a základní architektura. Pokud je potřeba zásadně něco změnit – například způsob, jakým se systém chová, nebo pokud se objeví velký problém – architekt se znovu zapojí, aby navrhl správné řešení. Moje úloha většinou spočívá v tom, že tyto principy implementuji do kódu a zajišťuji, aby vše fungovalo v souladu s tím, co bylo navrženo.
Každý projekt přináší určité odlišnosti
Jaké výzvy považuješ za největší při práci na komplexních projektech?
Největší výzvou je zohlednit všechny detaily a zároveň zachovat flexibilitu, protože některé aspekty se mohou během vývoje změnit. Každý projekt přináší něco nového a i když máme zkušenosti, vždy existují nepředvídatelné okolnosti, které mohou projekt zkomplikovat. Proto je důležité být flexibilní a připravený se přizpůsobit změnám.
Říkáš, že zkušenosti se nedají vždy přesně zopakovat, že každé řešení je trochu jiné. Jak se s tím vyrovnáváš?
Každý projekt přináší určité odlišnosti – ať už v technických požadavcích, nebo ve způsobu, jakým se musíme přizpůsobit konkrétním podmínkám. Proto je důležité se neustále přizpůsobovat, učit se z předchozích zkušeností a vždy se snažit co nejpřesněji odhadnout, jak daný problém vyřešit. K tomu je potřeba flexibilita a schopnost dívat se na problém z různých perspektiv.
Programování je víc než jen kód
Zmiňoval jsi, že programování může být i zábavné. Co tě na této práci baví nejvíc?
Zábava spočívá v tom, že se neustále učím něco nového. Každý projekt přináší výzvy, které mě nutí přemýšlet jinak – a to je na tom to nejzajímavější. Někdy se i řešení, které se na první pohled zdá složité, ukáže jako fascinující, když najdeš ten správný způsob, jak na to. Pro mě je to hlavně proces hledání nejlepšího možného řešení. Nemusí být vždy nejjednodušší, ale je to vždy něco nového a vzrušujícího.
Jak relaxuje programátor?
Práce na zahradě je pro mě velmi osvěžující. Je to úplně jiný typ činnosti než programování, ale zároveň velmi uspokojující. Zahrada mi dává možnost odejít od obrazovky a věnovat se něčemu fyzickému. Je to skvělý způsob, jak si „vyčistit hlavu“ a získat nový pohled na problémy, se kterými se setkávám v práci.
Pro mě je to hlavně proces hledání nejlepšího možného řešení
Můžeš uvést nějaký konkrétní příklad, kdy ti práce na zahradě pomohla v práci?
Určitě. Například když jsem měl problém s optimalizací kódu, který se nevyvíjel podle očekávání, potřeboval jsem si dát pauzu. Po pár hodinách strávených na zahradě, kdy jsem se věnoval něčemu úplně jinému, se mi v hlavě začaly objevovat nové nápady, jak se na problém podívat jinak. Někdy, když si dáš pauzu, tvé podvědomí začne pracovat na řešení problémů, a když se vrátíš k počítači, máš čerstvý pohled.
A jak se vyrovnáváš se stresem v práci?
Při práci pod tlakem je důležité zachovat klid a rozpoznat, co je skutečně prioritní. Stres může být produktivní, pokud ho využiješ jako motivaci k rychlejšímu a efektivnějšímu řešení problémů, ale je důležité to nepřehnat. Když je toho opravdu moc, dám si krátkou pauzu, abych si vyčistil hlavu. A když se vrátím, mám jasnější představu, jak dál postupovat.
Zmiňoval jsi, že cestuješ „na divoko“, bez pevného plánu. Jak to vypadá?
Ano, s manželkou jsme například cestovali po Španělsku a Portugalsku. Půjčili jsme si dodávku a jezdili bez pevného plánu, kam půjdeme dál. Často jsme se rozhodovali spontánně, zastavili jsme tam, kde se nám líbilo, a objevovali nová místa bez velkého plánování.
Využíváš při cestování i nějaké programátorské dovednosti?
Samozřejmě. I v osobním životě se snažím věci optimalizovat, stejně jako při práci. Při takovém způsobu cestování musíš každý den naplnit základní potřeby – spánek, hygienu, jídlo a pití. A i tady pomáhají technologie, například android aplikace, kde uživatelé sdílejí místa na mapě s dostupnými službami, jako jsou sprchy, pitná voda nebo parkování na noc. Je to podobné jako při optimalizaci kódu – hledáš způsoby, jak dělat věci efektivněji, aniž bys ztrácel čas nebo prostředky.
Jachting je skvělý způsob, jak si odpočinout, ale zároveň se při něm naučíš hodně o strategii
Máš ještě nějaké další příklady, jak se tvoje „profesionální deformace“ projevuje v soukromém životě?
Určitě. Při programování neustále hledáš způsoby, jak zjednodušit nebo optimalizovat procesy. Stejně to dělám i v osobním životě – ať už při plánování cest, organizování věcí doma nebo při řešení problémů s rodinou. Vždy se snažím přemýšlet, jak něco udělat efektivněji. Stejně jako v kódu, i v životě se neustále přizpůsobuji a upravuji své přístupy, abych našel nejlepší řešení pro konkrétní situaci.
Tvoje hobby je jachting. Má něco společného s programováním?
Jachting je skvělý způsob, jak si odpočinout, ale zároveň se při něm naučíš hodně o strategii a předvídání – což je velmi podobné programování. Na jachtě si musíš neustále představovat, co se stane o několik kroků dopředu, jak loď zareaguje na vítr a vlny. Stejně jako při psaní kódu si musíš představit, jak jednotlivé komponenty systému spolupracují a co se stane, když něco změníš.
Jaké jsou další podobnosti mezi jachtingem a programováním?
Například při přípravě na vytažení plachty si musím představit, jak jsou všechna lana složená, kde se nacházejí a jak se navzájem ovlivňují. Pokud udělám chybu, může se lano zamotat nebo plachta nevytáhne správně. To je velmi podobné psaní kódu – musím si představit, jak budou jednotlivé funkce, objekty a proměnné spolupracovat. Je potřeba zapojit představivost, vizualizovat si v hlavě cílový stav a odhalit možné problémy či slabá místa ještě před samotnou realizací.
Programování nebude jen o psaní kódu
Jaké další dovednosti z jachtingu ti pomáhají v práci?
Určitě týmová práce. Na lodi, i když máš jasně stanovenou roli, musíš vždy spolupracovat s ostatními členy posádky. Stejně tak v programování je týmová práce klíčová. Musíš se spolehnout na své kolegy, abyste společně efektivně řešili problémy a plnili úkoly. Na jachtě, když se něco pokazí, je důležité rychle a správně komunikovat a situaci vyřešit, abys dosáhl cíle. To samé platí i v práci programátora – komunikace a spolupráce v týmu jsou nezbytné pro úspěšné dokončení projektu.
Jak tedy vidíš budoucnost programování?
Budoucnost programování bude ještě víc zaměřená na automatizaci a umělou inteligenci. Technologie se vyvíjejí rychle a programátoři budou muset být čím dál přizpůsobivější. Programování nebude jen o psaní kódu, ale i o využívání nových nástrojů a technik pro automatizaci procesů. To, co dnes považujeme za velmi složité úkoly, bude možná za pár let běžné. Programování se navíc stává dostupnějším širšímu okruhu lidí, což může přinést nové, inovativní způsoby vývoje softwaru.
A co si myslíš o tom, že se programování stává dostupnější širší veřejnosti?
Myslím, že je to velmi pozitivní krok. Díky různým vzdělávacím platformám a open-source nástrojům může s programováním začít prakticky kdokoli – a to je skvělé. Rozmanitost názorů a přístupů je pro vývoj softwaru nesmírně cenná. Programování už není jen pro technické odborníky, ale může se stát součástí různých profesí. To otevírá nové možnosti a způsoby, jak využívat technologie v nejrůznějších oblastech.
Chcete dostávat novinky e-mailem?
Vyberte si z témat, která vás zajímají a přihlaste se k odběru novinek