Programowanie głosem: kod, review, commity

Programowanie głosem — dłonie programisty i mikrofon nad klawiaturą

„Programowanie głosem” zwykle brzmi jak klaunada. Filmik z 2017 roku, na którym programista wykrzykuje „open paren if foo equals equals null close paren” — to mem, nie workflow. Też długo myślałem, że ta idea jest martwa.

Commander Flow zmienił mój punkt widzenia. Nie dlatego, że dodał jakiś magiczny tryb „dyktowania kodu”. Tylko dlatego, że kod to nie tylko kod. Kod to commity, ticketsy, code review, dokumentacja, komentarze, nazwy, czaty z kolegami. A wszystko wokół kodu — teraz mam głosem.

Gdzie głos realnie zmienia życie programisty

Najczęstszą głosową operacją są u mnie wiadomości commitów. Stawiam kursor w git commit -m "...", trzymam klawisz, mówię coś w stylu „naprawiłem race condition w anulowaniu pipeline'u, prawidłowo anulujemy token przy ponownym naciśnięciu skrótu”, i do terminala leci gotowa wiadomość zgodna z conventional commits, bo raz głosem ustawiłem reguły — i one się zapamiętały.

Opisy PR-ów wyglądają niemal tak samo, tylko dłużej. Otwieram szablon GitHub-PR, dyktuję jak tłumaczyłbym juniorowi — co się zmienia, po co, czego nie ruszamy, jak sprawdzać. Po kilku sekundach dostaję schludny markdown z nagłówkami ## Context, ## Changes, ## Test plan. Wcześniej szło na to z pięć minut, teraz — sekundy.

Najbardziej przewróciły się dla mnie komentarze code-review. Wcześniej leniwie pisałem rozbudowane recenzje: za dużo pisania w ramach czegoś, co przeczytają i zapomną. Teraz zaznaczam linijkę, dyktuję głosem myśl, dostaję jasny wypolerowany komentarz dosłownie w parę sekund. Moje review stały się znacznie dłuższe i wyraźnie bardziej pożyteczne, a zespół to widzi.

Osobnym wątkiem jest dokumentacja. Najbardziej bolesna część zawodu. Dyktuję docstring tak, jak tłumaczyłbym koledze, a Commander Flow doprowadza to do stylu XML-doc, TSDoc albo markdowna — zależnie od języka projektu. Dokumentacja przestała być podatkiem, który płacę kodowi.

„Nie piszę kodu głosem. Piszę wszystko wokół kodu głosem. I zrozumiałem, że to właśnie jest połowa mojej pracy.”

Tryb code-comments: osobna rzecz, którą uwielbiam

CODE-COMMENTS · CO ROBI Nie rusza identyfikatorów łacińskich Subscription.IsActive, BillingService, Span<T> Zachowuje terminy w oryginalnej pisowni kubectl, async/await, useEffect, OAuth Nie dodaje uprzejmych zwrotów żadnych „szanowni czytelnicy” w komentarzach Poprawnie działa z dwoma alfabetami „sprawdzamy że Subscription.IsActive”
Bez wyraźnej komendy głosowej „jak komentarz w kodzie" każdy LLM czasem „uszlachetni” techniczny komentarz do stanu prozy.

Dlatego po prostu mówię głosem „zostaw jako komentarz w kodzie" — i Commander Flow:

  • Nie rusza identyfikatorów łacińskich (variable names, class names)
  • Zachowuje terminy (kubectl, async/await, useEffect, OAuth) w oryginalnej pisowni
  • Nie dodaje „zbędnych” uprzejmych zwrotów (i tak nikt nie pisze „szanowni czytelnicy” w komentarzach do kodu)
  • Poprawnie działa z obu alfabetami w jednym komentarzu: // sprawdzamy, że Subscription.IsActive przed wywołaniem BillingService.Refresh

Brzmi jak drobiazg. Ale bez tej głosowej wskazówki pierwsze alpha-buildy czasem „uszlachetniały” mój techniczny komentarz do stanu „sprawdźmy, czy nasz biznesowy obiekt subskrypcji jest poprawny”.

Słownik terminów — niedoceniona funkcja

W PolishOptions.Dictionary wrzucam swoje terminy i skróty. U mnie tam są:

  • kubectl, helm, argocd, flux
  • IDictionary, IAsyncEnumerable, Span<T>
  • ConfigureAwait(false) (w całości, jako fraza — żeby LLM nie przepisywał)
  • Skróty firmowe, nazwy wewnętrznych serwisów

Po tym LLM przestaje „ulepszać” specyficzne terminy, zostawiając je dokładnie tak, jak je nazwałem.

Scenariusz, który przekonuje mnie codziennie

WŁAŚCIWA PROPORCJA KLAWIATURĄ if (x != null && y != null) logika, nazwy, dokładne konstrukcje ~30% czasu w IDE GŁOSEM // wyjaśnienie po co ten check commity, PR, review, doki, czaty ~70% „wokół kodu”
Logika — rękami. Wszystko ludzkie wokół logiki — głosem.

10:30, jestem w IDE, obok komunikator zespołu, obok Linear z ticketem. Trzymam skrót i mówię:

„Wyniosłem retry-logikę do osobnej klasy RetryPolicy z wykładniczym backoffem, dodałem testy, sprawdź dodatkowo sequence diagram w tickecie przed mergem”

Idzie do Linear jako komentarz do ticketu. Dalej — Alt+Tab do Slacka, ten sam skrót:

„zespole, wrzuciłem PR do review, nieblokujące ale pożądane na dziś”

W stylu Slacka, z małych liter, bez „szanowni koledzy”. Dalej — z powrotem do IDE.

Trzy działania w trzech aplikacjach, wszystko głosem, zero palców.

Gdzie się potknąłem

Punctuation w kodzie, który trafia w środek dyktowania. Kiedy dyktuję blok „ta funkcja zwraca Task<bool>”, czasem LLM „myśli”, że Task<bool> to HTML i próbuje go escape’ować. Rozwiązane przez dodanie terminu do słownika, ale na początku zaskakiwało.

Konflikty skrótów z IDE. Moje IDE ma własne skróty. Skrót Commander Flow musiałem przepiąć parę razy, żeby nie wchodził w kolizję. Teraz mam go na Caps Locku — najwygodniejszym i rzadko używanym klawiszu. Małe utrudnienie, rozwiązane jednym kliknięciem w ustawieniach.

Najcięższe tryby potrafią „myśleć” trochę wolniej w IDE. Dla maila dodatkowe milisekundy są niezauważalne. Dla komentarza do kodu „tu i teraz” — zauważalne. Przełączyłem się na średni tryb dla laptopa służbowego, a najmocniejszy zostawiłem dla desktopa z kartą graficzną. Latencja zniknęła.

Co zrozumiałem o dźwięku jako interfejsie programowania

Głos nie zastępuje klawiatury w IDE. On uzupełnia ją tam, gdzie klawiatura była najgorszym narzędziem. Stukać if (x != null && y != null) — klawiatura. Tłumaczyć, dlaczego ten check tu jest — głos.

Pomiędzy tymi dwoma zadaniami jest przepaść obciążenia poznawczego, i nie rozwiązują się one tak samo „pisaniem”. Przestałem zmuszać się do pisania drugiego rodzaju zadań. Stało się lżej.

Co wziąłem z tej proporcji

Programowanie głosem to nie „dyktowanie kodu”. To przesunięcie tego, co dokładnie robisz głosem. Logikę piszesz rękami, wszystko ludzkie wokół logiki — głosem.

Przez dziesięć lat w zawodzie nie znalazłem wygodniejszej proporcji.

Wypróbuj sam

Pobierz Commander Flow i przytrzymaj Caps Lock w dowolnej aplikacji. Rozpoznawanie działa lokalnie, bez chmury — darmowy okres próbny w cenie.

Pobierz za darmo

Podobne historie

Wszystkie artykuły