La mise en chantier de nouvelles versions de nos outils s’est accompagnée d’un passage aux méthodes Agiles, dont Scrum pour la gestion de projet et l’extreme programming pour le développement. La « programmation extrême », ou extreme programming, a pour principe de base, entre autre, de pousser au maximum les « bonnes pratiques » permettant d’optimiser les développements .

Par exemple, la « programmation extrême » préconise la mise en place, autant que possible, de tests unitaires, d’une plateforme d’intégration continue ou encore de la revue de code.
Ce dernier point, qui est le garant de la qualité technique et fonctionnelle d’une application, a été mis en œuvre au sein de nos équipes par l’intermédiaire de la programmation en binôme (« pair programming »).

Effets directs du Pair Programming : la programmation en binôme impose un cadre de travail strict qui permet d’assurer une qualité optimum de différents points du cycle de développement informatique tels que :
la production d’un code de qualité (conception plus simple, moins de bugs, plus de maintenabilité), le partage des connaissances (tant techniques que fonctionnelles),
l’amélioration de la productivité des équipes tout au long du cycle de développement.

Et avantage non négligeable : cette méthode de travail assure généralement une bonne ambiance de travail 🙂

Comment ça marche ?
En programmation en binôme, deux personnes travaillent ensemble sur un même poste de travail. Le membre « pilote » saisie le code au clavier tandis que « l’observateur » (ou « navigateur ») inspecte en permanence le code généré par le pilote.

Les 5 étapes de réalisation d’un chantier en binôme :
1. La fonction à implémenter est définie de manière claire et précise (sous la forme de User Story). Sa réalisation ne doit pas prendre plus d’une demi-journée et le binôme doit se sentir capable de la mettre en place.

2. Le binôme se met d’accord sur la stratégie à adopter pour implémenter la fonction ; un plan de développement (succinct) est arrêté.

3. Le plan de développement est découpé en tâches unitaires qui devront pouvoir être effectuées en quelques minutes. Il ne doit y avoir aucune ambiguïté sur le rôle de la tâche ni sur la manière dont elle s’intègre dans le plan de développement.

4. Le pilote code pendant que l’observateur « surveille » et lui fait part de ses remarques. L’observateur note ses idées relatives à l’optimisation ou l’amélioration du code pour en discuter avec le pilote une fois la tâche unitaire terminée. Ces échanges et idées feront éventuellement l’objet d’un redéveloppement (refactoring), dans la mesure où l’amélioration apporte plus de performance, moins de code ou tout simplement une meilleure maintenabilité.

5. Les rôles changent souvent (au minimum chaque demi-heure au maximum chaque journée !) ce qui permet aux membres du binôme une meilleure appréhension de l’ensemble des petits détails techniques et fonctionnels de leur travail. Échanger les rôles permet aussi d’alterner l’intensité de travail.

La programmation en binôme s’intègre dans l’idéologie plus vaste de la propriété collective du code (« Collective code ownership ») ou de ce que l’on appelle la programmation humble (« egoless programming »).

Pour aller plus loin: de nombreux articles sur internet dont :

PairHero: A game of collaboration for pair programming …www.happyprog.com