Programování hlasem: kód, code review, commity

„Programování hlasem“ obvykle zní jako klauniáda. Video z roku 2017, kde vývojář křičí „open paren if foo equals equals null close paren“, je mem, ne workflow. Já si taky dlouho myslel, že tahle myšlenka je mrtvá.
Commander Flow mi otočil hlavu. Ne tím, že by přidal nějaký magický „diktovací režim pro kód“. Ale tím, že kód není jen kód. Kód jsou commity, tikety, code review, dokumentace, komentáře, jména, chaty s kolegy. A tohle všechno kolem kódu mám teď hlasem.
Kde hlas reálně mění život vývojáře
Moje nejčastější hlasová operace jsou commit messages. Postavím kurzor do git commit -m "...", podržím klávesu, řeknu něco jako „opravil race condition při zrušení pipeline, korektně rušíme token při opakovaném stisku zkratky“, a do terminálu přiletí hotová zpráva podle conventional commits, protože jsem hlasem jednou nadiktoval pravidla – a ona si je zapamatovala.
Popisy PR vypadají skoro stejně, jen jsou delší. Otevřu šablonu GitHub PR, diktuju, jako bych vysvětloval juniorovi – co se mění, proč, co necháváme, jak ověřit. Za pár vteřin dostanu úhledný markdown s nadpisy ## Context, ## Changes, ## Test plan. Dřív to zabralo pět minut, teď vteřiny.
Zásadně se mi obrátilo psaní code review komentářů. Dřív jsem se líně vyhýbal rozsáhlým review – příliš mnoho psaní za něco, co si přečtou a zapomenou. Teď označím řádek, hlasem nadiktuju myšlenku, dostanu jasný, vyhlazený komentář doslova za pár vteřin. Moje review jsou výrazně delší a citelně užitečnější a tým si toho všímá.
Samostatnou kapitolou je dokumentace. Nejbolavější část profese. Diktuju docstring, jako bych vysvětloval kolegovi, a Commander Flow ho převede do stylu XML-doc, TSDoc nebo markdown – podle jazyka projektu. Dokumentace přestala být daní, kterou platím za kód.
„Nepíšu kód hlasem. Píšu hlasem všechno kolem kódu. A došlo mi, že to je polovina mé práce.“
Režim code-comments: zvlášť věc, kterou si oblíbím
Proto prostě hlasem řeknu „nech to jako komentář v kódu" — a Commander Flow:
- Nesahá na identifikátory v latince (variable names, class names)
- Zachovává termíny (kubectl, async/await, useEffect, OAuth) v původním zápisu
- Nepřidává „přebytečné“ zdvořilostní fráze (stejně nikdo nepíše „vážení čtenáři“ v komentářích ke kódu)
- Korektně pracuje s oběma abecedami v jednom komentáři:
// ověříme, že Subscription.IsActive před voláním BillingService.Refresh
Zní to jako maličkost. Ale bez té hlasové nápovědy první alfa buildy občas „zušlechťovaly“ můj technický komentář do polohy „pojďme si ověřit, zda je náš obchodní objekt předplatného korektní“.
Slovník termínů – nedoceněná funkce
Do PolishOptions.Dictionary nahazuju vlastní termíny a zkratky. Mám tam:
kubectl,helm,argocd,fluxIDictionary,IAsyncEnumerable,Span<T>ConfigureAwait(false)(jako celek, jako frázi – aby ho LLM nepřepisoval)- Firemní zkratky, jména interních služeb
Pak LLM přestane „vylepšovat“ specifické termíny a nechá je přesně tak, jak jsem je pojmenoval.
Scénář, který mě každý den přesvědčuje
10:30, jsem v IDE, vedle Telegram týmu, vedle Linear s tiketem. Držím zkratku a říkám:
„Vyčlenil jsem retry logiku do samostatné třídy RetryPolicy s exponenciálním backoffem, přidal testy, ještě před mergem zkontroluj sequence diagram v tiketu.“
Tohle odchází do Linearu jako komentář k tiketu. Dál – Alt+Tab do Slacku, stejná zkratka:
„tým, hodil jsem PR na review, není to blocking, ale dnes by se hodilo“
Slackový styl, malé písmeno na začátku, bez „vážení kolegové“. Pak zpátky do IDE.
Tři akce ve třech aplikacích, vše hlasem, žádné prsty.
Kde jsem zakopl
Interpunkce v kódu, který se ocitne uvnitř diktování. Když diktuju blok „tahle funkce vrací Task<bool>“, LLM si občas „myslí“, že Task<bool> je HTML a snaží se to escapovat. Vyřešeno přidáním termínu do slovníku, ale ze začátku to překvapovalo.
Konflikty zkratek s IDE. Moje IDE má vlastní klávesové zkratky. Zkratku Commander Flow jsem párkrát musel přemapovat, aby nekolidovala. Teď ji mám na Caps Lock – nejpohodlnější a nejméně používané klávese. Drobná nepříjemnost vyřešená jedním klikem v nastavení.
Nejtěžší režimy můžou v IDE „přemýšlet“ o kousek déle. U e-mailu pár milisekund nepoznáš. U komentáře k kódu „tady a teď“ je to znát. Přepl jsem na střední režim na pracovním notebooku a nejsilnější nechal pro desktop s dedikovanou grafikou. Latence zmizela.
Co jsem pochopil o zvuku jako programovacím rozhraní
Hlas v IDE klávesnici nenahrazuje. Doplňuje ji tam, kde klávesnice byla nejhorším nástrojem. Psát if (x != null && y != null) – klávesnice. Vysvětlovat, proč ta kontrola tam je – hlas.
Mezi těmito dvěma úkoly je propast kognitivní zátěže a „neřeší se psaním stejně“. Přestal jsem se nutit ten druhý typ úkolu psát. Je to lehčí.
Co jsem si z toho poměru vzal
Programování hlasem není „diktování kódu“. Je to posun toho, co konkrétně děláš hlasem. Logiku píšeš rukama, všechno lidské kolem logiky – hlasem.
Za deset let v profesi jsem nenašel pohodlnější poměr.
Vyzkoušejte to
Stáhněte si Commander Flow a podržte Caps Lock v jakékoli aplikaci. Rozpoznávání běží lokálně, bez cloudu — zkušební verze zdarma v ceně.


