samedi 13 mars 2010

La revue de code, ce n’est pas l’Inquisition !
L’une des bonnes pratiques des méthodologies Agiles et de l’Extrem Programming, est la révision de code.
Mais, souvent la révision de code est utilisée comme une forme d’Inquisition, une forme de dictature par certains membres de l’équipe.
Les principes qui sont derrière la révision de code ont le but de vérifier le respect des standards de programmations, de la simplicité des algorithmes et ainsi que de la compréhension générale de l’ensemble du code produit par l’équipe.
Elle permet aussi d’augmenter les compétences générales des membres de l’équipe. On peut s’en servir pour aider et former des membres qui ont moins d’expériences.
Mais, malheureusement, dans certaine équipe, certains coéquipiers qui ont un égo trop grand, se serve de cette technique comme une forme d’Inquisition en vers les gens moins expérimentés ou moins forts techniquement qu'eux.
J’ai même vu que certains l’utilisaient pour régler des conflits personnels. Quelle horreur !
La révision de code doit suivre aux minimums ces règles.
  1. Le réviseur doit avoir une compétence égale ou supérieure de celui dont il révise le code. C’est aussi un exercice de formations.
  2. La révision est une recommandation, n’est pas un acte de dieux. Encore moins une condamnation par les pairs. La personne révisée peut, et a le droit de discuter toutes les corrections demandées par le réviseur. Il est même recommandé que cette discussion s’effectue en équipe.
  3. Le réviseur NE DOIT JAMAIS modifier lui-même le code révisé. S’il y a des modifications ou des améliorations à faire sur une partie ou l’intégralité du code, c’est la responsabilité de l’auteur du code. Je répète, le réviseur NE DOIT PAS CORRIGER lui-même le code révisé. Si on veut que l’auteur s’améliore, il doit lui-même faire les corrections.
  4. La révision de code ne doit pas se limité au fichier de code (le support) mais aussi sontintégration, tant organique que fonctionnel dans le reste du projet. L’intégration organique est respect de la culture technique du projet. L’intégration fonctionnelle est le respect de l’objectif de la fonction, de la classe révisée.
  5. On doit aussi inclure dans la révision de la qualité de la documentation. Pas la révision du français ou de l’anglais, oui, la documentation doit être bien écrite. Mais, elle doit aussi aider la compréhension du code qu’elle documente. C’est souvent la partie que les gens oublient. Pourtant, elle est aussi importante que le code lui-même. Car, elle servira à la maintenance de celui-ci.
  6. La recommandation de révision doit toujours être faite par écrit. Premièrement, un texte écrit permet de réduire l’émotivité que les paroles directes ne permettent pas toujours. Et deuxièmement, le texte pourra servir pour le suivi, l’augmentation de la connaissance générale et bien sûr la maintenance du code.
  7. Mais le plus IMPORTANT, toute transmission de révision à une autre personne doit se faire dans le plus GRAND RESPECT. Je dis toujours à mes réviseurs, imaginer que c’est pour vous que vous recevez cette recommandation que vous avez écrite. Donc, comment aimeriez-vous la recevoir ?
En utilisant, cette technique dans un profond respect de tous les membres de l’équipe. Nous allons t’en renforcer la compétence moyenne de l’équipe que de l’esprit d’équipe.
Car, lorsqu’il y a confiance mutuelle au sein de l’équipe, les membres de celle-ci n’ont plus peur de demander de l’aide. Cette demande s’effectue tout naturellement.
De plus, la qualité va aussi augment progressivement. Ce qui va réduire tant le temps de révision que le temps de corrections subséquentes. L’expérience m’a démontré que si on prend le temps de bien le faire et surtout dans le fait dans un profond RESPECT, cette technique est plus que profitable.

2 commentaires:

gsempe a dit…

Merci pour cet article intéressant. C'est la première fois que j'entends parler de l'intégration organique. Pourrais-tu m'en dire plus ou me guider vers une définition?
So tu corriges les coquilles et rajoute les mots manquants ton article sera parfait ;-)

Génération Agile a dit…

On parle souvent d'un code qui compile, un code qui passe à travers des processus d'intégration continue et les tests automatisés.

Mais, il devrait aussi respecter les principes de découpages que l'équipe c'est attendue tant au désigne (architecture des classes).

Je travaille souvent comme architecte logiciel. Malgré, toutes mes compétences, je sais très bien qu'il m'est impossible d'identifier toutes classes à construire.

Donc, l'intégration organique, c'est la qualité transparente des ajouts qui sont effectués par d'autres.

Mais, aussi tous les outils qui sont nécessaires à la vérification de son traitement. Une classe de traitement devrait aussi avoir les classes des tests, tant unitaires que fonctionnels.

Une classe est bien plus que le fichier dans laquelle il a été écrit.