Ragioni per la programmazione di coppie

11

Ho lavorato in alcuni negozi in cui la direzione ha passato l'idea della programmazione di coppie sia a me che a un altro manager / sviluppatore, e non posso assolutamente lasciarmi alle spalle. Dal punto di vista degli sviluppatori non riesco a trovare una ragione per cui passare a questo stile di codifica sarebbe utile, né come manager di una piccola squadra ho visto alcun beneficio.

Comprendo che aiuta sugli errori di sintassi di base e può essere utile se hai bisogno di cancellare qualcosa, ma i gestori che sono fuori dal ciclo di programmazione sembrano continuare a vederlo come un modo per impedire ai loro designer di andare su Facebook o Reddit che come strumento di progettazione.

Come qualcuno vicino al piano di sviluppo che a quanto pare non può capire da un libro buttato per la mia strada o una pagina wiki sull'argomento ... da una posizione dirigenziale di alto livello, quali sono i vantaggi della Programmazione Paia quando si ha a che fare con Ambienti Scrum o Agili?

    
posta Jeff Langemeier 28.09.2012 - 23:09
fonte

4 risposte

22

In parte, dipende da come stai facendo la programmazione di coppia. In alcuni casi, il driver della coppia sta scrivendo il codice, mentre il secondo membro della coppia sta osservando e discutendo i dettagli di progettazione e implementazione del sistema. Un'altra istanza di programmazione di coppie coinvolge sia le persone che scrivono codice contemporaneamente: una persona sta scrivendo la funzionalità implementata e l'altra sta attivamente sviluppando e scrivendo codice di test all'unità e livello di integrazione, discutendo ancora i dettagli di progettazione e implementazione del sistema.

Indipendentemente dal tipo di programmazione della coppia, funziona efficacemente come una revisione del codice continua. Hai due occhi di persone sul codice, stai attento agli errori prima che sfuggano a un sistema di test / accettazione o al campo successivo. Hai anche due persone che comprendono molto bene una particolare parte del sistema, per fungere da ridondanza per ridurre al minimo il tuo fattore di bus . Entrambi i problemi di rilevamento precoce e la diffusione della conoscenza del sistema all'interno del team riducono il costo della creazione di un sistema.

La diffusione della conoscenza non è solo limitata alla conoscenza tecnica del team. A seconda di chi è la coppia, può consentire alle informazioni di fluire tra un membro più anziano della società a un nuovo membro su altre cose che trascendono il progetto - stile di codifica, cultura aziendale, aspettative e così via. Può anche consentire a qualcuno che ha più familiarità con una tecnologia o uno strumento di condividere le proprie conoscenze in quella tecnologia o strumento in un ambiente reale applicato.

Come hai detto, aiuta anche a mantenere gli sviluppatori concentrati e in flusso . Oltre al flusso, molte persone hanno meno probabilità di interrompere più persone che lavorano su qualcosa che un singolo individuo che lavora su qualcosa. Se passi dalla scrivania di qualcuno e stanno lavorando da soli, ma devi parlare con loro, potresti bussare e parlare con loro. Questo è meno probabile se vedi due o più persone che collaborano o discutono in modo collaborativo - non li interromperai. Le interruzioni costano tempo e spendere più tempo significa costi più elevati. È nel migliore interesse del business massimizzare la produttività dei dipendenti.

Tuttavia, ci sono alcune sfide che devono essere superate per rendere possibile la programmazione della coppia. Prendi in considerazione aspetti come scontri di personalità o scegliendo le coppie per distribuire correttamente le conoscenze. C'è anche la considerazione di quando ruotare esattamente le coppie. La programmazione accoppiata eseguita a caso probabilmente non sarà efficace come quella pianificata. A seconda della composizione della tua squadra, potrebbe non essere efficace per accoppiare le persone.

    
risposta data 28.09.2012 - 23:24
fonte
4

Risposta rapida: la maggior parte dei vantaggi e dei costi sono pubblicati in Wikipedia tuttavia è così la mia interpretazione da diversa angolazione.

Vorrei menzionare casi specifici di vantaggi della programmazione delle coppie che si applicano all'ambiente di sviluppo agile / scrum, tratto da post di blog :

The success or failure of software is dependent on its quality, and Pair Programming directly improves quality in numerous ways. When two developers work together design pattern quality improves as the pair develops short, simple, and easy to maintain code with fewer bugs. Bugs are a major quality concern in software development; with two sets of eyes writing the code, more mistakes are caught, thereby decreasing the cost of development. Bugs found late in the development process are often costly to fix. Finding software defects early prevents and helps deter difficult problems down the road. Complexity often arises in programming, and two minds working to solve a problem together can see more options and draw conclusions more quickly than one.

in Riepilogo:

  • Promuove la comunicazione di squadra
  • Promuove un trasferimento efficiente delle conoscenze tecniche e applicative
  • Risultati in un design migliore
  • Aiuta a eliminare precocemente il codice buggy o a non inserirlo al primo posto
  • Aumenta la produttività del team poiché i membri del team avranno un'attenzione totale durante la codifica
  • Migliora le capacità di comunicazione e collaborazione dei membri del team
  • Rende il lavoro più divertente
risposta data 29.09.2012 - 03:22
fonte
3
  1. Meno errori nel codice finale (efficienza)
    Non sostituisce completamente le recensioni del codice, ma è molto efficace per ottenere le cose in modo tempestivo. C'è una ricerca là fuori che punta in quella direzione.

  2. Completamento più veloce (efficacia)
    Ci sono diverse ricerche che lo evidenziano. Quando si tratta di funzionalità complesse, 2 testine sono semplicemente più efficaci. L'esperienza nell'accoppiamento è un must per questo.

(nota: questo è il tuo annuncio di vendita per il manager: finanziariamente una decisione sensata perché ti rendi più efficiente attraverso il minor numero di bug e più efficace con un completamento più rapido)

  1. Insegnare agli studenti junior Puoi aggiungere un junior direttamente a un programmatore più esperto. Se hai un gruppo di principianti assoluti, è facile rimanere in giro e lasciarli, come coppie, capire le basi. Rimanere in contatto e dare consigli. Il concetto è apparentemente molto antico e deriva dall'artigianato.
risposta data 29.09.2012 - 01:28
fonte
2

Ci sono alcuni vantaggi per la programmazione della coppia:

  • I due programmatori sono in grado di collaborare al progetto insieme, producendo potenzialmente una migliore architettura / codice - due coppie di occhi possono individuare errori
  • La conoscenza delle istituzioni è preservata meglio - se un programmatore esce o non è disponibile, l'altro dovrebbe essere in grado di continuare il lavoro senza molta perdita di produttività
  • È un modo per formare rapidamente nuovi sviluppatori - abbinarli a un membro esperto del team di sviluppo e saranno in grado di sperimentare il codice base dal punto di vista di un veterano del team
  • Una migliore disciplina: i programmatori associati sono probabilmente produttivi per un periodo di tempo più lungo, poiché uno o l'altro può subentrare a raffiche di attività. Potenzialmente compiti noiosi, come i test di unità, potrebbero essere saltati meno frequentemente rispetto agli sviluppatori solisti.

Wikipedia ha anche un bel riassunto dei costi e dei benefici nella voce wiki .

    
risposta data 28.09.2012 - 23:30
fonte

Leggi altre domande sui tag