Facciamo un passo indietro. Il problema che sembri voler risolvere è uno dei punti focali. Questo problema ha già una soluzione, simile nell'aspetto ma molto diversa nella pratica, che altri hanno menzionato; programmazione in coppia.
Associare la programmazione tra due sviluppatori competenti di conoscenza approssimativamente uguale non dovrebbe essere programmata dettando. Invece, un programmatore codifica, l'altro osserva. Entrambi pensano e, naturalmente, la comunicazione è fondamentale, ma sia dattilografa che osservatore sono partner uguali; l'osservatore non dovrebbe essere né un guidatore di sedile posteriore né prendere Zs. Anche la coppia cambierà spesso, con la codifica dell'osservatore e l'osservazione del coder.
Il punto principale è rimanere concentrati, che è quello che vuoi. Se un programmatore trascorre più di pochi secondi su un messaggio istantaneo o sta aggiornando il suo stato di Facebook, l'altro può educatamente schiarirsi la gola e riportare il programmatore all'operazione in questione. Ovviamente entrambi i programmatori possono distrarsi, sia su cose identiche o diverse, ma di solito non per molto tempo; uno di loro risolverà abbastanza presto la sua distrazione e si sta toccando i piedi aspettando l'altro. Se entrambi si perdono in Stack Overflow, Reddit o YouTubes, beh questo è un problema, ma è improbabile; l'uno o l'altro si preoccuperà di sprecare il tempo prezioso dell'altro con lolcats o bails skateboard e suggerirà che torneranno al lavoro.
Il secondo punto è di avere due paia di occhi che guardano il codice e due cervelli che ci pensano. La programmazione accoppiata fornisce un processo di revisione del codice in tempo reale. Ciò richiede un po 'di tatto; l'osservatore deve consentire al codificatore il tempo di tornare indietro e correggere l'errore che ha commesso. Sottolineando immediatamente dita grasse e altri errori di battitura quando il programmatore, il più delle volte, sapeva esattamente quello che faceva e voleva solo finire il suo pensiero prima di correggerlo, è estremamente frustrante, al limite della dettatura. Tuttavia, se il partner di programmazione sembra andare avanti e ha davvero perso qualcosa, l'osservatore può indicarlo in modo che venga risolto prima che perdano tempo con una build o una corsa di prova. Allo stesso modo, se l'osservatore pensa di conoscere un modo migliore, non solo può dirlo al loro partner di codifica, può prendere il volante e guidare per un po '.
La mia esperienza con la programmazione di coppie è in genere positiva. La mia esperienza con la programmazione per dettatura è in genere negativa. Come dittatore, mi sento ammanettato dal fatto di non avere le mani sulla tastiera (questo è perfettamente vero con la programmazione di coppie quando sto osservando, ma in misura minore). Io conosco il mio modo di aggirare questa applicazione (sia ciò che stiamo codificando o ciò che stiamo codificando). conosco cosa voglio fare e esattamente come farlo. Eppure sono bloccato a guardare quest'altro tizio che esita costantemente, cercando il giusto comando o identificatore, mentre fa qualcosa di non proprio quello che avevo in mente, ma abbastanza vicino da non chiamarlo perché sarebbe micromanaging (ma io buttalo via con tutte le altre cose che mi danno tic nervoso entro la fine della giornata). Ogni volta che mi è stato richiesto di dettare il codice, è quasi sempre stato per un ragazzo appena uscito dal college che ha avuto un'esperienza accademica di due semestri con la lingua e l'IDE, e trovo che devo dettare ogni battitura, perché se faccio qualsiasi ipotesi che il dattilografo sappia cosa voglio quando descrivo cosa fare in termini più astratti, sono deluso dal fatto che digita qualcosa di così chiaramente sbagliato che persino il Blocco note potrebbe piangere.
Immagino che le persone che hanno digitato secondo il mio dettato abbiano avuto simili livelli di frustrazione. Non sono nella mia testa, non sanno quello che so o cosa sto pensando in questo momento, e penso molto più velocemente di quanto possa parlare, quindi probabilmente non sto aiutando. Spesso non hanno il mio fantasioso strumento di formattazione del codice $ 130, quindi per quanto possano interessare indentazione o convenzioni di denominazione corrette, è molto più difficile per loro arrivare sul loro box che per me sul mio (noi stai provando a sistemarlo). Stanno cercando di tenere il passo, e sarete sorpresi di quanti codificatori davvero intelligenti siano pessimi tipografi. Non aiuta la codifica comunemente a utilizzare simboli e combinazioni di caratteri che non compaiono spesso nel test di digitazione dell'amministratore quotidiano, per non parlare di una conversazione IM amichevole.
La programmazione tramite dettatura è, IMHO, un grande sacco di "no". È l'anti-pattern per accoppiare le buone pratiche della programmazione.