Stemmestyrt programmering: kode, code review og commits

«Programmering med stemmen» høres vanligvis ut som klovneri. Videoen fra 2017 der en utvikler roper «open paren if foo equals equals null close paren» er et meme, ikke en arbeidsflyt. Jeg trodde også lenge at den ideen var død.
Commander Flow snudde meg. Ikke fordi det la til en magisk «kodedikterings»-modus. Men fordi kode er ikke bare kode. Kode er commits, tickets, code review, dokumentasjon, kommentarer, navngiving, chatter med kolleger. Og alt det rundt koden — har jeg nå med stemmen.
Der stemmen virkelig endrer livet til utvikleren
Den vanligste stemmehandlingen min er commit-meldinger. Jeg setter markøren i git commit -m "...", holder tasten og sier noe sånt som «fikset race condition i avbrytelse av pipelinen, kansellerer token korrekt ved nytt trykk på hurtigtasten», og inn i terminalen kommer en ferdig melding etter conventional commits, fordi jeg én gang muntlig har angitt reglene — og de ble husket.
PR-beskrivelser er nesten det samme, bare lengre. Jeg åpner GitHub-PR-malen, dikterer som om jeg forklarte til en juniorutvikler — hva som endrer seg, hvorfor, hva vi ikke rører, hvordan man tester. Et par sekunder senere har jeg ryddig markdown med overskriftene ## Context, ## Changes, ## Test plan. Før tok det rundt fem minutter, nå — sekunder.
Det viktigste som har snudd seg for meg, er code review-kommentarer. Før var jeg lat med å skrive utfyllende reviews: for mye skriving for noe folk leser og glemmer. Nå markerer jeg en linje, dikterer tanken muntlig og får en presis, polert kommentar på et par sekunder. Reviewene mine er blitt vesentlig lengre og merkbart mer nyttige, og teamet ser det.
En egen sak — dokumentasjonen. Den smerteligste delen av yrket. Jeg dikterer en docstring som om jeg forklarer det til en kollega, og Commander Flow setter det til stilen for XML-doc, TSDoc eller markdown — avhengig av prosjektets språk. Dokumentasjonen har sluttet å være en skatt jeg betaler oppå koden.
«Jeg skriver ikke kode med stemmen. Jeg skriver alt rundt koden med stemmen. Og jeg har skjønt at det er halvparten av jobben min.»
Code-comments-modusen: noe jeg elsker for seg selv
Derfor sier jeg bare med stemmen «la det stå som en kode-kommentar» — og Commander Flow:
- Rører ikke identifikatorer på latinsk (variable names, class names)
- Beholder termer (kubectl, async/await, useEffect, OAuth) slik de er skrevet
- Legger ikke til «overflødige» høflighetsfraser (ingen skriver «kjære lesere» i kodekommentarer uansett)
- Håndterer korrekt begge alfabeter i samme kommentar:
// sjekk at Subscription.IsActive før kall til BillingService.Refresh
Det høres ut som en bagatell. Men uten det stemmehintet «foredlet» de første alfaversjonene av og til den tekniske kommentaren min til «la oss verifisere at vårt forretningsobjekt for abonnementet er korrekt».
Termordbok — en undervurdert funksjon
I PolishOptions.Dictionary legger jeg inn mine egne termer og forkortelser. Jeg har der:
kubectl,helm,argocd,fluxIDictionary,IAsyncEnumerable,Span<T>ConfigureAwait(false)(i sin helhet, som frase — for at LLM ikke skal skrive den om)- Selskapets forkortelser, navn på interne tjenester
Etter det slutter LLM-en å «forbedre» spesifikke termer og lar dem stå akkurat slik jeg sa dem.
Scenariet som overbeviser meg hver dag
Klokka 10:30, jeg er i IDE-en, ved siden av meg er teamets meldingsapp, og ved siden av Linear med tickets. Jeg holder hurtigtasten og sier:
«La retry-logikken inn i en egen klasse RetryPolicy med eksponentiell backoff, la til tester, sjekk i tillegg sequence-diagrammet i ticketen før merge»
Det går inn i Linear som en kommentar til ticketen. Videre — Alt+Tab til Slack, samme hurtigtast:
«team, jeg la PR til review, ikke blokkerende men gjerne i dag»
I Slack-stil, med små bokstaver, uten «kjære kolleger». Videre — tilbake til IDE-en.
Tre handlinger i tre apper, alt med stemmen, ingen fingre.
Der jeg snublet
Tegnsetting i kode som havner midt i diktat. Hvis jeg dikterer en blokk «denne funksjonen returnerer Task<bool>», «tror» LLM-en av og til at Task<bool> er HTML og prøver å escape-tegne det. Løst ved å legge til termen i ordboken, men de første gangene overrasket det meg.
Hurtigtaster i konflikt med IDE-en. IDE-en min har egne hurtigtaster. Commander Flow-tasten måtte tildeles på nytt et par ganger for ikke å kollidere. Nå har jeg den på Caps Lock — den mest praktiske og minst brukte tasten. Liten ulempe, løst med ett klikk i innstillingene.
De tyngste modusene kan «tenke» litt langsommere i IDE-en. For en e-post er ekstra millisekunder umerkelige. For en kodekommentar «her og nå» — merkbare. Jeg gikk over til en mellommodus på arbeidsmaskinen og lar den tyngste være på desktopen med dedikert skjermkort. Latensen forsvant.
Hva jeg har skjønt om lyd som programmeringsgrensesnitt
Stemmen erstatter ikke tastaturet i IDE-en. Den supplerer det der tastaturet var det dårligste verktøyet. Skrive if (x != null && y != null) — tastaturet. Forklare hvorfor sjekken må være der — stemmen.
Mellom disse to oppgavene er det en avgrunn av kognitiv belastning, og de «løses» ikke like godt med skriving. Jeg har sluttet å tvinge meg til å skrive den andre typen oppgaver. Det er blitt lettere.
Det jeg har tatt med meg fra denne fordelingen
Stemmestyrt programmering er ikke «kodediktering». Det er et skifte i hva du gjør med stemmen. Logikken skriver du med hendene, alt menneskelig rundt logikken — med stemmen.
På ti år i yrket har jeg ikke funnet en mer behagelig fordeling.
Prøv selv
Last ned Commander Flow og hold inne Caps Lock i en hvilken som helst app. Gjenkjenningen kjører lokalt, uten sky — gratis prøveperiode inkludert.


