Programmazione dettata? [chiuso]

7

es. pronuncia il codice e qualcun altro nella stanza lo digita

Qualcuno ha provato questo?

Ovviamente la persona che prende il dettato dovrebbe essere anche un programmatore, quindi non devi spiegare tutto e andare in dettagli noiosi (non "parentesi aperta, nuova linea ..." ma più come "creare un nuovo classe chiamata myParser che accetta tre argomenti, il primo è ... ').

Ci ho pensato perché a volte sono troppo distratto dal mio computer. Circondato da pulsanti, gratificazione immediata a portata di click, il mondo a portata di mano. Per fare le cose, voglio andarmene, scrivere il mio codice su carta. Ma ciò significherebbe perdere l'accesso alle risorse necessarie e rendere più tediosa la digitazione in seguito. La soluzione? Dettate.

Pro:

  • nessuna possibilità di controllare reddit, stackexchange, gmail, ecc.
  • codice
  • mentre cammini per la stanza, sdraiati, gioca a biliardo, qualunque sia
  • allena il tuo cervello a pensare in modo più astratto (devi visualizzare le cose se non puoi semplicemente vedere lo schermo)
  • salta i noiosi dettagli (parentesi di chiusura ecc.)
  • il dattilografo mette in ombra un programmatore più esperto e impara come funzionano
  • il dattilografo può fornire assistenza / suggerimenti
  • pressione esterna del dattilografo che si aspetta istruzioni, esortandoti a rimanere concentrato

Contro

  • potrebbe essere troppo difficile
  • potrebbe non funzionare meglio
  • uso piuttosto inefficiente del programmatore di assistenza
  • devi trovare / pagare qualcuno per farlo
posta Andrew M 15.02.2011 - 02:16
fonte

6 risposte

8

Ho provato questo, trovo che sia un buon modo per introdurre un nuovo programmatore in un sistema. Il nuovo programmatore acquisisce un codice impegnato e sperimenta l'utilizzo del sistema, che agisce come una grande spinta di fiducia quando li tagli al lavoro da solo.

Lavorando in coppia con un programmatore che ha già familiarità con il sistema (personalmente non l'ho provato), immagino che questa potrebbe essere una forma molto efficace di programmazione della coppia, dato che la coppia rivede tutto ciò che si codifica (dal deve scriverlo!)

    
risposta data 15.02.2011 - 03:49
fonte
15

Il concetto di sviluppo agile di programmazione coppie è in realtà abbastanza simile a questo. Anche se non è un sistema di dettatura / scrittura diretto, hai ancora una persona che pensa e produce codice e un'altra persona che la esamina mentre il codice è scritto.

Pair Programming incorpora la maggior parte dei professionisti che hai elencato, tranne che entrambi i programmatori devono essere al computer.

In realtà non l'ho mai provato, ma i sostenitori dello sviluppo Agile lo giurano. L'articolo di Wikipedia collegato cita una serie di studi in cui Pair Programming aumentava la produttività, la qualità del codice, l'efficienza temporale o qualche altro fattore. Quindi, la maggior parte dei tuoi "contro" elencati non sono realmente negativi.

    
risposta data 15.02.2011 - 02:27
fonte
6

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.

    
risposta data 10.07.2013 - 02:56
fonte
1

Ho usato una variazione di programmazione Pair nel mio ultimo lavoro. Alcuni dei problemi riscontrati erano al di sopra dei nostri livelli di competenza (entrambi eravamo solo studenti), quindi eravamo abituati a sederci sulla stessa macchina e a risolvere una soluzione al problema.

Piuttosto che una persona dice all'altro cosa codificare, abbiamo appena preso la tastiera e il mouse e abbiamo codificato la sezione successiva dopo aver spiegato cosa dovevamo fare. Era buono perché promuoveva il rispetto tra i due programmatori, dal momento che dovevamo cedere il controllo dell'input quando appropriato.

Personalmente trovo molto difficile dettare il codice, anche se per essere onesti la mia esperienza non è con i bravi programmatori, di solito le persone che stanno imparando a codificare / non sono ancora molto buone (sono ancora uno studente)

    
risposta data 15.02.2011 - 03:43
fonte
0

"e non entrare nei noiosi dettagli" sembra un contadino che fa tutto il duro lavoro mentre il boss si mette in piedi e dirige.

Se i dettagli noiosi stanno intralciando la codifica, è necessario interrompere la codifica e iniziare prima la progettazione. È così che ci siamo abituati: sedersi e riflettere su ciò che si vuole fare prima di iniziare a farlo. Usa carta, storyboard, vari diagrammi UML (se ti piacciono, li trovo noiosi in se stessi!) E qualsiasi altra cosa che abbia i concetti, le transizioni, lo stato e l'architettura generale del sistema in atto. Quindi puoi codificare questo design e trovarlo molto più semplice.

    
risposta data 19.01.2016 - 12:49
fonte
0

Il vero problema sembra essere I'm too easily distracted at my computer.

Questo è qualcosa che dovrai imparare a superare al di fuori del corso universitario che non avrai la libertà di dettare a un programmatore di droni.

Ci sono modi per forzare questo bloccando (ad esempio nei file degli host) i siti che trovi distratti, altri modi di lavorare come la Tecnica Pomodoro che impone tempi di non distrazione intervallati da periodi di "riposo" forzati per fare quello che vuoi.

Un'altra cosa a cui pensare è se trovi la programmazione così ardua che preferiresti Reddit piuttosto che farlo ... è questa la carriera giusta per te? Forse la costruzione della barca si adatterebbe meglio?

    
risposta data 19.01.2016 - 13:45
fonte

Leggi altre domande sui tag