Associare la programmazione quando il conducente e l'osservatore hanno diversi livelli di abilità ed esperienza


30

So che la programmazione di coppia è una tecnica di sviluppo software agile in cui due programmatori lavorano insieme in una workstation. Uno, il driver, scrive il codice mentre l'altro, l'osservatore, rivede ogni riga di codice mentre viene digitata.

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

  • se hanno un livello di abilità di programmazione molto diverso.
  • se uno non ha mai esperienza nel dominio problematico mentre un altro ha.
  • Va ancora bene se hanno un basso livello di abilità di programmazione?

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


13
Assicurati che i due siano d'accordo su chi ha il livello di abilità più alto e dovrebbe allenare l'altro. Se questi ruoli / livelli di abilità non sono chiari, la programmazione della coppia probabilmente non funzionerà e porterà a conflitti.
Giorgio,

Ma, se fatto come suggerisci, può essere un'enorme opportunità di apprendimento.
Mawg,

Risposte:


27

Supponendo che la persona più esperta nella coppia abbia il temperamento di guidare l'altra persona, accoppiare qualcuno con poca esperienza nella lingua o il dominio problematico con una persona esperta faciliterebbe il trasferimento di conoscenze. La persona meno esperta avrebbe un tutor che le istruirà sulla lingua, sul dominio, sull'applicazione e sulle migliori pratiche o convenzioni del team.

C'è un riassunto interessante sul wiki C2 sul trasferimento di conoscenze usando la programmazione di coppia . La persona più anziana, che è stata nominata tutor del team, ha imparato molto dai programmatori junior e le sue conoscenze sono persino aumentate grazie all'abbinamento con sviluppatori di software più junior e meno esperti. Ci sono altre storie su programmatori esperti che si accoppiano anche con esperti di dominio.


Concordato. Ho un giovane nella squadra e la programmazione della coppia ha aumentato notevolmente la qualità del suo codice. Tuttavia, rivedere in coppia il suo codice è stato anche molto utile.
Sulthan,

2
Devi solo stare attento che la persona anziana non sia l'autista il 100% delle volte.
HLGEM,

13
@HLGEM Direi persino che la persona meno esperta dovrebbe essere l'autista per la maggior parte del tempo, mentre la persona più esperta sta rivedendo il codice per difetti e stile o scrivendo casi di test contro di esso.
Thomas Owens

1
Sono d'accordo con @ThomasOwens; avere il partner meno esperto porterà la sua "esperienza" più velocemente di qualsiasi altro metodo, consentendo loro di condividere le proprie idee e idee con il partner più anziano. Non ci vorrà molto prima che i loro livelli di competenza siano molto più vicini.
Eric King,

1
Mi chiedo se questo renda gli sviluppatori senior più obbligati a praticare ciò che predicano?
JeffO,

16

Questo è esattamente il motivo per cui è stata fatta la programmazione della coppia di casi d'uso: condividere l'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.


1
Anche se probabilmente mi considereresti uno, mi sono leccato il "cervello reumatico" ...
Marjan Venema,

1
Non credo che il termine "user story" possa essere applicato qui. Le storie degli utenti descrivono i requisiti aziendali per un software.
Konrad Rudolph,

Sì, penso che significhi "caso d'uso".
Jörg W Mittag,

Downvoted: nessuna parola su una strategia su come affrontare i casi citati.
Try-catch-finalmente il

10

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

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

Il divario di esperienza tra i due è la chiave per accoppiare l'imho di programmazione.


2
Concordato. Potrei immaginare la programmazione di coppia con me stesso e penso che sarebbe del tutto inutile. Il divario è ciò che crea le diverse prospettive rilevanti per fare in modo che 4 occhi coprano più portata nel diagramma delle possibilità. Due persone con identiche capacità ed esperienze vedrebbero le stesse cose l'una dell'altra e non trarrebbero alcun beneficio.
Jimmy Hoffa,

5

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 :)


È una buona spiegazione con esperienza!
Sakares,

2

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

Altrimenti la programmazione in coppia può essere una grande idea supponendo che ovviamente due ragazzi siano pronti a condividere ciò che sanno. Non solo è un ottimo modo per tenere tutti informati sul codice sorgente, ma funge anche da buon posto per nuove idee e discussioni.


Gli sviluppatori di basso livello di abilità hanno meno probabilità di copiare e incollare durante la programmazione da soli? Questo di solito è ciò che accade quando nessuno sta guardando.
JeffO,

1

Fintanto che i membri del team si rispettano reciprocamente, la programmazione delle coppie può essere utile indipendentemente dai livelli di esperienza dei programmatori. Anche se un programmatore junior rileva solo alcuni errori di sintassi (che tutti noi commettiamo!) Prima del programmatore più esperto, è ancora tempo risparmiato nel codice di compilazione.

Penso anche che possa aprire l'atteggiamento 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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.