Programmation en binôme lorsque le conducteur et l'observateur ont un niveau de compétence et une expérience différents

30

Je sais que la programmation par paires est une technique de développement logiciel agile dans laquelle deux programmeurs travaillent ensemble sur un même poste de travail. L'un, le pilote, écrit le code tandis que l'autre, l'observateur, examine chaque ligne de code au fur et à mesure de sa saisie.

Mais je me demande simplement que la stratégie fonctionne toujours dans le cas. Par exemple

  • s'ils ont un niveau de compétence en programmation très différent.
  • si l'on ne connaît jamais dans le domaine du problème alors qu'un autre en a.
  • Est-ce toujours OK s'ils ont un faible niveau de compétence en programmation?

Pourriez-vous suggérer la stratégie de programmation de paire dans le cas ci-dessus?

Sakares
la source
13
Assurez-vous que les deux s'entendent sur qui a le niveau de compétence le plus élevé et qui est censé entraîner l'autre. Si ces rôles / niveaux de compétence ne sont pas clairs, la programmation en binôme ne fonctionnera probablement pas et entraînera des conflits.
Giorgio
Mais, si vous le faites comme vous le suggérez, cela peut être une formidable opportunité d'apprentissage.
Mawg

Réponses:

27

En supposant que la personne la plus expérimentée du couple ait le tempérament pour encadrer l'autre personne, jumeler quelqu'un avec peu d'expérience dans la langue ou le domaine problématique avec une personne expérimentée faciliterait le transfert de connaissances. La personne moins expérimentée aurait un mentor pour les instruire sur la langue, le domaine, l'application et les meilleures pratiques ou conventions de l'équipe.

Il y a un résumé intéressant sur C2 wiki sur le transfert de connaissances en utilisant la programmation par paires . La personne la plus âgée, qui a été amenée à servir de mentor d'équipe, a beaucoup appris des programmeurs juniors et ses connaissances ont même augmenté grâce au jumelage avec des développeurs de logiciels plus juniors et moins expérimentés. Il existe également d'autres histoires de programmeurs experts associés à des experts du domaine.

Thomas Owens
la source
D'accord. J'ai un junior dans l'équipe et la programmation en binôme a considérablement amélioré la qualité de son code. Cependant, l'examen par paire de son code a également été très utile.
Sulthan
2
Vous devez juste faire attention à ce que la personne âgée ne soit pas le conducteur à 100% du temps.
HLGEM
13
@HLGEM Je dirais même que la personne la moins expérimentée devrait être le conducteur la plupart du temps, tandis que la personne la plus expérimentée examine le code pour les défauts et le style ou écrit des cas de test par rapport à lui.
Thomas Owens
1
Je suis d'accord avec @ThomasOwens; avoir le lecteur partenaire moins expérimenté apportera son «expérience» plus rapidement que toute autre méthode, tout en leur permettant de partager leurs propres idées et idées avec le partenaire plus âgé. Il ne faudra pas longtemps avant que leurs niveaux de compétence soient beaucoup plus proches.
Eric King du
1
Je me demande si cela rend le dev senior plus obligé de pratiquer ce qu'il prêche?
JeffO
16

C'est exactement la programmation de paires de cas d'utilisation qui a été faite pour: partager l'expérience entre la vieille barbe et la jeune sauterelle.

Il s'agit d'un partage à double sens: les insectes agiles ont beaucoup à apprendre aux cerveaux rhumatismaux.

mouviciel
la source
1
Bien que vous me considériez probablement comme un, j'ai adoré les «cerveaux rhumatismaux» ...
Marjan Venema
1
Je ne pense pas que le terme «user story» puisse être appliqué ici. Les récits d'utilisateurs décrivent les exigences métier d'un logiciel.
Konrad Rudolph
Ouais, je pense qu'il veut dire "cas d'utilisation".
Jörg W Mittag
Downvoted: aucun mot sur une stratégie comment gérer les cas mentionnés.
try-catch-finally
10

Quand j'ai été promu dans mon équipe actuelle, j'étais le débutant en J2EE mais j'étais l'expert dans le domaine. Mon senior (le nouveau chef d'équipe) était compétent en J2EE mais pas dans la plateforme.

Je pense que j'ai appris plus sur Java2EE au cours de ces 4 mois avec la programmation en binôme que sur la lecture d'un livre et le chef d'équipe a également découvert la plate-forme.

L'écart d'expérience entre les deux est la clé pour coupler la programmation à mon humble avis.

dierre
la source
2
D'accord. Je pourrais imaginer la programmation en binôme avec moi-même, et je pense que ce serait tout à fait inutile. L'écart est ce qui crée les différentes perspectives pertinentes pour que 4 yeux couvrent plus de portée dans le diagramme des possibilités du vin. Deux personnes ayant des compétences et des expériences identiques verraient les mêmes choses l'une que l'autre et n'obtiendraient aucun avantage.
Jimmy Hoffa
5

Je vais décrire mon expérience et essayer d'en tirer une "stratégie".

J'ai déjà programmé une paire avec un non-programmeur complet. Il était expert sur le sujet du produit logiciel que nous avons développé. Au contraire, je n'avais aucune expérience dans le domaine problématique. Et il était aussi mon superviseur en ce moment (je sais que cela peut sembler étrange :)

Le principal avantage de cette méthodologie était que je devais expliquer la mise en œuvre de nombreuses choses de son domaine de connaissances, assurant ainsi l'exactitude de la mise en œuvre et sa compréhension du processus, ce qui signifiait qu'il comprenait pourquoi cela prenait du temps.

Un autre avantage est une concentration facile sur la tâche, aucune distraction (ha-ha, imaginez ouvrir Twitter devant le nez de votre patron).

Cependant, il était parfois assez intimidant, car même une pause-thé devenait une "distraction du travail" (pas de son point de vue; il était simplement gênant de demander une pause, etc.).

Donc, ce n'est pas vraiment une programmation par paires car il ne pouvait pratiquement pas réviser le code tel qu'il était tapé. Cependant, cela semblait être une stratégie sensée (au moins pendant un certain temps). Cela a finalement fonctionné du fait de la relative simplicité de la méthodologie de développement (je veux dire, aucune technique de conception de logiciel complexe comme les modèles OOP n'était impliquée) et du sujet. Cela ne fonctionnerait pas si nous devions développer un compilateur, je pense. Je crois que cela pourrait encore fonctionner si un observateur non programmeur participe au processus de développement de petites pièces clairement définies. Dites, c'est bien de lui faire regarder la programmation d'une fonction "calculer le paramètre X à partir de Y et Z par un algorithme donné", mais peut-être pas si bien de lui faire regarder le processus global de conception du système (c'est-à-dire le développement de l'architecture logicielle, c'est-à-dire la hiérarchie des Des classes,

Je pense que cela fonctionnerait encore mieux au cas où il aurait des compétences de base en programmation, car je n'aurais pas à expliquer "ce qu'est un tableau".

J'espère que ça aide :)

Michael Pankov
la source
C'est une bonne explication expérimentée!
Sakares
2

D'après mon expérience, si les deux programmeurs ont un faible niveau de compétence, cela peut être un problème. Dans ce cas, il y a souvent une tendance à essayer la programmation copier-coller. Je pense que ce peut être une bonne idée de ne pas jumeler deux programmeurs novices ensemble jusqu'à ce qu'ils atteignent un niveau spécifique déterminé par l'équipe.

Sinon, la programmation par paires peut être une excellente idée en supposant bien sûr que deux gars sont prêts à partager ce qu'ils savent. Non seulement c'est un excellent moyen de tenir tout le monde informé du code source, mais il constitue également un bon endroit pour de nouvelles idées et discussions.

minusSeven
la source
Les développeurs de faible niveau de compétence sont moins susceptibles de copier et coller lors de la programmation par eux-mêmes? C'est généralement ce qui se passe lorsque personne ne regarde.
JeffO
1

Tant que les membres de l'équipe se respectent, la programmation en binôme peut être bénéfique quels que soient les niveaux d'expérience des programmeurs. Même si un programmeur junior ne repère que quelques erreurs de syntaxe (que nous faisons tous!) Devant le programmeur plus expérimenté, c'est encore du temps gagné dans la compilation du code.

Je pense également que cela peut ouvrir l'attitude d'un programmeur envers les capacités des autres membres de son équipe, surtout s'ils ont l'esprit ouvert et s'attendent à ce que tout le monde puisse vous apprendre quelque chose.

Le Chevalier Noir
la source