InfOsaurus

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

vendredi 30 octobre 2009

Agile Tour Bordeaux 2009

Agile Tour 2009 Bordeaux

Jeudi 29 Octobre 2009, l'Agile Tour faisait étape à Bordeaux, au LaBRI. J'étais de la partie et ma foi, le bilan est plus que réjouissant. Au cours de la journée, les 150 participants ont pu apprécier :

  • Des petites viennoiseries et du café pour bien entamer la journée.
  • L'accueil des gentils organisateurs aux brassards roses très seyants ;-)

Mais surtout,

  • Une foule de présentations et ateliers intéressants et instructifs... on aurait parfois aimé pouvoir se dédoubler pour être dans plusieurs salles à la fois.

Du côté des coups de coeur, j'ai été bluffé par le retour d'expérience Scrum de Philippe Launay de la société Agfa. Réussir à introduire l'agilité dans un projet avec des équipes multi-localisées sur plusieurs pays, des milliers d'utilisateurs, un périmètre tentaculaire et en partant avec de sévères handicaps techniques et organisationnels relève du tour de force. L'amélioration continue des équipes permise par la méthode est assez spectaculaire, et les leçons à en tirer très instructives.


Badge Agile Tour

J'ai cependant regretté :

  • Ne pas avoir pu participer à la session TDD donnée par C. Couillard et J-B Dusseaut tellement c'était blindé de monde...
  • Certains ateliers alléchants (dont le "bateau ivre" animé entre autres par Raphaël Pierquin) très limités en nombre de places. Dommage, mais je n'ai pas perdu au change avec le retour d'expérience de Philippe Launay.
  • Un vidéoprojecteur rebelle a décidé de saboter la présentation "Contractualisation agile" qui du coup a pris du plomb dans l'aile malgré toute la bonne volonté de l'orateur...


Le mot de la fin

Au final, cet Agile Tour fut pour moi très instructif et enrichissant. Bravo aux organisateurs qui ont su rassembler autant de talents et favoriser rencontres et échanges d'expériences tout au long de cette journée très réussie !

mardi 27 octobre 2009

Tous des moutons ! Peut-être, et alors ?

Connaissez-vous la doyenne de l'agilité ? La super mamie des itérations ? La matriarche des rétrospectives ? Non ? Et bien laissez-moi vous présenter Linda Rising.

J'aime bien Linda car en plus d'être un peu barrée, elle nous emmène dans des sujets scientifiques originaux et passionnants qui restent tout de même en rapport avec une des choses qui intéressent la bande de geeks que nous sommes : les projets informatiques.

Cette fois-ci Linda revient pour nous parler des Placebos. Pas le groupe de rock, les médicaments... Il s'avère que ces traitements (en fait des non-traitements) sont employés plus souvent qu'on ne le pense par les médecins, et que leur effet se révèle dans certains cas autant voire plus efficace que celui de médicaments classiques. Un chercheur a essayé d'en savoir plus sur cet effet difficilement explicable, et en particulier sur les gens les plus susceptibles de développer un effet placebo. Il a appelé ces personnes les "moutons" (sheep). De manière assez singulière, au fil des recherches, les moutons se sont avérés être des personnes particulièrement créatives, innovantes, curieuses, ouvertes à de nouvelles idées et expériences. En somme, les plus enclins à appliquer avec enthousiasme le célèbre adage de Fox Mulder : "I want to believe".


Bande de curieux

Linda s'est alors aperçue que ce genre de bestiole constituait, entre autres, un assez bon portrait des enthousiastes de l'agilité. Et en effet le parallèle ne parait pas usurpé : les valeurs mises en avant dans les méthodes agiles sont l'ouverture d'esprit, le désir d'expérimenter en permanence, de tester et de tirer les leçons de ses actions pour s'améliorer. En y réfléchissant bien, cela relève d'une volonté primordiale de croire en ce qu'on fait, d'avoir foi en sa propre inventivité. Si nous n'y croyions pas un petit peu, nous ne mettrions pas autant d'efforts à essayer.

Mais du coup, les méthodes agiles ne seraient-elles pas elles-mêmes des placebos ?

Les équipes agiles ne fonctionneraient-elles pas uniquement parce que leurs membres, en bons moutons, s'auto-persuadent du bien fondé de la vision et de la démarche de leur méthode préférée, et avancent ainsi de manière plus sereine, plus impliquée et donc plus productive ?

Si c'était le cas, cela remettrait-il en cause l'efficacité intrinsèque de l'agilité ?

Est-ce qu'on devrait s'en inquiéter ?

La meilleure réponse à toutes ces questions consiste peut-être à se rappeler que l'effet placebo n'est pas seulement l'apanage des cachets en sucre et autres gélules remplies de farine. Même les vrais médicaments peuvent avoir un effet placebo, certaines recherches le montrent. Dans quelle proportion cet effet rentre dans le processus de guérison, cela dépend sans doute du traitement et de la personne, et le "vrai" effet est certainement très difficile à dissocier de la part de placebo.
Mais dans bien des cas, cette part existe bel et bien, et elle n'est pas forcément négligeable...

jeudi 22 octobre 2009

Impressions sur Visual Studio 2010

La béta 2 de Visual Studio 2010 étant sortie il y a peu, il était grand temps pour moi de voir ce que cette nouvelle mouture de l'IDE de Microsoft avait sous le capot.

Un tour sur la page de download de la béta, et après un processus d'installation classique mais efficace, la nouvelle interface s'offre à nos yeux.

Visual Studio 2010

Bon, à part une couleur bleu horizon du plus bel effet, on ne peut pas dire que la page de démarrage soit une révolution par rapport à Visual Studio 2008. Nouveau/Ouvrir Projet, Projets récents, quelques nouveaux liens comme la personnalisation de la page d'accueil, les habitués ne seront pas dépaysés.

Lorsqu'on ouvre un solution et qu'on commence à jouer avec la bête, petite déception : l'interface ne semble pas très réactive. Même si c'est pardonnable pour une béta, on constate à l'usage beaucoup de lenteurs et même quelques freezes momentanés (machine sous Windows Vista, Core 2 Duo 2 GHz, 4 Go de RAM). Peut-être la faute à l'IHM basée sur du WPF.

Mais voyons maintenant les principales nouveautés autour de ce qui nous intéresse le plus : la manipulation du code.


Navigation

Quick Search

Les développeurs de Visual 2010 avaient annoncé une navigabilité dans le code grandement améliorée, et c'est certainement un des domaines où le plus de progrès ont été faits. Voici les avancées les plus marquantes :

  • Quick Search : activée par un Ctrl-virgule, cette boite de dialogue permet une recherche intuitive avec suggestion de résultat lorsqu'on tape les premières lettres d'une classe ou les majuscules qui composent son nom. En fait, un passage incontournable pour naviguer entre vos fichiers/classes, tellement il est pratique.
  • Surlignage de références : lorsque le curseur se trouve sur une variable, méthode ou type, après quelques instants celle-ci est discrètement surlignée ainsi que toutes ses occurrences dans le fichier actif. Une aide visuelle non négligeable qui évite de chercher les références manuellement.
  • Hiérarchie des appels : cette nouvelle fonctionnalité affiche un arbre contenant les appels à la méthode/property sélectionnée, les appels au code qui l'appellent, et ainsi de suite. Cela évite de faire des "find usages" successifs lorsqu'on veut remonter une pile d'appels dans le code.


Refactoring

Smart tag

Au système d'affichage d'erreurs à la volée déjà existant, les développeurs de Visual Studio 2010 ont ajouté, exactement à la manière d'un ReSharper, des petites boîtes de suggestion (les SmartTags) qui lorsqu'elles sont déroulées proposent un menu avec diverses actions de refactoring et de génération de code.

Si certaines sont utiles en toute occasion (implémentation/héritage automatique, suggestion d'ajout de références...), d'autres sont clairement orientées TDD comme la génération de stubs de classe ou de méthodes qui n'existent pas encore.
Le raccourci pour les SmartTags est Ctrl-point-virgule.


Un tueur de ReSharper ? Pas vraiment

VS2010-ReSharper

Au vu de ces éléments, on pourrait penser que Microsoft a encore fait ce qu'il sait le mieux faire, c'est à dire copier les innovations de plus petits acteurs du marché pour les intégrer et les généraliser dans ses mastodontes. Le petit poucet innovant étant dans le cas présent JetBrains avec son ReSharper, plug-in tellement utile à la vie du développeur (il comportait déjà bon nombre des fonctionnalités de VS 2010 citées ci-dessus dès ses premières versions) qu'on avait du mal à s'en passer.
Le problème, c'est que Microsoft a copié cette recette à succès, mais en oubliant quelques ingrédients. Il manque à Visual 2010 tout un tas de petites fonctions de ReSharper qui me font dire que ce dernier sera toujours indispensable :

  • Pas de fermeture automatique des accolades
  • Pas d'autocomplétion des noms de variables avec un nom par défaut
  • Pas de go to Inheritor / base
  • Pas de surlignage des erreurs à la volée pour certains types d'erreurs (ex : non implémentation d'une interface)
  • SmartTags mal placés : par exemple sur le nom de la classe mère après les deux points d'un héritage, mais pas sur le nom de la classe fille donc peu visible
  • etc.

Au final, après quelques heures de manipulation de Visual Studio 2010, mon impression est qu'il n'est toujours pas aussi facile à piloter qu'un 2008 + ReSharper. Il manque cette réactivité, cette intuitivité qui font que l'IDE semble répondre au doigt et à l'oeil du développeur et lui apporte une productivité maximum.

Si l'on ajoute que JetBrains met la barre encore plus haut pour le futur ReSharper 5, je pense que le petit plug-in a encore de beaux jours devant lui...

mercredi 14 octobre 2009

DDD Vite Fait, les fondamentaux de Domain Driven Design

DDD Vite Fait

Dans mon précédent billet, j'évoquais l'importance à mes yeux de l'approche collaborative du développement logiciel qu'apporte Domain Driven Design et je vous parlais d'un travail en cours sur DDD.

Et bien le voici : DDD Vite Fait, première partie - les fondamentaux de DDD.

Ce livre (en version originale DDD Quickly, par A. Avram et F. Marinescu) présente tous les concepts et patterns qui forment la base de Domain Driven Design. Le texte est voulu comme une courte introduction - 54 pages tout de même ! - avec comme but avoué l'hégémonie planétaire de DDD de diffuser la vision initiée par l'auteur Eric Evans et faire (re)découvrir Domain Driven Design, approche de développement logiciel parfois mal connue en France.

Vous pouvez télécharger le PDF de la version française ici ou sur le site DDDFrance.

Un grand merci à Floyd Marinescu pour m'avoir autorisé à traduire son ouvrage, et rendez-vous dans quelques semaines pour découvrir la deuxième partie : DDD, notions avancées...

jeudi 1 octobre 2009

Smells DDD, quand votre domaine sent des pieds

Smell

En ce moment, je me replonge dans Domain Driven Design, l'approche du développement logiciel orientée domaine initiée par Eric Evans. Il m'est subitement apparu une chose que je ne m'étais jamais représentée auparavant, certainement parce que j'avais abordé le sujet avant tout par son aspect technique : le plus important à mon avis dans DDD, ce ne sont pas les patterns, c'est la philosophie de la modélisation collaborative du domaine.

Comprenez-moi bien, j'estime que les design patterns évoqués dans DDD sont brillants, ce sont des guides précieux pour développer un code du domaine clair, maintenable et faiblement couplé. Mais pour moi, l'essence de DDD ne réside pas là. Elle réside dans la collaboration étroite entre experts métiers, concepteurs et développeurs pour construire un modèle du domaine qui reflète la réalité et permet de résoudre de vraies problématiques métier. Elle réside dans la constitution d'un langage commun qui, en plus de faciliter la compréhension du métier par les personnes techniques, instaure dialogue et confiance au sein de l'équipe projet. Car je pense que c'est cela qui, au final, permet de faire du bon logiciel.

Je me suis sans doute heurté à ce constat car ce n'est pas du tout le cas dans l'organisation dans laquelle je travaille actuellement. Ca serait même plutôt le contraire. La forme de communication privilégiée est le fichier Word de besoin, de recette ou le ticket d'outil de gestion de bugs. Les conversations téléphoniques sont rares et ont souvent lieu en famille, entre développeurs ou entre experts métier. Sans parler de vraies rencontres entre développement et métier, inexistantes. Une méfiance d'origine floue entre les deux camps a installé une guéguerre perpétuelle MOE/MOA, les uns accusant les autres d'en demander toujours trop et de changer sans cesse de besoin ; les seconds soupçonnant les premiers d'être des tire-au-flanc. Du coup, l'idée de base chez la MOE est de se conformer à la virgule près aux documents, tels des actes notariaux, et chez la MOA d'en fourrer le plus possible dans lesdits documents. Bien sûr, c'est la connaissance du domaine qui en pâtit, tant l'incompréhension est grande. Il est même surprenant de voir que des développeurs avec plusieurs années dans l'organisation n'ont qu'une vision parcellaire et approximative du métier. Au final, le résultat se ressent dans la qualité du logiciel.

D'ailleurs - et ça ne s'applique pas seulement à mon exemple - de tels problèmes refont souvent surface sous la forme de code smells qu'on pourrait appeler Domain smells. Je me suis amusé à en recenser quelques-uns :

  • Domaine fantôme : ça peut paraître abérrent, mais il n'y a pas de couche domaine dans le projet dont je parle, en partie à cause de la technologie employée. Le métier est fondu dans la masse du reste du code. Il va sans dire qu'une couche domaine séparée est indispensable, pour toutes les raisons de découplage, de lisibilité... qu'on peut imaginer.
  • Domaine râpé : On constate aussi parfois que des bouts de domaine sont saupoudrés dans des couches différentes, le plus dur étant de ne pas être tenté d'en mettre dans la couche présentation. Même si ça peut être justifié, il vaut mieux pour la maintenabilité de l'application conserver au même endroit tous les éléments liés au domaine.
  • Domaine indéchiffrable : un des principes de DDD est que le code du domaine doit être clair et compréhensible, et donner tout de suite une vision d'ensemble à celui qui y jette un oeil. Malheureusement ce n'est pas toujours le cas, souvent à cause d'une représentation brouillonne du domaine dans le code dûe à un manque de dialogue avec les experts métier. De plus il est facile de se perdre en créant toujours plus de helpers, de services et autres gestionnaires qui embrouillent la compréhension du domaine.
  • Abus de notion : qui n'a jamais été confronté au mot-valise du domaine, à la notion métier un peu floue qui se retrouve toutes les trois lignes de code dans chaque module de l'application ? Comme si un développeur avait trouvé que le mot sonnait bien et décidé de l'utiliser aussi fréquemment que possible. C'est souvent le signe d'une modélisation pas assez en profondeur, d'un concept du domaine qui recouvre trop d'aspects et devrait sans doute être subdivisé.
  • Frères jumeaux : parfois c'est l'inverse, deux mots différents sont employés à travers l'application pour recouvrir la même notion métier. Cela peut mener à penser qu'il s'agit de deux choses différentes, ce qui est source de confusion. Convenir d'un seul terme précis et bien identifié permettra d'éviter les malentendus.
  • Déphasage de concept : ce smell se fait sentir lorsqu'on interroge un expert métier sur une notion présente dans le code du domaine, et qu'on s'aperçoit qu'elle est en total décalage avec la réalité, même si l'application semble se comporter correctement pour l'utilisateur. Il peut s'agir d'une mauvaise interprétation ou d'une supposition hasardeuse de la part d'un développeur. En tout cas, le code est à reprendre et la communication est à revoir.

Je vois d'ici certains dire "C'est bien beau, mais les experts métier ne sont pas souvent disponibles et une communication écrite restreinte est mieux que pas de communication du tout." Bien sûr, mais après tout, n'est-ce pas dans l'intérêt de la personne métier d'avoir une collaboration aussi efficace que possible avec le développeur qui réalisera l'application pour lui ? N'est-ce pas primordial de s'assurer qu'il est au diapason de la réalité du domaine ?

Même si l'expert métier ne peut pas se rendre souvent disponible, il devrait l'être autant que faire se peut. Une solution au problème pourrait être de timeboxer les scéances de conception collaborative. Parfois, un dialogue d'une demi-heure bien cadré et sans perturbation peut être plus efficace qu'une réunion décousue de deux heures, qui aura pourtant demandé plus de disponibilité à l'expert du domaine...

mercredi 30 septembre 2009

Formation Scrum Master par Pyxis

Formation Scrum Master Pyxis

Il y a quelques jours, j'ai eu la chance de suivre la formation Certified Scrum Master donnée par François Beauregard, fondateur de la société Pyxis. Le tout se déroulait dans un bel endroit, le Centre culturel canadien situé à deux pas des Invalides.

Au programme de ces deux jours très remplis, théorie (rôles, cérémonies, artefacts, 4 piliers de Scrum), bonnes pratiques, ateliers, séances de questions/réponses avec le formateur... Du forfait agile au sprint zéro en passant par les équipes distribuées, de multiples débats ont été soulevés. J'en aborderai peut-être quelques uns ici.

Au-delà de l'aspect formation certifiante (que François a d'ailleurs beaucoup mitigé), je suis surtout reparti tel un gamin après une récréation fructueuse, avec un sac de billes Scrum bien rempli !

Centre culturel canadien La salle de formation Atelier Product Backlog Atelier Product Backlog Les post-its de clôture

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...

samedi 12 septembre 2009

Retour sur .NET RIA Services

Il y a peu, nous avons décidé au sein de notre équipe de faire migrer un projet en cours de développement de Silverlight 2 vers Silverlight 3, ce dernier étant sorti en release officielle au courant de l'été. Contrairement à ce que nous craignions, l'opération s'est bien passée, notamment grâce à cette petite checklist bien utile. Une fois les tools Silverlight 3 installés, l'assistant de conversion de Visual Studio s'occupe d'à peu près tout, sauf quelques mises à jour à faire si vous utilisez des services WCF.

Silverlight

Mais une autre question s'est posée à nous : fallait-il transformer nos services WCF Silverlight 2 (assez lourds à manipuler et à mettre à jour) en RIA Services ? En effet ce nouveau framework applicatif paraissait contenir plein de bonnes surprises pour nous faciliter la vie. Utilisant pour prendre la décision une méthode un peu débile mais qui marche, à savoir un tableau avec une colonne + et une colonne -, voici ce que nous avons obtenu :

Du côté des avantages :

+ Un découpage clair des couches et un système de DomainContext qui peut se marier avec du MVVM, du MVC ou même du MVP (solution que nous avions retenue).

+ Les classes clientes des services côté Silverlight sont automatiquement générées lors du build des services, pas de référence de service à ajouter ou mettre à jour contrairement à du WCF classique. Lors du passage sur un serveur d'intégration continue ou de recette, on s'ôte aussi un gros poids puisque la mise à jour des références vers le nouvel emplacement des services n'a pas lieu d'être.

+ Tout un tas de facilités introduites aussi bien au niveau de l'interrogation des services que de la mise à jour des entités.

+ Exceptions de services WCF mieux gérées qu'avec Silverlight 2 (le retour d'exceptions du service vers le client Silverlight n'était tout simplement pas géré) et Silverlight 3 (où il faut surcharger un comportement pour générer le bon code d'erreur à renvoyer au client).

+ Meilleure prise en charge des rôles et droits utilisateur...

Les inconvénients :

- RIA Services est encore en CTP, pour une sortie pas prévue avant 2010 (!)

- Il faut une petite bidouille pour installer RIA Services sur un Visual Studio français.

- Une testabilité ... à tester. Le mocking des DomainServices n'a pas l'air évident même si Nikhil Kothari a proposé une solution sur son blog.

- Mauvaise intégration avec ReSharper : il faut inclure les classes clientes générées par RIA Services dans le projet Visual Studio sinon ReSharper ne retrouve pas ses petits.

Tout compte fait, ça a beau ne pas être une version finale, les avantages et les gains de temps induits sont tels qu'on ne voit pas comment trouver le courage de s'en passer ! Reste le problème de la stabilité d'une CTP et de la nécessité de repenser les services, qui peut, on le comprend, en rebuter certains. Toutefois, dans un projet très peu critique comme le nôtre, le risque semble en valoir la chandelle.

page 3 de 3 -