aot 2009Monthly :

Agile 2009 and GreenPepper Sonar

As mentioned on Sonar’s blog, we are at Agile 2009 and we have a booth to demonstrate our products including GreenPepper and the newly released plugin for Sonar. We can also show you Sonar itself and the results on GreenPepper itself. The results are pretty good, not too much technical debt ;)

You are also invited to attend the conference given by Erik Lebel and Isabelle Therrien on Scrum: “From anarchy to substantial development: Scrum in less than ideal conditions“. Read the full article. It will be held next Thursday (August, 27th) from 9:00 to 9:45 in room Plaza A (East Tower).

Follow our coverage of the conference here.

Agile 2009 – Un peu de français

Salut Agilistes,
La grande conférence Agile débute lundi qui vient à Chicago. Je suggères d’utiliser #agile2009fr pour twitter en FRANÇAIS durant la conférence.

Si vous êtes de la partie, n’hésitez pas à assister à la présentation de Érik et Isabelle (from anarchy to substantial development: SCRUM in less than ideal conditions) et à passer par le kiosque de GreenPepper et Urban Turtle. Nous organisons une soirée informelle FRANCOPHONE (plaisir assuré) mercredi soir … plus de détails au kiosque.

Je profites de l’occasion pour vous indiquer que j’anime un tout nouveau podcast francophone de discussion sur le développement Agile et les principes lean qui se nomme VoxAgile. Vous pouvez écouter la première émission. Pour faciliter le téléchargement, il sera bientôt disponible sur iTunes.

Bien cordialement,
~françois

Go beyond JIRA with Minyaa

Pyxis Technologies is proud to announce the release of its latest software : minyaa.

Minyaa is a plug-in suite that allows Atlassian JIRA users to benefit from more flexibility and functionalities than ever before.

Minyaa will allow you to go even further in the set up of JIRA: easier to enter worked time, more flexible set of workload reports, better control of issue edit, improved project management and more.
Minyaa offers two modules available today:
- Minyaa TIME : the most effective way to manage time on your projects
- Minyaa WORKFLOW : the most effective way to define your workflows
And to come: Minyaa PROJECTS and Minyaa SPREAD.

For a free 1-month trial and more information or pricing, please visit Minyaa web site at http://www.minyaa.com

Souffrez-vous de Scrum flasque?

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!

Sur quoi on met des points?

C’est un débat qui semble être éternel dans la communauté Scrum, car comme beaucoup de choses, il n’y a pas d’indications claires à ce sujet dans les bouquins. Et c’est tant mieux, c’est ce qui fait de Scrum une méthode flexible et adaptable à chaque réalité. Dans chaque projet, il est possible de déterminer ce sur quoi on met des points, et donc ce sur quoi on calcule la vélocité.

Je vous annonce d’ores et déjà que je n’ai pas de réponse à cette question, j’ai surtout des questions et je viens chercher ici votre avis sur la chose.

Dans mon projet actuel, qui est distribué, nous utilisons Jira et GreenHopper et nous avons plusieurs types d’items au backlog.

  • Nous avons des Epic, des User Story et des Anti-Story, qui nous permettent d’exprimer les besoins des clients, les fonctionnalités qui apportent de la valeur d’affaires.
  • Nous avons des Task et des Bug qui nous permettent de répertorier les tâches qui n’apportent pas une valeur directe au client mais qui sont nécessaires au projet : le développement d’outils pour les développeurs, l’installation de frameworks et d’outils externes, l’accumulation de la dette technique et les défauts (qui viennent de fonctionnalités non terminées ou de régression causée par des nouvelles fonctionnalités).
  • Nous avons des Spike: du boulot de recherche timeboxé qui vise à atteindre un ou plusieurs de ces buts :
    1. débroussailler vaguement un sujet
    2. estimer une (ou des) stories, découper une épique
    3. réduire le risque
    4. faire un choix de technologie

Les User Story Points servent à mesurer la complexité relative des tâches attribuées aux développeurs. C’est un excellent moyen pour eux d’informer le Propriétaire de produit (Product Owner ) de la complexité des items sur lesquels ils vont travailler afin de les aider à prioriser leurs demandes. Ça permet ensuite de connaître la capacité d’une équipe (sa vélocité en points par sprint) et de planifier la quantité de boulot qu’on peut abattre à chaque sprint.

Les User Story Points ne sont PAS une mesure de la valeur d’affaires. Et ce n’est PAS un outil utilisable pour contractualiser une relation d’affaires ni un outil de reporting. Cela dit, passons au débat.

En ce moment, nous n’estimons que les Epics, User Story et Anti-Story en points. Le reste est estimé en heures. Mais on se pose la question : (1)pourquoi ne pas mettre des points sur tout? Après tout, le besoin est le même, quelque soit le type de tâche, on veut en estimer la complexité relative et permettre au Propriétaire de produit de faire un choix éclairé. Par contre, nous pensons que ce n’est pas pertinent d’estimer en points des Bugs. Nous sommes d’accord que ce n’est pas très utile dans ce cas, car les Bugs sont toujours notre première priorité, et que peu importe le temps qu’on y passera, il faudra bien se rendre au bout…

Ensuite, quand vient le temps de se poser la question du calcul de la vélocité, on se dit que ce serait dommage de priver le Propriétaire de produit de sa “vélocité fonctionnelle”. Comme le projet est en cours depuis 1 an et demi déjà, nous ne voulons surtout pas embrouiller ses statistiques. Alors nous avons pensé au concept de “vélocité technique”, qui nous permet de bien séparer ce qui apporte de la valeur d’affaires de qui n’en apporte pas directement. (Comme dit David, un de mes collègues sur le projet, la dette technique n’est pas une valeur ajoutée, mais plutôt du service après vente sur un produit à moitié défectueux). (2) Qu’est-ce que vous en dites?

Nous ne savons trop que faire à propos des Spikes et ici, nous avons (3) besoin d’avis externes et d’arguments.

  1. Option 1 : on met des points et ça compte comme vélocité fonctionnelle. Après tout, ça permet de réduire le risque, et c’est la première étape d’une épique. Et ça a de la valeur pour le client.
  2. Option 2 : on ne met pas de points sur les Spikes. C’est inutile, on a déjà une timebox pour ça.
  3. Option 3 : on met des points et ça compte comme vélocité anticipation. Un nouveau type de vélocité… compromis…

Dernière question : (4) Quel est selon vous l’impact de ces choix sur la motivation des développeurs de l’équipe? celle du PO?

XP-Days Paris 2009

Après 3 semaines de vacances bien méritées, je reprends la plume électronique pour consigner mes impressions sur les XP-Days 2009. Oui je sais, j’ai un peu de retard à blogguer sur cet évènement qui s’est passé en mai dernier… Je sais que bien d’autres ont déjà couché leur impressions sur leur blog alors j’essaierai de ne pas répéter leur propos, en donnant une version très personnelle de ces deux jours.

Ce fut la seconde fois que j’assistais à l’évènement et cette fois en tant qu’orateur. J’étais assez fier d’arborer mon teeshirt rouge pompier Pyxis, qui d’après certains témoins, pouvait se voir à des kilomètres à la ronde. Bon, depuis Anne-Laure m’a ramené une taille S de son voyage au Québec et j’espère que l’effet sera un peu plus atténué. J’ai principalement animé l’atelier XtremMiles ou autrement dit “séance de codage XP autour du fameux jeu des mille bornes“! J’avoue avoir été déçu par la faible participation du public à cet atelier : je mets ça sur le compte peut-être d’un manque de communication de notre part sur le déroulement de l’atelier, mais aussi par l’envie du public d’aller vers des sujets moins techniques? Eh… n’oublions pas que coder c’est l’activité la plus importante dans nos métiers : sans code, pas de produit, pas de service ;-) Précisons aussi que cette année, nous avions décidé de démarrer l’atelier avec la base de code générée l’année dernière… oups… on peut alors comprendre que c’est dur de reprendre le code déjà écrit par un tiers… mais n’est-ce pas là notre lot quotidien de développeur? J’aime beaucoup la formule qui définit la qualité de code de cette façon : “un code de qualité c’est un code qui peut évoluer facilement dans les mains d’une autre personne”… eh oui, nous sommes nous-même toujours enclin à trouver que notre code est beau, mais ce n’est pas le plus important : est-il “vraiment beau” pour un autre? J’ai pris pas mal de plaisir en codant avec Arnaud Bailly, Vincent Tencé, Yves Crespin et d’autres dont je ne connaissait pas le nom.

Ma seconde intervention fut une courte démonstration de GreenPepper, un produit Pyxis qui gagne a être connu en vertu de ses fonctionnalités avant-guardistes et de sa capacité à s’adapter à des tonnes d’outils du monde JAVA, .NET et très bientôt Ruby. C’est surtout Vincent qui a mené la danse, le test agile c’est vraiment son dada, il assure! Les outils pour faire des spécifications exécutables, du BDD ou du TDR murissent petit à petit. Je suis intimement convaincu que nous n’en sommes qu’au début et que demain, la validation manuelle des spécifications fonctionnelles ne sera qu’un lointain souvenir ;-)

J’ai eu le plaisir d’assister à la session de Géry Derbier sur “Les 90 minutes d’une équipe remarquable”. J’ai adoré sa prestation, son humilité et ses propos qui touchent juste : on ne mettra jamais assez l’accent sur la communication! Sans que Gery n’ait prononcé le mot de “Core Protocols“, j’ai bien reconnu ces outils mise en œuvre durant la session. Cette session m’a donné envie d’animer une session de ce genre à Grenoble (ce que j’ai fait depuis). L’objet de cette session était de donner des outils pour briser la glace et ouvrir les canaux de communication au sein d’une équipe en pleine formation.

J’ai assisté à la session “Scrum est-il dangereux?” présentée par Eric Lefevre-Ardant et Guillaume Tardif. J’avais l’impression d’assister à un jeu de rôle où deux camps s’affrontaient à coup de phrase chocs : il y avaient les “pros” et les “contres” de Scrum : une palme d’or tout de même de la meilleure interprétation à certains “contres” qui se forçaient outrageusement à dire du mal de Scrum ;-) J’ai pu voir alors certains de mes collègues (formateurs Scrum) devenir vraiment rouges, souffler ou bien répondre à devant tant de mauvaise foi. Certains témoignages marquants sur de douloureuses implémentations de Scrum m’ont toutefois ému. L’intervention dont je me souviens le mieux c’est celle d’Emmanuel Gaillot en réponse à :
“On ne peut pas dire qu’un outil soit dangereux, cela dépend de son utilisation! Cela dépend de la main qui le tient…”
Emmanuel répond alors “Et quand il s’agit d’un revolver, tu dirais la même chose?” ;-)
J’ai donc passé un bon moment, et au final, je reste bien persuadé que Scrum est un superbe outil pour notre profession, une réelle opportunité de rendre meilleures nos organisations, en particulier sur le plan humain et social.

En dehors des sessions, j’ai manqué de temps pour « rézoter »mais j’ai tout de même discuté un moment avec Jacques Couvreur et François Bachmann, qui m’ont complètement impressionné avec leur entreprise personnelle du jeu Alchimiste Agile, jeu qu’ils veulent commercialiser, c ENORME.

A l’année prochaine, sans faute pour un Agile France 2010 encore plus fun!!!

Scrum is like an onion…

Scrum stinks? I don’t think so.

Scrum makes you cry? I’ve seen it happen.

You leave Scrum out in the sun, it gets all brown, start sprouting’ little white hairs?

No! Layers! Scrum has layers!

The outer layer of Scrum is the high level process.  This includes the ceremonies of Scrum such as the daily scrum, the sprint review and retrospective. We can also include the product and sprint backlogs,   and burndown charts.  These things can be explained in a few minutes to a bunch of drunken friends at a party and they’d still remember it in the morning.

Going deeper into the next layer involves something that comes before the actual Scrum framework. Before diving into a Scrum project, we need to assemble a cross-functional team and create a common vision with the help of a competent Product Owner  and ScrumMaster.  A project launch, Sprint 0, or whatever you want to call it is needed to deliver the oh so important Project Charter.  Only then can a team slowly move from being a group of individuals working for the same manager to a group of professionals collaborating towards the same goals.

Our onion also has a technical layer to it.  The incremental and iterative development layer required in Scrum implies sound engineering practices.  At the top of this list of practices is testing.  If the product is not thoroughly tested, disaster will soon ensue.  If non-tested code is prevalent in the application, courage to refactor will be low and the end result will be a design dead code base.  The team must, at a minimum, be exposed to various practices such as Test-Driven-Development, Domain-Driven-Design and Agile Modeling.  The scrum team must deliver a high quality product every 4 weeks that responds to the client’s needs, and Agile engineering practices can help the team achieve just that.

Moving inwards gets a bit more stinky.  It always amazes me how such a simple framework can provoke so much change.  Changes are required not only within the the Scrum team but at all levels of the organization and resistance to change is often more prevalent with  upper management than any other sector. This is actually quite funny because upper management is the one calling us to “deliver” Scrum in the organization.

Scrum has a whole bunch of other layers but those are the first ones that came to mind. Not to mention that my eyes are quickly turning red!