BodySplash.fr

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

samedi 20 novembre 2010

Bilan Agile Tour Bordeaux 2010

Je m'y prend bien tard, mais je me colle enfin à faire mon petit bilan de l'agile tour bordeaux, en tant qu'organisateur/orateur/spectateur. Je le fais bien sûr uniquement car je ne peux décemment pas faire mon retour sur l'Agile Tour Toulouse avant celui de Bordeaux :)

city_11.jpg

Organisateur

Le fait de nous y prendre très en avance ne nous a pas vraiment empêché de frôler plusieurs fois la catastrophe :)

Le programme a été très dur à monter : mélanger des sessions d'1h30, d'1h et 2h, c'était vraiment un sacré casse tête si on ne veut pas forcer les gens à rester dans la même salle toute la journée. Du coup, nous avons du mettre en concurrences certaines sessions que nous aurions préféré pouvoir proposé en suivant. Je pense qu'il va falloir que l'on revienne à un format plus homogène. Trouver un équilibre dans le niveau des sessions est également toujours un beau défis, mais l'agilité étant fondamentalement simple à apprendre mais excessivement difficile à digérer, je ne pense pas que l'on puisse vraiment proposer des sessions soit disant "pour experts". Soit on a la culture agile, et donc on sait que tout au plus, on va trouver à l'agile tour des pistes à creuser, soit on est au début du chemin, et dans ce cas l'agile tour va tenter d'insuffler les prémices de cet état d'esprit. L'Agilité s'acquiert sur une longue durée, et une journée comme l'Agile Tour ne peut en aucun cas remplacer un travail d'expérimentation et d'apprentissage de longue haleine.

Nous avons eu pas mal de demandes de sponsoring comme ça s'est vu. Je tiens bien à souligner que nous avons gardé une indépendance totale vis à vis d'eux: être sponsor ne donnait en aucun cas le droit de faire pression d'une quelconque manière sur le contenu de la journée. Le soucis du coup a plus été l'effet défilé pendant le mot du matin, nous verrons bien comment régler le soucis la prochaine fois.

Orateur

at2010speaker.jpgJe suis assez satisfait du retour d'expérience que Michael et moi avons animé. J'ai déjà écrit un retour à ce sujet sur le blog d'Arpinum, je ne vais pas trop y revenir. La difficulté tenait dans l'angle à adopter pour ce retour, car résumer 3 ans en 1h n'est vraiment pas évident. La vidéo, scindée en deux parties, est disponible avec les autres sur vcasmo.

Spectateur

Comme on peut s'en douter, je n'ai pu voir voir grand chose, ce qui est excessivement frustrant. J'ai tout de même eu l'occasion d'entamer quelques conversations intéressantes, même si parfois un peu écourtées.

Kata marrant, par la paire Gaillot/Perret :

Je ne pensais pas pouvoir autant rire devant un kata. J'ai eu littéralement mal aux côtes en les regardant. Il est juste dommage qu'il y eu une grosse baisse de régime au bout d'un certain temps, mais dans l'ensemble, c'était juste énorme. L'idée était donc de jouer un kata classique, mais y ajoutant toutes les 5 minutes des contraintes inventées par le public en les piochant au hasard. Cela a entrainé des moments épiques que j'aurais vraiment du mal à décrire correctement ici. Le reproche qui a été fait à cette session est que passé le côté fun, finalement elle ne servait à rien : impossible de convaincre un timide du tdd de se mettre à l'utiliser, et les vieux routiers ont bien ri mais n'ont rien appris. Personnellement, je ne suis pas d'accord. Déjà, il se trouve que si, une personne dans la salle a découvert le TDD par cette session, et a été bluffée. Ensuite, cette session je trouve a servi d'une sorte de piqure de rappel : il FAUT s'amuser en travaillant. L'opposé du travail n'est pas le jeu, mais l'oisiveté. S'amuser en travaillant est indispensable pour le rendre intéressant, et par la même nous permettre d'être plus productif, plus créatif et nous faire prendre le recul nécessaire à mieux appréhender les situations. L'auto-dérision, la curiosité et le

Stubs et mocks montent sur scène :

Voilà un atelier original animé par le très toulousain Olivier Azeau. L'idée est de faire jouer les différents composants intervenant dans un développement piloté par les tests par des personnes réels, permettant ainsi de mieux mettre en évidence leurs rôles, interactions et motivations. Honnêtement, je n'ai jamais attaché une grande importance à faire la différence entre les différents doubles de tests, et cette session m'a inculqué ce savoir sans douleur.

Bref

Et, voilà tout ce que j'ai pu voir. Le reste du temps, j'étais soit à l'accueil, soit en train de discuter avec quelques personnes, ce qui est d'ailleurs également un format fort intéressant. Cela me fait dire d'ailleurs que l'année prochaine il faudra vraiment que j'aille faire un tour à l'Open Space.

Je garde une bonne impression de cette journée : pas mal de monde, un beau lieu, des conférences que j'aurai toutes eu envi de voir, des conversations intéressantes et des gens sympas. L'Agile Tour est toujours l'occasion de croiser pas mal de monde que je ne vois pratiquement que là, comme la très sympathique équipe toulousaine qui je l'espère se reconnaitra :) . Nous allons bien sûr réfléchir à comment améliorer encore l'expérience l'année prochaine, et tous les retours sont les bienvenues à ce sujet là.

vendredi 17 septembre 2010

Agile Tour 2010 Bordeaux

city_11.jpgVous le savez sans doute déjà, mais cette année j'ai rempilé pour l'organisation de l'étape bordelais de l'Agile Tour.

Comme il est indiqué sur le site, l'évènement aura lieu le 7 octobre dans les locaux de l'ENSEIRB. Au programme, il y a un peu de tout, et j'espère que nous avons réussi cet équilibre difficile entre sessions techniques et sessions plus généralistes. Je vous laisse regarder ça et faire votre marché.

Enfin, n'oubliez pas que comme l'année dernière, même si l'inscription est gratuite, elle n'en est pas moins obligatoire pour nous aider à mieux préparer la journée. Donc, inscrivez-vous :)

mardi 19 janvier 2010

Atelier "Embrassez le changement"

J'essaye de rattraper le retard pour faire un rapide retour sur un atelier animé par Colin Garriga-Salaün, membre très actif et bien connu des bordelais d'Okiwi [1]. Donc oui j'ai beaucoup de retard, car on parle tout de même d'un atelier du 4 janvier, et rapide non pas car je n'ai pas aimé, mais car il est difficile d'en parler sans spoiler son contenu.

Du coup, le but de ce bilet va plutôt être de tenter de vous convaincre d'aller le voir quand Colin va le refaire [2].

En ce qui concerne le déroulement, la soirée s'est divisée en 4 parties :

  • Présentations de différents modèles de changement
  • Jeu de l'oie modifié [3]
  • Debriefing libre et commun
  • Bières

oie

La présentation d'ouverture était peut être un peu dispensable, mais le jeu et sutout les réactions après coup valaient vraiment le détour. Je ne peux pas en dire trop, mais j'ai appris des choses sur des notions que j'aborde rarement comme le conditionnement culturel ou la force de l'habitude (entre autre). En plus, j'ai mangé des carambars.


source photo

Notes

[1] Co-organisateut de l'Agile tour Bordeaux 2009. Site ici

[2] pas de date fixée pour le moment, juste une promesse du principal concerné

[3] Plus de détails chez Satir Workshop, mais garre aux spoilers

vendredi 13 novembre 2009

Vidéos de l'agile tour

Choses promises, choses dues, quelques vidéos de l'Agile tour Bordeaux 2009 sont d'ores et déjà en ligne. 
Voici, en deux parties, la session que nous avons animée avec Charles sur TDD.
Pour voir le reste des vidéos déjà en ligne, ça se passe par là

lundi 2 novembre 2009

Les deux écoles de TDD

Je ne sais pas pourquoi ces derniers temps, j'entend pas mal de retours comme quoi le refactoring serait ralenti par les tests unitaires. L'explication derrière cette affirmation douteuse est qu'il faut bien souvent modifier les tests en même temps que le code de production.

J'ai tendance à croire que cette idée bizarre est née d'une des deux écoles de TDD. Ces deux approches ont été bien décrites par Martin Fowler dans son article sur les mocks et les stubs.

Je vais me permettre de le paraphraser ici :

  • L'approche classique essaye d'utiliser le plus possible de vrais objets, et un "double" s'il est difficile ou gênant d'utiliser l'implémentation réelle (par exemple, l'envoie d'un mail)
  • L'approche par Mock va utiliser dans tous les cas des doubles de test pour tout objet ayant un comportement intéressant.

Pour qualifier ces deux méthodes, Mister Fabien parle de tests Boîte Noire et de tests Boîte Blanche.

Appliquer systématiquement une approche par mock implique une chose : on teste plus la chorégraphie de notre objet que ses résultats. Nous allons vérifier que tel méthode de tel mock a été appelé avec tel paramètre, et que si nous retournons tel valeur, alors notre objet va se comporter de telle manière. Ce faisant, nous liions inexorablement notre test avec l'implémentation sous-jacente, rendant par la même plus douloureux le refactoring, car il nous faudra effectivement changer les tests en même temps que le code de production. L'écriture des tests peut être fastidieux en plus, vu la quantité d'éléments à doubler (constat fait par exemple lors du JUG Bordelais sur le sujet

Dans une approche classique, comme nous testons la plupart du temps le comportement extérieur, nous nous moquons éperdument de l'implémentation, pour vu que le résultat soit bon, et nous passons également moins de temps à écrire nos doubles.

vendredi 30 octobre 2009

Et voilà

L'Agile Tour c'est (presque) fini pour 2009. Aujourd'hui, Strasbourg et Lille accueillent les dernières sessions, et ensuite, direction l'année prochaine.

accueilDans tous les cas, l'édition bordelaise s'est de moins point de vue, assez bien passée. Je n'ai pu pratiquement rien aller voir personnellement, mais le retours que j'ai glanés étaient tout de même assez positifs. Un peu plus de 150 personnes ont fait le déplacement pour profiter des viennoiseries et des sessions.

[((/public/agiletour2009/._IGP0759_s.jpg

Certaines sessions ont eu plus de succès que prévu, et du coup, nous avons généré je pense un certain nombre de déçus. Nous essaierons de faire mieux l'année prochaine.

Il faudra aussi que je retienne ne pas réinstaller mon MacBook de zéro la veille d'une présentation sur TDD, car nous avons eu la joie de nous rendre compte en live de ce que j'avais oublié de reconfigurer. Ceci dit nous étions flattés de la vitesse à laquelle s'est remplie la salle, et de la présence d'Emmanuel Gaillot, grand stratiguerre des Dojos XP Parisens depuis 5 ans. Jean-Pierre Vickoff était également présent, nous avions donc beaucoup de pressions à avoir autant de sommités dans le public :) Si jamais toi lecteur hypothétique tu faisais partie de ces heureux élus, sache que je suis très friand de connaître tes retours. Je suis au courant de notre schizophrénie à faire partie de la Anti-If campaign alors que le design que nous avons obtenu à la fin de la session en était rempli :)

Il y aurait sans doute des milliers d'autres choses à dire, je vais m'arrêter là, en remerciant encore tous ceux qui ont rendu cette journée possible, et tous ceux qui ont fait le déplacement, montrant que l'agilité peut mobiliser les foules, même à Bordeaux.

P.S: allez, une photo bonus avec presque tous les orgas et orateurs : repas

mercredi 28 octobre 2009

C'est demain

logo

Je ne fais que répéter ce que vous savez sans doute déjà, mais demain, c'est le grand jour. Après plusieurs mois de préparation, voici que l'Agile Tour passe demain par le Labri.

Si tout se passe bien et que vous êtes inscrits, vous avez du recevoir les derniers détails par mail, sinon, nous commençons à accueillir tout le monde à partir de 9h (avec un petit déjeuner et du café pour faire bonne figure).

speakerA 14H, nous aurons la joie avec Charles Couillard de faire une présentation/démonstration de TDD, qui espérons le sera instructive.

Je n'ai pas grand chose à ajouter, si ce n'est de dire que demain est l'aboutissement d'une belle course de fond que j'ai apprécié faire avec les autres organisateurs.

vendredi 23 octobre 2009

Agile Tour Toulouse 2009

Michael a été plus rapide que moi pour faire un retour sur notre visite hier chez nos parains de Toulouse. Mais qu'à cela ne tienne, je m'en vais vous faire un petit compte-rendu de ma journée, sachant que nous n'avons de toute manière pas suivi nécessairement les mêmes séances.

L'organisation

Déjà, je tiens à féliciter, s'ils me lisent, les organisateurs, qui ont fait que cette journée s'est passée sans accroc, avec beaucoup de café, jus d'orange et autres petits gâteaux. A cause d'eux, nous voilà en train de réviser nos plans pour la semaine prochaine, c'est malin :) En plus, ils ont du être agile face à l'adversité en décalant l'XP Game de deux heures dans une nouvelle salle. Le timeboxing des sessions étaient parfait également.

L'IUT de Blagnac qui nous accueillait a vraiment de très beaux locaux en plus, très bien adapté à cet événement.

Les sessions

Voici mon petit programme de la journée :

  • Café
  • Les promesses de l'agilité, par Jean-Marie Damas
  • Introductions aux Core Protocols, par Emmanuel Etasse
  • Café, viennoiseries
  • L'agilité dans une SSII, par Guillaume Saint-Etienne
  • Repas équilibré donc, à base de crêpes et de flanc de légume en ce qui me concerne
  • Café
  • Dojo TDD, par Jean-Marie Damas et Olivier Azeau
  • Café et petits gâteaux divins
  • Enseigner l'agilité, par Jean-Michel Inglebert
  • Muscat et Olives

Les promesses de l'agilité

Pas grand chose à ajouter par rapport au retour de Michael. C'était une présentation ciblant les gens ne connaissant pas trop l'agilité, mais mettant bien en avant les "obligations" pour réussir la transition, à savoir adhérer à l'éthique agile.

Introduction aux Core Protocols

Je n'avais jamais eu que des retours indirects, et j'avais d'ailleurs un à priori très négatif sur eux, ayant le sentiment qu'ils sclérosaient la communication en l'enfermant dans un carcan. Premier constat donc, c'est que mes critiques finalement s'appliquaient plus aux implémentations particulières qu'aux protocoles eux-même, qui ne figent pas grand chose apparemment.

Ensuite dans le fond, je pense que je reste tout de même sur mon idée que la communication induite par les protocols n'est pas des plus naturelle. A la rigueur, je pense qu'ils peuvent servir à construire une équipe rapidement avec des personnes qui ne se connaissaient pas, mais passé une certaine période, on peut en abandonner une grande partie. Certains bien sûr gardent de la valeur : j'utilise régulièrement le decider, car il permet de trancher une décision sans s'éternier dans des débats stériles.

Le centre de cette session était plutôt le Perfection Game, que nous avons donc eu l'occasion d'appliquer par groupe de 6 après avoir jugé une magnifique interprétation d'Hotel California par notre orateur :) C'était sympathique, mais encore une fois, je ne suis pas sûr de voir l'utilité d'encadrer ces échanges du moment qu'on discute entre personnes matures et raisonnables.

Agilité en SSII

Encore une fois pas grand chose à ajouter à ce qu'a dit Michael: très bonne présentation, carré avec de bons arguments. Seul bémol peut être sur une question finale concernant les RAO : la réponse était un peu en déphasage face à la réalité, car on ne connaît pas le budget des clients à ce moment là.

Dojo TDD

A, là, je me suis éclaté :) Enfin, c'était peut être une auberge espagnole cette session : on y trouvait ce qu'on apportait. Le sujet proposé était l'implémentation d'une calculatrice, qui malgré son apparente simplicité pose pas mal de questions de design, et en tant que membre de la anti-if campaign, je me devais de me passer de switch :D (Frédéric ne pourra pas dire le contraire).

Bref, moi je me suis éclaté car c'est du code, et j'aime ça, et car je pairais avec quelqu'un de moins expérimenté, et j'ai adoré discuter des détails d'implémentation où de l'approche TDD.

Bien entendu, la session à la fin a eu son lot de sceptique, mais comment les blâmer? Il est clairement pas évident de lâcher ses vieilles habitudes d'upfront design et de s'appuyer avec une confiance presque aveugle sur les tests. Je ne suis pas devenu l'extrémiste que je suis du jour au lendemain.

J'ai beaucoup aimé aussi pouvoir comparer donc cette forme de Dojo avec celle que nous animons avec Charles Couillard la semaine prochaine à l'AT Bordeaux. Nous ferons une démonstration plutôt qu"une session ouverte, et je suis curieux de pouvoir comparer les réactions du public.

Enseigner l'agilité

Je n'enseigne pas l'agilité moi même, enfin pas dans un cadre de cours, et j'étais donc assez curieux de savoir comment on pouvait transmettre les valeurs agiles, finalement très pragmatiques quand on s'est déjà confronté à quelques échecs, à des étudiants vierges de toute expérience. Pour résumer, je citerai l'orateur : "Enseigner les tests à un débutant, c'est comme enseigner l'humour à quelqu'un qui commence l'anglais". Je paraphrase assez mal, mais c'était ça l'idée : tester est un art subtile, et il est utopique de l'enseigner à de parfaits débutants. Par contre il semblerait qu'arriver en L2, là l'approche gagne le coeur de pas mal de monde. Peut-être est-ce donc une lueur d'espoir pour l'avenir? Nous pouvons rêver d'un monde où tous les développeurs pratiqueront les tests, dès la sortie de l'école, où les gens ne pratiquant pas tdd seront regardés comme des bêtes curieuses et dangereuses :)

mardi 25 août 2009

Vélocité

Le sujet est assez connu, mais il se trouve que lors d'un des derniers bilans, nous nous sommes tout simplement posés la question de savoir comment nous mesurions réellement notre vélocité, et en fait cette question n'est pas si simple.

Pour simplifier le débat, je vais partir du principe que nous chiffrons les histoires en jour/pair, sinon ça complique un peu trop la donne.

Si nous prenons Planning XP, nous pouvons lire que la vélocité est le temps passé sur des histoires terminées, alors que Scrum ou d'autres d'ailleurs préconisent plus d'additionner les points des histoires terminées. Voilà deux approches assez radicalement opposées: l'une ne prend pas du tout en compte les estimations passées, alors que l'autre ne s'appuie que dessus. Les deux approches demandent de toute manière que nous tendions à être précis dans nos estimations afin de respecter le contrat de l'itération, cependant, je préfère avoir une vélocité stable aux inconvénients d'une vélocité en montagne russe. En effet, il y a fort à parier que le temps passé sur des histoires terminées va rester globalement stable. Bien sûr, il va il y avoir quelques aléas en fonction de la justesse de nos estimations ou des chaos rencontrés sur la route, mais globalement la vélocité, une fois lancée, va rester sensiblement la même. Dans une approche par addition des estimations, la stabilité de la vélocité dépend énormément de la justesse de notre jugement, et on va se retrouver (et apparemment c'est le cas chez pas mal de monde), avec une vélocité en yoyo, avec un écart type vraiment important.

La stabilité permet de faciliter le travail du product owner, qui globalement sait toujours à quoi s'attendre pour planifier les itérations futurs. De plus pour le sentiment de l'équipe, elle n'a pas l'impression une semaine de ne rien produire, et l'autre de tout défoncer: il existe du cout une sensation d'un effort constant mais soutenable plutôt que de courses folles ou de marches de grands-pères.

Certains outils comme Pivotal Tracker pour contourner le problème propose maintenant la moyenne des 3 dernières itérations comme vélocité (en additionnant les points donc). Même si ça répond en partie à mon problème, je dois avouer que mesurer le temps effectivement passé sur les histoires est très intéressant, dans le sens ou cela permet d'identifier des gaspillages potentiels. Dès la première itération par exemple, on va sans doute voir apparaître qu'on a réussi seulement à travailler 2 heures par jour, alors qu'avec une technique en point, il va falloir attendre bien plus longtemps pour le problème devienne évident. Alors on pourrait me dire que ce n'est pas incompatible, on pourrait mesurer le temps passé réellement ET mesurer notre vélocité en point, mais, rappelons-nous qu'il faut savoir rester simple, et peut être ne pas multiplier les mesures/analyses/conversion etc etc. Quoique, peut être que comme ça le Scrum Master aura enfin du travail :)

vendredi 31 juillet 2009

La fin de l'agilité

Voilà un titre de billet bien pessimiste, surtout venant de quelqu'un co-organisant l'agile tour bordeaux, et pratiquant quotidiennement XP.

Laissez moi expliquer un peu mon pessimisme actuel. Commençons par deux exemples concrets : au cours de deux conversations différentes, avec deux clients différents, voilà les retours que l'on peut avoir en abordant le sujet de l'agilité :

  • "L'agilité, oui on connaît, mais on est beaucoup plus pragmatique que ça nous"
  • Ou bien : "L'agilité? oulala non mon bon monsieur, on veut faire les choses simplement nous".

Ces deux réactions sont authentiques, et même si je ne veux pas tirer de deux exemples une généralité, je me pose cependant la question suivante : Comment, alors que l'agilité avait pour but premier de revenir à des choses simples et pragmatiques, comment maintenant a-t-elle l'image de quelque chose de compliquée et éloignée de la réalité?

Mon embryon de réponse n'est pas neuf, mais je vais tout de même essayer de le résumer. Faisons un peu d'histoire voulez-vous? La première méthode agile, alors que le mot agile n'existait pas, était l'eXtreme Programming. Cette méthode avait ça d'assez magique à mes yeux, qu'elle réconciliait le développement avec la planification et la valeur métier. La première de XP Explained est assez explicite :

"Extreme Programming is about social change"

La première idée est donc de réussir à oublier nos anciennes habitudes, désapprendre ce que nous croyions être la bonne approche, et commencer à envisager notre manière de faire d'un oeil plus adulte. Peut être que l'habitude qui a le plus de mal à passer, c'est la sacro sainte séparation entre développeurs et chef de projet/architectes etc etc. Ce besoin compulsif d'être au-dessus des autres, et par la même de les prendre de haut : "oui môôôa tu comprends, je ne fais plus de technique, je suis chef de projet". Pourtant, le manifeste agile est là pour nous rappeler que "les meilleurs architectures, design ou spécifications émergent d'équipes auto-organisées". Le fait que cette phrase soit issue du manifeste, et non pas d'XP, montre qu'elle est normalement universelle : le manifeste est un consensus obtenu entre des professionnels n'entretenant pas nécessairement les mêmes visions.

Au fil des années pourtant, la mode a été de s'éloigner du pragmatisme et de la simplicité qui était le coeur de l'agilité. "On a pris du recul" diront certains, "on a théorisé" etc, etc. et finalement, c'est le bon vieux modèle pyramidale qui est revenu en force. Scrum, en enlevant les pratiques d'ingénierie pour ne garder que le planning a réintroduit cette idée de séparation entre le "management" et le développement. Le rôle de Scrum Master, quoi qu'on en dise, est un rôle de manager dont l'utilité dans une équipe auto-organisée est vraiment discutable. Ensuite, le rapprochement a été fait avec Lean, avec plus ou moins de bonheur. Même s'il y a des choses intéressants à prendre dans Lean, il ne s'agit en aucun cas d'une méthode agile applicable tel quel au monde de l'informatique. Pourtant maintenant c'est très à la mode de ne plus dire qu'on est agile, mais dire qu'on fait du lean. Prenez pour exemple cette vidéo. On y voit en fait, une présentation d'XP, de bout en bout, sans jamais le citer. Alors je ne doute pas que cette équipe fonctionne très bien, mais il n'empêche que cette vidéo est un mensonge : la clef de leur succès provient d'XP, pas du Lean.

Alors pourquoi est-ce que je tiens tant toujours à ramener XP sur le devant de la scène? Car l'agilité perd son sens, et les mauvais retours se multiplient d'équipes qui n'ont pas réussi à mettre en place l'agilité, car on leur a fait croire que ça ne demander pas de changements de techniques, ou une discipline d'ingénierie en acier trempé. Je reviens toujours à la charge, car c'est l'agilité qui va mourrir, du moins dans cette forme là, si autant de gens continuent à la répendre en passant à côté de ses concepts fondamentaux. Oui j'ai rencontré des architectes dans leur tour d'ivoire, des chefs de projet, des sociétés entières, se disant agile, alors que l'équipe de développement n'en avait même pas entendu parler. La diffusion sémantique fait son travail, et il me semble donc indispensable que de loin en loin, certains fassent des piqûres de rappel, pour demander "R U doin it rong?". Je pense que c'est le but premier du Craftsmanship manifesto.

Ce qui devient vraiment dommage dans cette histoire, c'est que nous tenions enfin une vision unifiée de collaboration de tous les acteurs nécessaires à la réussite d'un projet, l'abolition d'un sectarisme corporatiste, mais hélas, nous revoilà à nouveau face à la guéguerre "les techies vs les chefs", et ça, ça me rend vraiment triste. Est-ce qu'il sera jamais possible à grande échelle de dépasser ce réflexe puérile du "mon poste est plus gros que le tien?".


L'agilité va disparaître, mais XP finalement, restera en trame de fond pendant bien longtemps, car en fait, c'est déjà le cas

vendredi 15 mai 2009

Retour sur Bordeaux JUG TDD

Que d'acronymes dans ce titre. Hier soir, je suis donc allé pour la première fois à une réunion du JUG Bordelais car et d'une, je ne connaissais pas avant, et de deux, le sujet était TDD, et si vous me suivez un peu vous devez savoir que j'y accorde une certaine importance.

Pour mettre les choses au clair, le TDD est pour moi un point critique pour l'avenir de notre profession (oui carrément). Comme aime à le répéter l'oncle Bob, nous devons devenir des professionnels, et cela passe essentiellement par écrire du code propre. Hors comment écrire du code propre? Et bien pour le moment je n'ai pas trouvé mieux, et apparemment je ne suis pas le seul, que d'écrire les tests avant de coder.

Donc voilà le cadre posé, qui va me permettre maintenant de décrire ma déception. C'était un retour d'expérience sur un forfait mené normalement par les tests. Déjà, premier signe d'alarme, l'équipe s'est mise à tdd contrainte et forcée, car c'était une exigence du client. Deuxième point noir, personne dans l'équipe ne connaissait l'approche, du coup bien entendu, ils ont eut d'énormes difficultés à s'y mettre sans quelqu'un d'expérimenté pour montrer l'approche. Suite à cette présentation du contexte, on enchaine donc par une présentation un poil trop succincte de ce qu'est TDD. Ouf on a eu droit au moins un cycle test, code, refactor, mais le refactoring est à mon avis trop passé à la trappe. Disons plutôt qu'il était considéré comme acquis pour le public ou l'orateur, ce qui à mon avis n'était pas du tout le cas. Le plus gros défaut finalement et que cette introduction n'a montré tdd que comme une pratique de qualité, et pas d'architecture. Pire encore, cette présentation a été faite dans l'esprit que la qualité s'oppose à la productivité, ce qui est une des pires idées reçues de notre métier. La productivité passe par la qualité, inévitablement; j'y reviendrai plus loin.

Ensuite, s'en est suivi une partie bien trop longue à mon avis sur les problèmes que l'équipe avait rencontrés, et leurs solutions. Je pense que pour quelqu'un ne connaissant pas le sujet, toute cette partie a eu plutôt tendance à convaincre que tester, c'est long, cher et compliqué.

On finit ensuite par une métrique qui m'a obligée à réagir, encore une fois sur la productivité, à base de "regardez, l'application fait 3000 lignes, mais on a du faire 12000 de lignes de tests . Bouh la productivité de merde". Ok, alors premier point, je crois que l'on s'est bien rendu compte que productivité et nombre de ligne de code n'avait juste rien à voir. Piloter son code par les tests permet d'écrire du code plus concis et mieux structurer, et par la même moins gros qu'un code écrit sans les tests. Donc ces fameuses ligne de code que prennent les tests qui sont soit disant le mal absolu (on est pas payé à tester voyons), combien de lignes de code de production ont-elle économisées? Et à votre avis, entre un code qui fait juste ce qui est attendu, et un code qui en fait trop car il est parti dans les peut-être, lequel a le plus de chance de contenir des bugs? De plus, si on suit le cycle tdd: code de test qui suffit à être au rouge, code minimum pour faire passer, refacto; combien de temps passe-t-on dans le debugger? Oui ces grandes sessions de debugging, où l'environnement met plusieurs minutes à démarrer, où on pose des points d'arrêt à l'aveugle, où on rate son passage donc on doit recommencer; oui elles disparaissent pratiquement intégralement quand on mène correctement le développement par les tests. Pas un mot là dessus hier soir (enfin si, là j'ai pas pu m'empêcher de dire quelque chose). Autre gain de temps par tdd: on reste concentré. Plus de temps perdu car on papillonne sur trop de tâches en même temps: on reste concentré sur le test en cours, ce qui peut le faire passer au rouge ou au vert, et rien d'autre. Le fameux "turnaround" est ainsi réduit. Bien entendu, le gain final évident est qu'il est excessivement plus facile de découvrir et corriger les bugs quand on a produit l'application avec les tests qu'autrement.

Ah ce stade là, je tiens à féliciter la brillante intervention d'un des auditeurs, qui a tout de même sorti que comme les bugs, c'est de la maintenance, et que nous notre travail, c'est le développement, alors on en a rien à foutre de produire une application de qualité. Dixit le bonhomme, le client ne testant pas tout, il va accepter la livraison, nous donner le chèque, et ça nous suffit. Cette attitude à un nom: c'est de l'escroquerie, comme vendre une voiture d'occasion avec des freins prêts à céder. On a fait la vente, mais on a des chances de tuer le client. Cette vision est à mes yeux incroyablement limitée et pourrait presque s'apparenter à l'économie de la Camorra: un profit à très court terme sans considération pour les externalités négatives. Non seulement, le client ne reviendra sans doute pas, (je le sais, j'en récupère des déçus en ce moment), mais en plus, on donne une image de garagiste aux informaticiens. Vous avez déjà eu ce sentiment, en allant faire réparer votre voiture que vous allez vous faire truander? Et bien c'est exactement ce qu'est en train de devenir notre profession avec des attitudes pareils. Je crois que Michael a d'ailleurs bien répondu hier soir à cette remarque :) Je pourrai ajouter que je ne crois pas de toute manière en cette opposition développement/maintenance, et que la maintenant débute dès le premier commit, mais ce serait un peu hors sujet.

Une question également est passée à laquelle je n'ai pas eu le temps de répondre, c'était l'éternel "le client doit être mature pour accepter les tests". Ah ça je répond, que nous n'avons pas à vendre les tests. Nous n'avons pas à vendre au client que nous allons utiliser de l'intégration continue ou du refactoring. Nous n'avons pas à lui demander s'il préfère qu'on laisse un swicth à la place d'un polymorphisme, s'il préfère qu'on utilise eclipse ou netbeans Ce que je veux dire, ce que nous n'avons pas à lui vendre notre manière de travailler pour qui l'accepte. Il faut arrêter un peu de se plaindre tout le temps car on a pas l'autorisation de faire les choses comme on le voudrait. En tant que professionnels, nous sommes seuls en charge de notre manière de travailler. Nous sommes grands et responsables, et devons assumer pleinement le fait que nous avons un métier. La manière dont on l'accomplit techniquement regarde peu le client du moment que nous maximisons son investissement.

Pour conclure, j'ai tendance à penser que toute initiative pour faire découvrir TDD est bonne à prendre, mais la présentation d'hier soir animée par quelqu'un de très peu expérimenté dans l'approche, et qui apparemment du coup n'était pas du tout convaincu, à fait plus de mal que de bien à mon avis. J'ai conscience bien entendu que je ne prend pas de gants dans ce billet, et si je choque certaines personnes je m'en excuse, mais les commentaires sont ouverts, et puis si des gens du JUG me lisent, pourquoi ne pas organiser un contre débat?

P.S: toutes ces questions sont finalement des classiques, et Fabien avait déjà produit un billet sur le sujet il y a quelques temps pour répondre aux mêmes interrogations.

lundi 11 mai 2009

Agile tour

Ceux qui sont particulièrement à l'affût ont peut être noté via le groupe de discussion XP France, ou bien par le blog de fabien, que l'Agile tour cette année passera par Bordeaux. Il se trouve que je participe également à son organisation, donc même tarif ici que sur le blog de fabien: posez des questions, faite passer vos attentes/vos remarques, bref si vous avez des choses à dire, dite le :)

vendredi 8 mai 2009

Enquête sur les méthodes agiles

Je vais ici simplement relayer l'info, si vous ne l'avez pas eu, que le French SUG organise un sondage sur les méthodes agiles en france.

Bon personnellement, je le trouve sur certains points perfectible, mais ne crachons pas dans la soupe, et essayons pour une fois d'avoir des stats intéressantes sur l'utilisation de l'agilité en France. Je n'ai pas spécialement envi de gagner une Wii, mais si vous pouvez me mettre en parain, ne vous en privez pas :)

lundi 4 mai 2009

Osons nous montrer au grand jour

Car il n'y a plus de hontre à être Développeur :) Ainsi, j'assume et j'estampille.

exp

P.S: J'ai découvert ce joli petit logo très dans l'esprit XP par Denis Dolfus, et on doit un merci à Emmanuel Chenu

lundi 6 avril 2009

Scrum, c'est xp sans le côté geek

Je vais simplement ici vous conseiller de regarder la vidéo qui suit, (et merci à Fabien pour le lien). Le titre est provocateur, mais finalement assez vrai. Bref, je vous laisse en compagnie d'un des papas de l'agilité. Cliquez ici, si si.

vendredi 20 mars 2009

Bonne rigolade

Je sors de la lecture de cet article, et je dois avouer qu'il y a quelques passages qui m'ont bien fait rire. Le sujet est délicat, vu l'opposition souvent constatée entre CMMI et l'agilité, mais commencer un article tentant de venter la fusion des deux par il ne reste qu’un levier d’actions permettant de maximiser l’utilisation des ressources humaines et technologiques : Les procédures et les méthodes c'est tout de même bien se rater. Petite piqure de rappel, dans le manifeste agile, on trouve Individuals and interactions over processes and tools . Le reste de l'article est à mon goût un peu trop de la même veine, parlant énormément de processus, et rarement d'interactions.

Ensuite, sur le fond, je je vais gentiment botter en touche pour le moment, en plaidant l'ignorance :) La seule expérience (qui a dit confrontation?) que j'ai eu avec le CMMI était à mon avis bien trop caricaturale pour que je puisse en faire un cas générique. Tout ce que je peux dire, c'est répéter que si effectivement le CMMI favorise les processus et les méthodes comme le laisse entendre cet article, alors à mon avis il y a une certaine incompatibilité d'humeur.

lundi 16 mars 2009

La prolétarisation dans les sociétés informatiques

Je me permet ici de commenter cet article de Christian Fauré

J'aime cet article car il résume avec des concepts forts un problème que nous sommes nombreux à constater. Ceci dit, je ne suis pas sûr de croire en sa vision de "L'open source solution au mal". D'ailleurs Didier Girard non plus n'accroche pas complètement.

De mon propre petit côté, ce que j'ai pu observer dans le monde de java c'est l'adoption aveugle de solution comme Jboss "parce que c'est la norme". Dans ce choix, il n'y a eu aucun esprit critique, aucune réflexion par rapport au contexte, juste un "tout le monde l'utilise donc nous aussi". Bilan des courses, à avoir choisi un outil sans le connaître, et sans savoir ses possibilités, je me suis déjà retrouvé à devoir reprendre du code qui ne s'appuyait en aucun cas sur les possibilités du framework, et le rendait par là même relativement illisible et truffé de bugs très difficiles à traquer (surtout au niveau de la gestion des transactions et des threads).

L'enfer est pavé de bonnes intentions, mais des solutions comme Jboss ou même Spring participent activement à mon avis à la prolétarisation.

Fondamentalement, c'est l'esprit critique qui fait défaut. Certaines initiatives opensource sont effectivement issus de gens critiques rejetant une solution existante et proposant donc la leur (Je pense encore une fois à Spring, mais aussi à Castle Windsor, NHibernate et bien d'autres). Mais comment insuffler cet esprit à TOUS les développeurs? La plupart d'entre nous travaillons dans un contexte à 0 responsabilité où les choix sont fait par un chef par forcément éclairé. Dans un environnement qui ne favorise pas l'initiative, l'intérêt d'avoir un esprit critique acéré est finalement très limité (c'est presque un handicape en fait). Ca me fait d'ailleurs penser à la théorie X et la théorie Y.

A mon humble avis, l'agilité (vous vous demandiez sans doute quand j'allais y venir :)) permet justement de développer cet esprit critique. La recherche du plus simple qui fonctionne, le design incrémental, la volonté de s'améliorer en permanence sont à mon sens autant de valeurs et de pratiques qui peuvent réduire la prolétarisation. L'abolition aussi de la séparation architecte/développeur me paraît crucial pour obtenir des développeurs critiques. Mon credo serait sans doute "responsabilisez les gens, et alors ils deviendront critiques", et ça tombe bien car l'agilité redistribue les responsabilités.

jeudi 5 février 2009

Le débat continue

Apparemment, mes billets sur l'adoption de l'agilité ont un certain succès, donc je vais me permettre de vous donner un article intéressant d'InfoQ: Adopting the whole Enchilada, tout à fait dans la continuité de ce que je disais il y'a quelques jours.

Ce que j'apprécie le plus dans cet article, c'est la citation finale de Ron Jeffries:

... It is your precious context that is holding you back ...

Je l'aime car elle est dans ma grande série "cassons les idées reçues": ce vieux mythe du "ouais l'agilité c'est cool mais on a du l'adapater à notre contexte tu comprends". Oui c'est plus simple de changer la méthode plutôt que ce qui cloche réellement: le contexte. Et surtout ensuite blâmons l'agilité en cas d'échec.

vendredi 30 janvier 2009

Scrum vs XP le retour

Il y a quelque temps déjà, j'avais écrit un billet concercnant Scrum Vs XP. Peut-être l'avez vous lu, peut-être pas, mais l'essence de ce que je disais alors entre autre, était que je me méfiais de Scrum car il passait sous silence toutes les techniques d'ingénierie en se concentrant sur la gestion de projet. C'était un danger pour moi, car il me semblait, et me semble toujours, qu'il est impossible de réussir un projet agile sans les pratiques d'ingénierie qui vont bien. Comment travailler en itération si à chaque passage on ne fait que grossir la dette technique n'est-ce pas?

Je vous reparle de tout ça car il se trouve que Martin Fowler en parle aujourd'hui . Alors oui je vous link ça car vous vous en doutez, je suis fier d'avoir obtenu les mêmes concluions que Fowler :) Ceci dit, je vous le fait passer également car j'aime bien montrer que je ne parlais pas dans le vent, et que le phénomène que j'avais anticipé existe réellement. Fowler est plus dans le consensus que moi, et ne démonte pas Scrum. Mais personnellement, je maintiens ce que je disais: pourquoi choisir Scrum quand XP est complet et n'induit pas le risque d'oublier ou le planning ou l'ingénierie?

jeudi 29 janvier 2009

Moins d'idées reçus

Je vais ici faire bêtement de le résumé d'un résumé, mais allez jeter un coup d'oeil ici

Voilà? C'est fait? Bien. J'aime l'idée de casser le vieil adage qui consiste à croire qu'un bon travailleur/développeur/tout ce que vous voulez/ est bon parce qu'il reste jusqu'à pas d'heure, et/ou qu'il est capable de gérer plein de tâches en même temps:

If you switch attention from a primary task to a secondary one—from a program you're writing to an email that's just come in—the time it takes to complete the program increases by an average of 25%. Imagine the impact when many people now check email 50, 75, 100 times a day.

Je n'ai pas forcément grand chose à ajouter. C'est juste dans ma grande série du moment changeons le monde

- page 1 de 2