Souffrez-vous de Scrum flasque?

email

Martin Fowler a publiĂ© un article sur son blogue qui prĂ©sente les symptĂ´mes d’un mal qu’il nomme le Scrum Flasque (Flaccid Scrum). J’ai vu les symptĂ´mes qu’il cite se manifester Ă  plusieurs reprises lors de divers mandat en clientèle chez des entreprises faisant une transition vers Scrum:

They want to use an agile process, and pick Scrum
They adopt the Scrum practices, and maybe even the principles
After a while progress is slow because the code base is a mess

Comme le mentionne Fowler, Scrum est un processus mettant l’emphase sur des techniques de gestion de projet et qui, contrairement Ă  Xtreme Programming, ne met dĂ©libĂ©rĂ©ment pas de l’avant des pratiques d’ingĂ©nierie spĂ©cifiques. Selon lui, les gens adoptant Scrum ont tendance Ă  croire que si le processus ne parle pas des aspects techniques, c’est qu’ils sont moins importants que le reste. Ainsi, rapidement, « No Big Design Up-Front » devient «No Design At All ». Et s’ensuit une dette technique qui ne s’arrĂŞte plus de grandir…

Que faire pour inverser la vapeur? Les pratiques XP (le Test-Driven Development, le refactoring, le pair programming, le collective code ownership) sont une rĂ©ponse possible et souhaitable. Toutefois, selon mon expĂ©rience, elle prennent du temps Ă  assimiler, tout particulièrement dans les grandes organisations ayant souvent connu un fonctionnement plus directif par lequel les dĂ©veloppeurs ont l’habitude de recevoir d’un architecte une grande partie des dĂ©tails de la solution Ă  rĂ©aliser. On demande la plupart du temps Ă  ces dĂ©veloppeurs d’apprendre TDD alors qu’ils vivent la pression d’un projet et qu’ils ont parfois des difficultĂ©s Ă  reconnaĂ®tre les symptĂ´mes d’un mauvais design et qu’ils maĂ®trisent mal les bases mĂŞmes de l’orientĂ©-objet. Comment faire pour aider les dĂ©veloppeurs ainsi conditionnĂ©s Ă  prendre en main une plus grande part du travail de conception? Et comment faire pour aider les Ă©quipes adoptant une approche agile Ă  minimiser et contrĂ´ler leur dette technique?

Pourquoi ne pas introduire des code reviews? Non, non, ne fuyez pas! Je ne parle pas d’un processus de revue de code Ă  la Fagan, extrĂŞmement rigide et coĂ»teux. Je parle plutĂ´t d’un processus lĂ©ger de revue par les pairs, et en partie au moins automatisĂ©. On ne parle presque pas des revues de code dans le monde agile parce qu’elles semblent souffrir de cette image dĂ©suète, dĂ©passĂ©e et poussiĂ©reuse. Une image de lourdeur tout ce qu’il y a de moins agile…

Pourtant, les outils d’inspection du code automatisĂ©s deviennent de plus en plus sophistiquĂ©s et aptes non pas seulement Ă  dĂ©tecter les erreurs de style, mais aussi Ă  mettre en lumière les duplications, les code smells de toutes sortes, les failles dans la couverture de test, etc. Par exemple, dans le monde Java, il faut dĂ©sormais considĂ©rer un outil comme Sonar, libre et gratuit, comme un indispensable, une aide monumentale Ă  la visualisation et l’identification de la dette technique s’adressant Ă  tous les intervenants d’un projet. Sonar consolide les donnĂ©es recueillies par plusieurs autres outils, comme Findbugs, Checkstyle, PMD, Cobertura et bien d’autres, les digère et les prĂ©sente sous une forme comprĂ©hensible et grandement utile.

En dehors des outils, pourquoi ne pas inclure dans notre dĂ©finition de done une revue de code « humaine » pour traiter en Ă©quipes des problĂ©matiques plus pointues comme le respect des requis, la qualitĂ© des tests, le respect du cadre architectural, etc. La compagnie SmartBear a produit un très bon papier prĂ©sentant des recommandations dans l’adoption un tel processus. Et d’autres outils Ă©mergent Ă©galement pour supporter ce type lĂ©ger de revue de code par les pairs Ă  mĂŞme l’IDE (Jupiter, ReviewClipse, Rietveld, CodeCollaborator, etc.) permettant par exemple d’associer des commentaires avec des lignes ou blocs de code. Certains de ceux-ci s’intègrent Ă©galement avec les systèmes de gestion des sources pour automatiser la revue de code avant ou après un commit.

Je crois fermement aujourd’hui que les revues de code, autant humaines qu’automatisĂ©es, sont un outil complĂ©mentaire et nĂ©cessaire durant l’apprentissage des techniques XP par une Ă©quipe de dĂ©veloppement. Elle sont une occasion en or pour un coach technique d’enseigner le repĂ©rage des code smells et une aussi belle occasion pour les membres de l’Ă©quipe d’apprendre en observant le travail des autres, de mieux communiquer, de se sentir comme faisant partie d’un groupe uni et organisĂ© et de se sentir engagĂ©s dans le dĂ©veloppement d’un logiciel de qualitĂ© supĂ©rieure. Allez-y! Redonnez du tonus Ă  votre Scrum!

à propos de marc-andré thibodeau

Je suis titulaire d’une maîtrise en informatique et compte plus de 12 années d’expérience en développement Java, plus particulièrement dans le cadre d’applications Web d'entreprise. Je possède d'excellentes compétences en conception orientée-objet et en intégration d’interfaces utilisateurs Web dynamiques et maîtrise un large éventail d’outils, de cadres d’applications (frameworks) et de bonnes pratiques de l’univers Java et du Web.
voir mon profil Â»