InfOsaurus

Aller au contenu | Aller au menu | Aller à la recherche

mardi 22 septembre 2009

Agilité et développement durable, victimes de leur trop bel emballage ?

Il y a peu, j'entendais Cécile Duflot, secrétaire nationale des Verts, parler de développement durable dans une émission. Selon elle, ce terme a été dévoyé. Agréable à l'oreille, exprimant à merveille l'idée d'un système économique plus respectueux de l'environnement, il a été repris par toutes les multinationales qui se revendiquent maintenant développement durable à l'apparition de la moindre bribe de carton recyclé dans un de leurs produits. Un exemple frappant est celui du groupe Pinault-Printemps-Redoute, qui s'est royalement offert plusieurs minutes d'auto promotion un peu usurpée dans le générique d'ouverture du film Home de Yann-Arthus Bertrand.

Packaging

Depuis quelques temps, on a l'impression qu'il se passe la même chose avec les méthodes agiles. Dans les plaquettes commerciales, sur les sites Web, dans les offres d'emploi des sociétés informatiques, Agile est partout, il est devenu très tendance d'être agile même si on ne comprend pas un traitre mot à ce que cela veut dire et qu'on est la société la moins bien placée du monde pour en parler. Autre marqueur inquiétant de l'inflation du buzzword, lorsqu'on discute du sujet avec certains responsables informatiques qui n'ont pas encore "sauté le pas", ceux-ci s'excusent maintenant presque de ne pas être agiles, non pas parce qu'ils regrettent de ne pas profiter de la révolution apportée par la pratique de Scrum ou XP mais juste comme on s'excuserait de ne pas être à la page, de ne pas posséder la dernière BMW ou le dernier IPhone top tendance.

Et c'est vrai que le mot Agile sonne diablement bien, trop bien diront certains. Quelle solution adopter contre cette surexploitation qui finit par lui faire perdre tout son sens ?

Pour revenir à Cécile Duflot, elle a ensuite expliqué ce qui avait émergé en réaction à ce contexte de surmédiatisation et d'aseptisation de l'écologie. Puisque tout le monde était développement durable, être développement durable ne voulait plus dire grand-chose. C'est alors que certains écolos ont repris et donné de l'écho à l'idée de décroissance - qui existait déjà depuis fort longtemps. Le mot décroissant paraissait tellement brutal, soulevait un tel nuage d'a prioris négatifs à la fois chez le grand public et chez les acteurs économiques, qu'au moins aucune multinationale ne s'amuserait à le reprendre à son compte.
Le problème avec les visions radicales, ou dont l'appellation évoque tout de suite la radicalité, est qu'elles sont condamnées à rester cloitrées au sein de petits groupes d'activistes, et garanties ne jamais voir leurs idées se diffuser dans les moeurs. Une fois la notion de décroissance expliquée au grand public par les médias, le rejet et la méfiance n'ont donc pas tardé à apparaitre, les décroissants passant pour une bande d'illuminés - ce qui est bien résumé dans cette pub, hilarante, qui les ridiculise sans les nommer.

Vous vous en doutez, un concept similaire a fait son apparition dans le monde des méthodes agiles. Il s'agit de l'ARxTA (Artisanal Retro-Futurism crossed with Team-Scale Anarcho-Syndicalism !) proposé par Brian Marick. Il va sans dire que l'acronyme imprononçable et l'explication compliquée provoqueront des réactions mêlées d'effroi et d'assoupissement chez les interlocuteurs à qui vous parlerez de ce mouvement. C'est le but, et même si ce qui se cache derrière ces termes est passionnant et pertinent, on n'a vu jusqu'ici aucun courant marketing s'emparer du concept.
Pour autant, Brian Marick qui comptait en réalité administrer à la communauté une piqûre de rappel salutaire sur ce qu'étaient les fondements de l'agilité, n'a semble-t-il malheureusement réussi qu'à prêcher des convaincus. Son action radicale n'a pour l'heure pas vraiment fait contrepoids au dépouillement de tout sens qui semble parfois aller de pair avec le succès des méthodes agiles.

Pour conclure, je pense qu'il reste toujours à trouver un juste milieu entre mode marketée qui alimente un buzz déraisonné, et concept aride connu d'un petit cercle de nerds en chemises à carreaux. Les manifestes (agile, software craftsmanship, ARxTA...), même s'ils conviennent parfaitement à l'idée qu'il ne s'agit pas de normes mais juste de philosophies qu'on peut pratiquer au quotidien, semblent bien en peine d'éviter d'être vidés d'une partie de leur substance en même temps qu'ils deviennent "grand public". Certains affirment que la constitution d'entités plus formelles et garantes des bonnes pratiques, peut-être sous la forme de certifications, serait une solution. En tout cas, vu les récentes déclarations de l'Agile Alliance, on ne semble pas en prendre le chemin...

samedi 19 septembre 2009

Le mouton noir des pratiques d'ingéniérie

Un mouton noir parmi les brebis vertueuses

Il est en ce moment un nom qui provoque des frissons d'indignation chez les DSI et les managers. Une pratique qui, même dans certaines organisations ayant adopté intégration continue et TDD au sein de leurs équipes de développement, reste un tabou autour duquel gravitent beaucoup d'idées reçues. Cette pratique mal-aimée, du moins en France, c'est le Pair Programming.

Qui n'a jamais entendu la réflexion suivante : "La programmation en binôme, c'est payer deux développeurs pour faire le travail d'un seul. Ma direction n'acceptera jamais ça." Il y a peu j'ai même entendu de la part d'une société qui pratique pourtant d'autres techniques d'ingénierie agiles au quotidien : "Nous ne sommes que quatre développeurs, vous comprenez qu'on ne peut pas se permettre ce genre de façon de travailler !"

Pourtant, les études montrant l'efficacité du Pair Programming ne manquent pas. Le chiffre habituellement donné est celui d'un développement 15% plus lent qu'avec deux développeurs séparés mais qui produit 15% de bugs en moins. Quand on sait que le temps de debug et de test est souvent bien plus long que le temps de développement initial, un tel gain de qualité n'est pas négligeable. Des études plus récentes vont plus loin, affirmant que pour des logiciels complexes, le Pair Programming apporte en moyenne un gain de qualité de 48% sans qu'il y ait de différence significative au niveau des délais.

Au-delà des chiffres, il y a le constat d'amélioration omniprésent lorsqu'on pratique le Pair Programming sur une période de temps significative. Pour l'avoir expérimenté entre autres en tant que membre d'une équipe à la fois nombreuse (10 à 15 développeurs) et hétérogène en termes de maturité sur le projet et d'expertise technique, les effets constatés sont assez spectaculaires :

  • Diffusion rapide de la connaissance du domaine à tous les membres de l'équipe
  • Montée en compétence technique favorisée par le binomage expert-novice (le novice ne se contentant pas d'écouter, il agit aussi, lorsqu'il a le clavier)
  • Choix de conception et d'implémentation de meilleure qualité, fruits de la réflexion conjointe et de la confrontation d'idées des deux coéquipiers
  • Moins de perte de temps et de déconcentration, le copilote servant de barrière de sécurité pour rester dans les rails de l'objectif fixé
  • Emulation au sein de chaque binôme et de l'équipe entière

Bien sûr, il ne s'agit pas de partir la fleur au fusil pour une colocation à durée indéterminée avec le collègue avec qui on se marrera le mieux. Il y a une rigueur à adopter et certaines règles de conduite nous y aident. Par exemple, le fait de timeboxer systématiquement les scéances de pairing, et de changer de coéquipier régulièrement (toutes les semaines, tous les jours, toutes les demi-journées, à l'équipe de trouver son rythme).

Je ne suis pas non plus partisan du 100% Pair Programming. Il y a certaines tâches de codage, parmi celles les plus répétitives et nécessitant le moins de réflexion et d'arbitrages, qu'un développeur peut, avec autant de qualité et plus d'efficacité, assurer seul.
En revanche, le binomage me parait être d'un bénéfice tellement évident pour certaines autres activités que je ne vois pas bien comment s'en passer. Par exemple, lorsqu'il s'agit d'intégrer un nouveau membre dans l'équipe ou pour le transfert de compétences entre un développeur partant et son remplaçant.

Enfin, un des avantages du Pair Programming qu'on ne cite jamais, mais qui serait pourtant de nature à rassurer les responsables, est le gain de rigueur et de focalisation dans le travail accompli. Un développeur qui paire sera moins tenté d'aller consulter son facebook ou lire ses mails perso toutes les cinq minutes. D'une part par respect pour son coéquipier, parce qu'il n'a peut être pas envie d'étaler sa vie privée, et d'autre part parce que programmer en binôme, c'est fixer mutuellement un cap et s'y tenir. C'est toujours beaucoup plus engageant de se promettre conjointement avec un autre développeur d'arriver au bout de cette fonctionnalité avant la pause déjeuner, que de se le promettre juste à soi-même.

Dans ces conditions, on peut se demander pourquoi tant de structures, même celles qui se revendiquent agiles, n'adoptent pas le Pair Programming. Sans doute est-ce une aberration dans un système encore dirigé par la sacro-sainte mesure de la performance individuelle par rapport au temps de travail. Sans doute aussi les décideurs voient-ils inconsciemment dans des coéquipiers des gamins qui se font plaisir plutôt que des travailleurs.

Au moins pourraient-ils, comme le préconise Martin Fowler, se donner la peine de l'essayer :

My view is that you should try it and the team should reflect on whether they feel they are more effective with pairing that without. As with any new practice make sure you allow enough time so you have a good chance of crossing the ImprovementRavine.

mercredi 16 septembre 2009

L'épanouissement tribal, promesse des méthodes agiles ?

Totem

Le bonheur est à la mode. C'est un saint Graal que tout le monde, y compris notre président, cherche à toucher du doigt en ces temps difficiles. La France va mal, et il faut se doter des outils nécessaires pour mesurer et améliorer le bien-être de ses citoyens.
Les récents cas de suicides au sein d'une célèbre entreprise de télécoms témoignent plus précisément d'une zone sensible où beaucoup reste à faire en matière de bonheur et d'épanouissement personnel : l'entreprise. En effet, peu de salariés - même parmi les plus qualifiés comme les ingénieurs en développement logiciel - peuvent se vanter de s'accomplir pleinement à travers leur travail quotidien.

Quelle réponse les méthodes agiles, et Scrum en particulier, peuvent-elles apporter à ce douloureux problème ? En d'autres termes, quelle vision du bonheur en entreprise avons-nous en mettant nos lunettes Scrum, comme diraient certains ;) ?

Tobias Mayer, scrum master et coach agile, a publié le mois dernier un billet fort intéressant sur le sujet. A première vue, il semble y être question du task board, parfois plus connu sous le pseudonyme de Kanban : un objet qui, selon Tobias, est au coeur de la petite communauté formée par l'équipe de développement. On peut même comparer le task board à un lieu de culte sacré tant les fidèles se pressent aux rituels (les daily scrums) qui s'y tiennent.
Mais le constat ne s'arrête pas là. Tobias file la métaphore et dévoile que les méthodes agiles créent une organisation sociale similaire à celle d'une tribu, car elles permettent à chaque membre de l'équipe de satisfaire pleinement son besoin primaire de conversation, de débat, d'interaction. Et car la sensation d'appartenance au groupe, la formation de codes et de valeurs communes qui résultent du fonctionnement agile permettent de tirer le meilleur de chacun et contribuent à mettre en mouvement une force vitale au sein du groupe auto-organisé :

Scrum is about tribes, it is about building community. Each tribal member needs a sense of belonging, a personal quest. Whole tribes need gathering places, they need sacred objects, they need focus and they need pulse. Scrum supports that way of being. The task board, and its emergent environment provides the central life-force from which these things are born.

En somme, là où les méthodes de management de projet traditionnelles s'acharneraient à brider nos instincts par la division des troupes, par une bureaucratie implacable et l'introduction de nombreux tampons documentaires et humains empêchant la communication (l'archétype étant les collaborateurs séparés par des cubicles et ne communiquant que par fiches de suivi interposées), les méthodes agiles seraient un retour au naturel salutaire. L'agilité serait le meilleur moyen de respecter nos gènes et ainsi d'obtenir des résultats qu'aucun contremaître muni d'un fouet ou d'un dossier de spécifications de 500 pages n'atteindrait à moyen terme.

Je ne vois qu'une faille dans ce raisonnement ambitieux et brillant, et c'est aussi celle qui me fait parfois douter que les méthodes agiles prendront un jour le pouvoir sur la planète. Comment donner à tout le monde la possibilité d'appliquer l'agilité ? Comment faire du type qui assure seul la maintenance corrective d'une appli Cobol, une tribu Scrum ou XP ? Comment insuffler cette force collective à l'équipe d'intérimaires qui assure, micro-casques vissés sur les oreilles, le support technique niveau 1 d'une plateforme applicative et ne communique que par l'intermédiaire de tickets avec les gens du dessus ? Comment la batterie de développeurs chinois recopiant 3000 lignes de code à la minute peut-elle accéder à cette satisfaction professionnelle ?

L'épanouissement tribal est sans doute accessible, mais peut-être pas pour tout le monde...

page 2 de 2 -