Coppia la programmazione quando il guidatore e l'osservatore hanno un diverso livello di abilità ed esperienza

30

So che la programmazione delle coppie è una tecnica di sviluppo del software agile in cui due programmatori lavorano insieme su un'unica workstation. Uno, l'autista, scrive il codice mentre l'altro, l'osservatore, esamina ogni riga di codice mentre viene digitata.

Ma mi chiedo solo che la strategia funzioni ancora nel caso. Ad esempio

  • se hanno un livello di abilità di programmazione molto diverso.
  • se non si sperimenta mai nel dominio del problema mentre un altro lo ha.
  • Va ancora bene se hanno un basso livello di abilità di programmazione?

Potresti suggerire la strategia di programmazione della coppia nel caso precedente?

    
posta Sakares 15.01.2013 - 09:10
fonte

6 risposte

27

Supponendo che la persona più esperta nella coppia abbia il temperamento di mentore dell'altra persona, l'abbinamento di qualcuno con poca esperienza nella lingua o il dominio del problema con una persona esperta faciliterebbe il trasferimento della conoscenza. La persona meno esperta avrebbe un mentore per istruirli sulla lingua, il dominio, l'applicazione e le migliori pratiche o convenzioni del team.

C'è una sintesi interessante su C2 wiki sul trasferimento delle conoscenze mediante la programmazione delle coppie . La persona più anziana, che è stata chiamata a servire come mentore della squadra, ha imparato molto dai programmatori junior e le sue conoscenze sono aumentate anche in seguito all'essere abbinato a sviluppatori software più giovani e meno esperti. Ci sono altre storie su programmatori esperti in coppia con esperti di dominio.

    
risposta data 15.01.2013 - 09:22
fonte
16

Questo è esattamente il caso in cui è stata fatta la programmazione della coppia di casi: condivisione dell'esperienza tra la vecchia barba e la giovane cavalletta.

Questa è una condivisione a doppio senso: gli insetti agili hanno molto da insegnare ai cervelli reumatici.

    
risposta data 15.01.2013 - 09:21
fonte
10

Quando sono stato promosso alla mia squadra attuale ero il novizio in J2EE ma ero l'esperto nel dominio. Il mio senior (il nuovo team leader) era esperto in J2EE ma non nella piattaforma.

Penso di aver imparato di più su Java2EE in questi 4 mesi con la programmazione delle coppie piuttosto che leggere un libro e anche il capo squadra ha imparato a conoscere la piattaforma.

L'intervallo di esperienza tra i due è la chiave per accoppiare la programmazione imho.

    
risposta data 15.01.2013 - 12:13
fonte
5

Descriverò la mia esperienza e cercherò di ricavarne 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 dominio del problema. Ed era anche il mio supervisore al momento (so che potrebbe sembrare strano:)

Il principale vantaggio di questa metodologia è stato il fatto che dovevo spiegare l'implementazione di molte cose dal suo dominio della conoscenza, assicurando in tal modo l'esattezza dell'attuazione e la sua comprensione del processo, il che significava che capiva perché ci voleva questa volta.

Un altro vantaggio è la messa a fuoco facile del compito, senza distrazioni (ha-ha, immagina di aprire Twitter prima del naso del tuo capo).

A volte, tuttavia, era piuttosto scoraggiante, dal momento che persino 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, non si tratta di una vera e propria programmazione in coppia, dal momento che praticamente non è stato in grado di rivedere il codice durante la digitazione. Tuttavia, sembrava essere una strategia sensata (almeno per qualche tempo). Alla fine ha funzionato del tutto a causa della relativa semplicità di entrambe le metodologie di sviluppo (voglio dire, non sono state coinvolte complesse tecniche di progettazione del software come i modelli OOP) e l'argomento. Questo non funzionerebbe nel caso in cui dovessimo sviluppare un compilatore, penso. Credo che potrebbe ancora funzionare nel caso in cui l'osservatore non programmatore partecipi al processo di sviluppo di piccoli pezzi chiaramente definiti. Diciamo, è giusto che guardi la programmazione di una funzione "calcola il parametro X da Y e Z con un determinato algoritmo", ma potrebbe non essere così ok per fargli vedere il processo generale di progettazione del sistema (ovvero lo sviluppo dell'architettura software, cioè la gerarchia di classi, poiché è troppo astratto).

Penso che funzionerebbe ancora meglio nel caso in cui avesse alcune abilità di programmatore di base, dato che non dovrei spiegare "cos'è un array".

Spero che aiuti:)

    
risposta data 16.01.2013 - 09:17
fonte
2

Nella mia esperienza, se entrambi i programmatori hanno un basso livello di abilità, può essere un problema. In quel caso c'è spesso la tendenza a provare la programmazione di copia-incolla. Penso che sia una buona idea non accoppiare due programmatori inesperti fino a raggiungere il livello specifico determinato dal team.

In caso contrario, la programmazione delle coppie può essere una buona idea presumendo che due ragazzi siano pronti a condividere ciò che sanno. Non solo è un ottimo modo per tenere tutti informati sul codice sorgente, ma agisce anche come un buon posto per nuove idee e discussioni.

    
risposta data 15.01.2013 - 10:32
fonte
1

Fintanto che i membri del team hanno rispetto reciproco, la programmazione della coppia può essere utile indipendentemente dai livelli di esperienza dei programmatori. Anche se un programmatore junior rileva solo alcuni errori di sintassi (che tutti noi facciamo!) Prima del programmatore più esperto, è ancora tempo risparmiato nel codice di compilazione.

Penso anche che possa aprire l'attitudine di un programmatore verso le capacità degli altri membri del proprio team, specialmente se hanno una mente aperta e si aspettano che tutti possano insegnarti qualcosa.

    
risposta data 01.05.2013 - 17:56
fonte

Leggi altre domande sui tag