Descriverò la mia esperienza e proverò a trarne qualche "strategia".
Una volta ho programmato una coppia con un non programmatore completo. Era esperto sull'argomento del prodotto software che abbiamo sviluppato. Al contrario, non avevo esperienza nel settore problematico. E al momento era anche il mio supervisore (so che potrebbe sembrare strano :)
Il principale vantaggio di questa metodologia è stato che dovevo spiegare l'implementazione di molte cose dal suo dominio di conoscenza, assicurando così l'esattezza dell'implementazione e la sua comprensione del processo, il che significava capire perché ci fosse voluto questo tempo.
Un altro vantaggio è la facile concentrazione sul compito, nessuna distrazione (ah ah ah, immagina di aprire Twitter davanti al naso del tuo capo).
A volte è stato piuttosto intimidatorio, dal momento che anche una pausa per il tè è diventata piuttosto una "distrazione dal lavoro" (non dal suo punto di vista; era solo scomodo chiedere una pausa e così via).
Quindi, questa non è davvero una programmazione a coppie poiché praticamente non ha potuto rivedere il codice mentre veniva digitato. Tuttavia, sembrava essere una strategia sana (almeno per qualche tempo). Alla fine ha funzionato a causa della relativa semplicità sia della metodologia di sviluppo (voglio dire, non sono state coinvolte tecniche di progettazione software complesse come OOP Patterns) sia della materia. Questo non funzionerebbe nel caso in cui dovessimo sviluppare un compilatore, credo. Credo che potrebbe ancora funzionare nel caso in cui un osservatore non programmatore partecipi al processo di sviluppo di piccoli pezzi chiaramente definiti. Supponiamo che sia lui a guardare la programmazione di una funzione "calcola il parametro X da Y e Z mediante un determinato algoritmo", ma potrebbe non essere così accettabile vederlo guardare il processo di progettazione generale del sistema (ovvero lo sviluppo dell'architettura software, cioè la gerarchia di classi,
Penso che funzionerebbe ancora meglio nel caso in cui avesse alcune competenze di base per i programmatori, dato che non avrei dovuto spiegare "cos'è un array".
Spero che sia d'aiuto :)