Un petit tour à Seattle…

La semaine passée, j’étais au sommet des MVPs à Redmond. Ne comptez pas sur cet article pour vous apprendre quelque chose de nouveau sur les technologies Microsoft : tout ce qu’on a vu était sous Non Disclosure Agreement. Par contre, quelques petites choses étaient publiables, et c’est l’occasion de faire le point dessus.

2013-11-20 19.38.29

Tout d’abord, la grande nouvelle est que les Patterns & Practices vont passer en Open Source. Les MVPs ont été les premiers au courant, et l’équipe nous a encouragé pendant la conférence à twitter la nouvelle, le site annonçant ceci officiellement étant lancé exactement à la fin de la session. C’est évidemment une très bonne nouvelle. Jusqu’à maintenant, c’est le Conseil de Lecture qui décidait du contenu selon des principes éditoriaux de Microsoft. Désormais, la ligne d’édition est fixée par le groupe, mais surtout le contenu des livres édités par Patterns & Practices est publié et enrichi dans un Git.

La deuxième grosse nouvelle (et c’est sorti officiellement, donc je peux en parler) est que Microsoft a passé un accord avec Xamarin pour que les applications téléphoniques basées sur Mono soient intégrables dans Visual Studio, et pour que les Portable Class Libraries soient échangeables avec eux. C’est non seulement une très bonne nouvelle pour nous développeurs, mais c’est aussi et surtout une reconnaissance du travail extraordinaire qu’on réalisé toute l’équipe dirigée par Miguel De Icaza.

La seule autre information librement publiable porte sur les bonnes pratiques liées à Async. Session très intéressante de Lucian Wischik, avec du contenu expert sur Async. Pour moi qui ai eu du mal à m’y mettre, l’explication de la machine à état et la façon de relier le mot-clé await à ce qui se passait était vraiment utile. Je ne vais pas bêtement vous recopier de l’information existante sur son blog. C’est juste l’occasion de donner l’adresse http://blogs.msdn.com/b/lucian/archive/2012/11/28/how-to-await-a-storyboard-and-other-things.aspx (et évidemment le reste des articles dans la catégorie Async), que je pense être la meilleure référence sur cette technologie.

Sur la question des wrappers pour passer du synchrone à l’asynchrone, qui revient souvent, deux articles en complément : http://blogs.msdn.com/b/pfxteam/archive/2012/04/13/10293638.aspx et http://blogs.msdn.com/b/pfxteam/archive/2012/03/24/10287244.aspx (l’un dans un sens, l’autre dans le sens inverse)

Allez, l’autre image que j’ai quand même le droit de vous faire voir (après bien sûr avoir coupé les visages, mais ça, ce n’est pas le NDA qui le demande, c’est juste la politesse) : le 10 heures. Oui, Microsoft s’est apparemment juré de nous faire péter la panse en nous nourrissant entre chaque session d’une heure ou une heure trente…

2013-11-20 23.36.15 réduite

Voila pour la partie sérieuse. Les soirs, ça l’était moins, avec en particulier une sortie à l’aquarium de Seattle qui avait été transformé en bar géant :

2013-11-21 04.39.06

Oui, je sais, on ne voit pas grand chose, mais je n’avais qu’un téléphone portable pour les photos. A l’arrière plan, c’est un bassin avec des poissons au cas où vous n’auriez pas reconnu. Et devant, des geeks qui viennent prendre une bière sous le nez des poissons… et des plongeurs !

Tout l’aquarium étant ouvert pour quelques 1400 MVPs, on ne se bousculait pas pour faire le tour, et c’était l’occasion de voir quelques merveilles sans être pressé par le flux des personnes :

2013-11-21 04.53.52

Il y avait aussi Nemo (de son vrai nom poisson-clown, avec l’anémone à laquelle il est le seul à ne pas être sensible, ce qui le protège de ses prédateurs) :

2013-11-21 05.01.14

Et un phoque plus que flegmatique :

2013-11-21 05.23.25

Après cela, Microsoft a eu la bonne idée de nous faire faire un tour de la grande roue de Seattle :

2013-11-21 05.38.23

La vue sur l’aquarium, mais sur toute la baie et sur la skyline de Seattle est impressionnante (en tout cas beaucoup plus que sur la photo ci-dessous) :

2013-11-21 06.16.29

Le lendemain, c’était la sortie de la nouvelle XBox One. Du coup, le campus Microsoft était redécoré aux couleurs de la console, et la queue devant le magasin était bien établie quelques heures avant le coup d’envoi :

2013-11-22 00.04.35

Personnellement, j’ai eu la chance de rencontrer Eric Brechner, dont je suis en train de traduire le livre Hard Code, et de suivre le lancement un peu partout dans le monde. Une horloge de trois étages dans le bâtiment, et tous les employés ayant bossé dessus groupés autour en train de faire la fête, c’était sympa Sourire

Il faut avouer que le campus, bien que géant, reste assez sympa à vivre, avec des petits parcs pour le sport, et surtout des espaces communs qui donnent carrément envie :

2013-11-22 00.08.38

Enfin, peut-être encore plus envie en été, parce que là, il faisait autour de 5 degrés. Au moins, on a évité la pluie pendant la majeure partie du séjour, ce qui est apparemment miraculeux.

Bref, un super séjour. Evidemment, vu que je ne peux pas parler des sessions, ça a surtout l’air d’être des vacances, mais je vous assure que pendant les trois jours et demi de sessions et de conférences, on a bossé… beaucoup. Microsoft est incroyablement ouvert au feedback des MVPs et nous avons même co-designé certaines fonctionnalités sur des produits à l’étape de pré-conception. Le tout sur des journées non-stop qui commencent à 8h00 et finissent à 18h30, avec 9 heures de décalage horaire…

Merci aux organisateurs, qui ont huilé tout ça nickel, à l’Américaine quoi. J’espère avoir l’occasion de revenir au plus vite…

Posted in Retours | Tagged | Leave a comment

Compte-rendu Agile Tour Nantes 2013

Allez, c’est le dernier de la saison, après Rennes et Vannes. Toujours aussi bien organisé, là aussi, on sent l’équipe qui roule. Ci-dessous un rapide retour sur les sessions que j’ai suivies.

Keynote du matin

Tout d’abord, la conférence centrale du matin qui mettait à l’honneur Alexandre Gérard, de Chronoflex. Il est PDG de cette société qui est une des rares à avoir suivi le modèle de Favi, inspiré par Jean-François Zobrist. J’avais vu ce dernier à une présentation dans le cadre du CJD, et j’avais été proprement estomaqué par l’approche radicale de sa méthode et les résultats incroyables qu’elle apportait. Ce fut également le cas d’Alexandre Gérard, qui en temps que dirigeant a décidé de se lancer.

Il parle de saut en parachute pour bien faire mesurer le changement que cela représente. Le PDG ne prend pas les décisions, mais il fournit un cadre pour que les employés puissent s’épanouir et prendre les décisions par rapport à ce qu’ils peuvent faire. Etant donné qu’ils sont le plus proches de leur métier, ce sont souvent eux qui auront la meilleure idée pour résoudre les problèmes. Surtout, on remonte souvent aux chefs que ce qui ne fonctionne bien, ou alors en embellissant, ce qui fait que les problèmes sont poussés sous le tapis.

Concrètement, les changements peuvent paraître simple, mais représentent déjà un grand changement par rapport à beaucoup de boîtes : abandon des symboles de pouvoir comme le grand bureau ou la place de parking dédiée la plus proche, etc. Les plus grands changements sont bien sûr dans l’organisation du management. Les embauches, ouvertures de postes, stratégies et primes sont décidées par le groupe, de manière sociocratique. Les décisions les plus dures ne sont pas laissées de côté, avec le groupe qui prend ses responsabilités pour demander si besoin le départ d’un collègue qui ne veut pas s’intégrer au groupe.

Après avoir vu JF Zobrist, l’orateur l’a recommandé à d’autres personnes, qui à leur tour lui ont conseillé de lire Isaac Gates, et en particulier le livre “Freedom Inc.” (ou “Liberté et Cie, en français). Il a ensuite rencontré Isaac Gates et l’a convaincu de le rejoindre dans un club qui travaillerait sur la “recette” de Favi et comment l’appliquer à d’autres industries de manière plus générale.

Je ne vais pas trahir la recette ici, mais juste reprendre quelques points qui m’ont le plus marqué. Le premier est, comme je le disais plus haut, que le responsable ne doit plus être un “chef” pur, mais avant tout un facilitateur, un support pour que l’équipe et chaque personne soit dans un environnement favorisant sa montée en compétence et son appropriation de son travail. L’idée n’est pas de “motiver” les gens (comme si c’était possible par une action exogène), mais de leur fournir un environnement de travail au sens large qui fassent qu’elles soient naturellement intéressées à leur travail, qu’elles le prennent à bras-le-corps. Pour le manager, c’est simplement faire confiance au fait que la personne est bien plus indiquée que lui pour prendre les bonnes décisions sur son travail. Elle en maitrise mieux les impacts.

Le second est que le manager doit arrêter de donner des ordres, mais passer la plus grande partie de son temps à écouter les personnes qui sont en charge de la réalisation. Il doit être à l’affut du moindre signe de problème, et immédiatement voir comment il peut faire en sorte de donner à la personne les moyens qui lui manquent pour travailler comme elle le souhaite. La seule centralité du manager, à la fin, ne doit plus être le positionnement “haut de la pyramide hiérarchique”, mais plutôt une centralisation de la vision partagée de l’entreprise.

Une petite réflexion personnelle sur quelque chose qui peut apparaitre comme un paradoxe : l’approche de JF Zobrist, appliquée par A Gérard, est basé sur la confiance dans les personnes et leur amour du travail bien fait si on ne les bride pas. Bref, l’inverse des pratiques de management dures où on considère qu’il faut “mettre la pression” sur les gens. Il serait toutefois faux de penser qu’on est dans le monde des bisounours, et que c’est une philosophie baba-cool. L’orateur le dit lui-même, en décrivant son passage à cette méthode comme un saut en parachute. Il faut un sacré coup de pied au derrière pour faire un tel pas. Dans le cas de Chronopost, c’est une brusque chute d’activité, mettant la société en danger de disparition, qui a été le déclencheur. Et si très peu d’autres entreprises ont tenté l’approche, c’est qu’il faut un changement de barre radical, une volonté forte de forcer l’organisation au changement (et pas les personnes). Bref, du courage… On en revient souvent à cette notion agile.

Tout ce que vous avez toujours voulu savoir sur les entreprises auto-organisées

La toute première chose que cette session m’a apprise est que j’utilisais depuis des années l’expression Open Space sans savoir ce que ça recouvrait. Pour moi, c’était juste des bureaux sans cloison. En pratique, ce décloisonnement avait pour principe de faire en sorte que chaque personne puisse participer sur le travail dans lequel elle se sentait le plus à l’aise.

Le but de l’auto-organisation est en effet de donner uniquement la vision, et de ne pas dire aux personnes comment réaliser leur travail. On est proche de l’esprit de la keynote, où on reconnait que la meilleure personne pour organiser son travail est justement celle qui le réalise.

Un des retours de l’intervenant est d’expliquer que, malgré le fait qu’ils prennent dans son équipe toutes les décisions ensemble, cela ne s’étend pas à la définition de la vision, car ça prendrait trop de temps. Il recommande donc de partir de la vision d’une personne, et de faire immédiatement intervenir une collaboration forte pour transformer cette vision.

L’intervenant prône le courage de parler de tout dans une équipe, de façon à faire apparaitre au plus tôt les points qui pourraient devenir des grosses difficultés plus tard. Il faut pour cela une bonne dose de courage dont il fait lui-même preuve en expliquant leurs soucis de mise en redressement judiciaire au début de leur aventure. Ca ne rend que plus enthousiasmant leur actuel succès.

Il cite comme exemple de ce qu’il ne faut pas faire le réflexe d’embaucher quelqu’un pour faire ce que personne dans le groupe n’a envie de faire : le fait de réfléchir sur pourquoi c’est une contrainte, de discuter d’autres méthodes, aurait fait naitre une collaboration autrement plus intéressante dans le groupe.

Le point le plus positif, de mon point de vue, est que c’est un REX très pratique, avec de nombreuses explications au jour le jour. Par contre, il faut une maturité d’équipe très forte pour en arriver à ces pratiques sociocratiques. A commencer par des cercles, déjà, lors des points d’équipe.

Les enjeux du Kanban pour changer notre approche du travail

Laurent Morrisseau, le spécialiste du Kanban, présente cette conférence qui n’est pas tout à fait pour débutants, mais repose des bonnes bases pour la compréhension de Kanban. Les équipes Scrum croient en effet souvent faire du kanban à partir du moment où elles suivent un management visuel en collant des post-its. Kanban est beaucoup plus que cela dans le sens où il représente un workflow, avec pour but d’identifier la gestion du temps, de limiter les entrants, et au final de favoriser le flux tiré.

Dans Kanban, la satisfaction client est améliorée surtout par la gestion meilleure du temps : Time To Market, mais aussi Juste A Temps (l’art de retarder au maximum les décisions pour éliminer le maximum d’inconnue).

Quelque chose de marquant est que le temps d’attente lors du traitement d’une demande, rapporté au temps de bout en bout, est souvent de l’ordre de 90%. Cela s’explique par le morcellement du travail et surtout par le fait que des buffers sont réalisés entre chaque étape. Le but est d’avoir tout le temps du travail (pour ne pas “perdre de temps”), mais au final, ça ralentit le temps de cycle. Du coup, si on souhaite réduire ses délais, c’est vraiment sur cela qu’il faut travailler : ça ne sert à rien d’essayer d’améliorer l’exécution, car même avec beaucoup d’efforts, le gain sera obligatoirement très limité.

Une des pratiques les plus importantes est la limitation du nombre de tâches dans une colonne, de façon à ne pas livrer plus que ce que le client peut recetter / utiliser, ne pas tester plus que ce qu’on peut livrer, ne pas développer plus que ce qu’on peut tester, et ne pas faire plus de specs que ce qu’on peut coder. Dans le dernier cas, du stock peut paraitre anodin, mais une spec coûte quand même son analyse, ainsi que le fait qu’une fois stockée, elle perd de sa pertinence.

Un bon logiciel pour le Kanban est, selon Laurent, LeanKit, même si l’approche manuelle reste une référence en terme de souplesse.

Keynote de l’après-midi

Original de faire deux keynotes dans la journée, mais je trouve personnellement que c’était une très bonne idée. C’est parfois dur de choisir parmi quatre parcours, alors quand il y a une personne experte qui vient, ça vaut le coup de lui faire prendre la parole devant tout le monde. F.Dufau Joël est le genre de personne charismatique qu’on a plaisir à écouter même lorsque le sujet n’est pas celui qu’on aurait choisi sur une conférence en particulier.

A voir : http://blog.germe.com

L’orateur explique la méthode “World Café”, pour apprendre à poser les bonnes questions, ce qui prend souvent beaucoup plus de temps que la décision elle-même.

Une autre astuce est de faire de l’analyse “pre mortem” : en quelques mots, il s’agit d’écouter les sceptiques pour modéliser l’anayse de risques, sachant qu’ils remontent parfois également des solutions de mitigation de ces risques. Je vais essayer de me servir de ça pour l’urbanisation, car on rencontre encore beaucoup de sceptiques, malgré que le mouvement soit maintenant enclenché et à peu près certainement parti pour aboutir. Avec quelles technos, on ne sait pas encore, mais c’est le sens de tous les SI de se complexifier en intégration, et donc de nécessité un degré supplémentaire d’indirection.

L’orateur cite en dernier le “casino game”, qui est apparemment une très bonne méthode pour faire découvrir les enjeux et avantages de l’agile.

De l’idée à la réalité : ce que Kanban a changé dans notre centre de services

Un autre REX, très appliqué puisque la personne qui a suivi les conseils de Dorothée Le Seach était là pour témoigner de l’intérêt, mais aussi des difficultés de mise en place, d’un Kanban pour une équipe de centre de services informatiques.

Je ne refais pas toute l’intervention, ce n’est pas le but, mais juste quelques idées piochées par ci par là dans ce retour d’expérience bien riche. Déjà, faire porter la rétrospective par une personne neutre.

Marrant comme les équipes ont déformé le concept de VIP Card (carte ou post-it unique équivalent de la voie prioritaire dans un tableau de management visuel, à savoir possibilité de faire passer une et une seule tâche en priorité sur toutes les autres). Les équipes de Noémie parlent de “Vieille Picarde”. Au début, je me demandais si on était de la même région, et que ses équipes la traitaient de vieille Sourire

A suivre le hashtag #KanbanCDS pour plus de retour de la part de l’équipe, qui s’est totalement approprié le Kanban qu’elle a mis en place et qui, selon les dires de tous dans la vidéo, ne pourrait plus s’en passer. Félicitations à eux !

Intéressant de voir que toute l’approche Kanban a été portée dans un premier temps en se cachant du client. Quand on travaille au bug, il y a du coup une certaine liberté à organiser la méthode, puisque cela se fera sur du temps non facturé. Mais quand on est sur du temps facturé, ce n’est pas le cas, et si on réfléchit à un changement de méthode, on peut avoir un client qui refuse qu’on passe du temps dessus, même si c’est pour améliorer le service rendu. Chez les éditeurs, c’est un peu pareil pour la prise en compte des besoins clients : même si la technologie sous-jacente devrait s’effacer au profit du service rendu et du respect de l’exigence, on se retrouve souvent à suivre des contraintes purement techniques. Dans certains cas, c’est justifié par le besoin d’homogénéité du parc logiciel. Dans d’autres, c’est juste une habitude qui est prise et qui éloigne au final de la satisfaction client.

Un conte pour changer sa perception de soi, des autres et du monde

Christophe (dont je n’ai pas noté le nom de famille) nous a gratifié d’un beau conte sur la réalisation de soi. Très inspirant. Il l’a trouvé sur internet, mais le raconte d’une façon très personnelle. Excellente idée des organisateurs d’avoir introduit cette approche dans les conférences. Je ne suis pourtant pas un artiste dans l’âme (il n’y a qu’à voir comment je m’habille), mais je suis convaincu que le théâtre pourrait apporter énormément en entreprise, pour favoriser la communication dans les équipes.

Notre session

Ou, devrais-je dire plutôt dire, malheureusement, ma session, vu que mon collègue Johan Le Lan, le pauvre était complètement aphone. Du coup, j’ai sérieusement brodé autour du sujet, mais je suis content, je suis resté dans le timebox à une minute près (à part les questions).

Toujours très enthousiasmant de parler devant un bon nombre de personnes intéressées. Le feedback informel était bon, et un des organisateurs m’a dit qu’un urbaniste informatique de la SNCF avait apprécié nos métaphores pour expliquer l’essence de l’urbanisation. Rien que pour ce retour, ça valait le coup de passer du temps à monter cette conférence !

Les deux questions à la fin étaient :

  • Comment éviter la “tour d’ivoire” ? J’ai répondu par l’abandon des signes extérieurs, genre bureau à part ou autre. Perso, je me suis récemment installé au plus près des équipes qui auront besoin d’un urbaniste, quitte à abandonner mon bureau avec fenêtre et retourner à la cave, sous l’escalier, au coin. Aussi, j’essaie de ne pas diffuser les schémas que je fais aux équipes, mais plutôt des bonnes pratiques et des explications de la vision pour qu’elles montent les workflows BPMN par elles-mêmes.
  • Comment choisir entre des services métier ou orientés ressources ? Pour moi, je ne crois pas aux approches SOA 2.0, WOA ou ROA. Il faut d’abord qu’on fasse proprement du SOA et honnêtement, à part les banques et assurances, il n’y a personne qui en fait aujourd’hui, en tout cas sur le domaine que je connais. Quelques-uns de nos clients ont une approche urbanisée, mais nous sommes en phase d’évangélisation pour beaucoup. Alors, parler de SOA 2.0 parait extrêmement prématuré. Pour ce qui est de ROA plus particulièrement, l’approche n’a finalement qu’une importance technique: est-ce qu’il vaut mieux appeler une fonction de paiement sur une entité subvention ou est-ce qu’il vaut mieux créer une ressource de type paiement ? Si la deuxième entité a un sens conceptuelle pour le client utilisateur, la deuxième solution parait la meilleure. Sinon, l’un comme l’autre sont correctes.

Le prétotyping : assurez-vous que vous êtes en train de développer le bon produit

C’est toujours dur de faire la dernière session de la journée, mais l’intervenant s’en est tiré comme un chef, avec de nombreux exemples très percutants.

Des remarques comme “nous avions un super produit que nous n’arrivions pas à vendre” sonnent particulièrement à mes oreilles. Ca m’est arrivé dans chacun de mes emplois en informatique. Et même en mécanique d’ailleurs, quand je travaillais l’été en atelier d’estampage.

Quelque chose de très intéressant est la statistique sur les échecs des nouveaux produits ou idées, mais surtout la remarque : le taux d’échec ne dépend pas de la qualité d’exécution. Bref, une idée a le même pourcentage de chance d’échouer si elle est bien ou pas bien réalisée. Ce qui fait la différence est uniquement si elle est en adéquation au besoin. Bref, il vaut toujours mieux avoir le bon produit que bien le réaliser, en tout cas dans un premier temps évidemment.

C’est là le but du prétotyping : tester le plus vite possible le maximum d’idées, pour voir lesquelles ont un avenir, quitte à avoir une réalisation très légère derrière, voire rien du tout. Un prototype, à l’inverse, nécessite déjà de la réalisation, car il est là pour prouver non pas que l’idée est bonne, mais qu’elle est réalisable. Le but du prétotyping est de tester la valeur de l’idée, en amont de sa faisabilité. Comme ça, on dégage le plus en amont possible toutes les “bonnes” idées qui en fait n’ont pas de public.

Et il y en a souvent des bonnes idées qui ne le sont pas vraiment. Pourquoi ? Parce que la plupart des gens qu’on consulte n’osent pas nous le dire, veulent nous faire plaisir, nous encourager. Personnellement, j’ai appris pendant ma thèse que la franchise absolue avait du bon, même si elle faisait mal. Après que plusieurs personnes que j’avais consultées m’aient toutes dit que mon logiciel apportait un plus, qu’il était bien programmé, que l’approche était bonne, j’ai posé la question à une personne qui s’avéra être un Hollandais. Et les Hollandais sont “blunt”, c’est-à-dire qu’ils ne s’embarrassent pas de pincettes et disent directement ce qu’ils pensent. Dans mon cas, mon interlocuteur m’a dit que s’il était un industriel, il n’utiliserait pas le logiciel issu de ma thèse. Ce qui m’a fait super mal, d’autant qu’il avait des arguments. Ma première réaction a été le déni, mais j’ai tout de même pris en compte ses remarques, car elles étaient bonnes, et au final, le logiciel était bien meilleur qu’il aurait été. Je ne dis pas qu’il était bon, mais sans lui, je me rends rétrospectivement compte qu’il aurait été vraiment mauvais.

Mais revenons à nos moutons de compte-rendu de session. L’intervenant encourage à aller voir le cas de WebVan, qui était un concurrent d’Amazon et qui avait l’idée de faire dans les produits frais, ce qu’Amazon se lance à peine à faire aujourd’hui, après dix ans d’expérience. Le défaut de WebVan, pour lui, a été de commencer trop gros trop vite. Ils ont voulu couvrir toutes les villes, tous les produits, etc. et se sont noyés.

Attention donc aux “vanity metrics” qui sont faites pour nous dire ce qu’on veut entendre. Il faut sortir au plus vite du “royaume des opinions” et confronter les idées à la réalité de l’adoption, quitte à ce qu’il n’y ait rien derrière. Par exemple, un site web pour vendre un livre qui ne sera écrit que s’il y a des commandes. Ou bien un logiciel qui fonctionne avec une intervention humaine cachée le temps qu’on voit s’il y a de l’intérêt à réellement l’automatiser.

Pour donner une autre définition de la différence :

  • prétotype : est-ce que ce sera utilisé comme on le pense ?
  • prototype : est-ce qu’on peut le concevoir et le réaliser ?

Conclusion

Comme d’habitude, plein de super bonnes idées à cet Agile Tour Nantes. On repart la tête pleine de choses à tester, de bonnes pratiques à mettre en œuvre, et on discute pendant tout le trajet du retour. Enfin, pas pour Johan cette année, car il n’avait vraiment plus de voix.

Posted in Agile, Retours | Tagged | 3 Comments

Compte-rendu Agile Tour Vannes 2013

Ce coup-ci, je m’y mets tout de suite, sans traîner comme pour celui de Rennes. Comme ça, les idées seront fraîches…

Keynote

On attaque en musique avec une session très exotique, où une vingtaine d’extraits de musiques sont passés, puis le conférencier nous explique comment les paroles lui rappellent quelques fondements de l’agilité. Intéressant, car on retrouve des notions. Par contre, peut-être un peu ardu pour ceux qui ne connaissent pas le vocabulaire agile ou Scrum. Et pour ceux qui connaissent, c’est fun, mais ça n’apporte pas réellement une connaissance supplémentaire.

Lean Agile Camp

Dominique de Premorel nous explique comment elle a fait le grand saut d’Agile à Lean. Très approfondi comme approche, avec des exemples du terrain. Cela confirme bien la première impression que j’avais eue à Rennes sur le fait que Lean est une approche plus holistique que Scrum par exemple. Pas nécessairement que l’agilité au sens large, car l’agilité, ce sont des valeurs, qui peuvent être appliquées sur le Lean qui est une structure d’apprentissage.

Mais là où Scrum peut buter car on n’est que dans l’exécution d’un projet, Lean peut apporter la réponse en donnant le recul nécessaire, et en faisant se poser la question de ce dont a réellement besoin notre client. Si ça se trouve, ce n’est pas d’un produit qu’il a besoin, mais d’une formation, d’une nouvelle méthode. Et dans ce cas là, exécuter parfaitement un produit ne servira à rien. Je reviens sur cette phrase qui m’avait marquée à Rennes : Scrum, ça peut très bien servir à exécuter parfaitement un projet qui est inutile.

LeanAgileCamp.fr pour retrouver le livre écrit par Dominique, Christophe Kéromen qui organisait également, et huit autres agilistes.

La phrase du jour

Scrum est comme une belle-mère : elle met le doigt là où ça fait mal, mais c’est pour notre bien.

Urbanisation des SI : l’agilité au niveau du SI

On remet sur le métier notre ouvrage avec Johan Le Lan. Nous avons tenu compte des feedbacks de la première session de cette conférence à Rennes, mais malheureusement peut-être un peu trop, car nous avons glissé sur le temps, et la conclusion s’est faite un peu rapidement. Nous le saurons pour être nickel à Nantes la semaine prochaine Sourire

Merci à Nicolas Ledez, qui présentait juste après nous, de nous avoir offert ce petit souvenir :

image

Y sont pas chers, mes tests !

Justement, donc, je suis allé voir Nicolas Ledez, juste après. Notre schizophrène de service (ce n’est pas moi qui le dit, c’est lui) nous a gratifié au passage du record du monde de retard dans la fin de sa conférence Sourire. Mais on lui pardonne, parce que c’était super intéressant, et parce qu’on a quand même réussi à manger quelque chose après…

La conférence était axée sur le Test Driven Development, et permettait de bien remettre au clair les pratiques. Ca m’a permis de remettre au clair ma pratique, et de mieux comprendre le problème que j’ai avec la couverture de code. Je me demandais quelle était le bon pourcentage, et la réponse de Nicolas est sans équivoque : 100%.

J’ai souvent ce problème, car je travaille sur du code en partie créé avant qu’on connaisse l’importance des tests unitaires (et même pour une partie de notre code, avant qu’on connaisse l’existence même de ce type de tests). Et dans ce cas, on essaie de rajouter du test après, et en fonction de l’importance du code, on se limite à 20% en espérant l’effet Pareto, ou on monte à 80% et ça nous paraît déjà énorme. Mais j’ai compris ce que Nicolas expliquait : quand on part sur du TDD, il faut dès le début être à 100% et s’y tenir. C’est ce qui garantit qu’on ne se trouvera pas dans une situation qu’on ne peut pas remonter plus tard.

En TDD, il ne faut surtout pas oublier de ne jamais refactoriser le code en même temps que les tests. Les tests représentent beaucoup de code mais peu de temps, tandis que l’implémentation, c’est l’inverse : beaucoup de réflexion pour un peu de code.

Une question sur le Coding Dojo ? Qu’à cela ne tienne, Nicolas sort directement la présentation qui va bien et nous la fait au pied levé ! Et la référence qui va bien avec : codingdojo.com pour le katacatalogue. Bon timing pour les randori : 7 minutes.

Et pour finir, Nicolas nous rajoute une référence de livre intéressant, à savoir Trust Driven Development, par Noël Rappin.

Atelier de sociocratie

Intéressante approche que la sociocratie. Le concept d’élection sans candidat m’avait interpelé, et je voulais en savoir plus sur cette pratique, donc je suis allé voir l’atelier de fin d’après-midi.

L’atelier faisait la part belle au cercle, c’est-à-dire la méthode de prise de parole les uns après les autres, dans l’ordre du cercle autour duquel on est assis. Les objections sont traitées de manière la moins conflictuelle possible, à savoir l’expression d’une objection, la proposition d’une résolution, et si celle-ci permet de lever l’objection, on continue.

L’approche m’a semblé un peu difficile à mettre en place sur des questions ouvertes, et je pense qu’elle doit fonctionner au moins lorsque le sujet est relativement contraint. Une des idées est de ne pas chercher à tout prix un consensus qui laisse chacun finalement peu satisfait, ni de voter pour trancher sur une proposition, mais de faire émerger par une approche méthodologique de la parole une idée qui pourra convenir à tout le monde.

Conclusion

Un peu moins de monde cette année que la précédente, mais les organisateurs se sont encore une fois bien débrouillés. Et le buffet de l’Agile Tour Vannes est sans conteste le plus original et le meilleur de toutes les conférences auxquelles je sois jamais allé Sourire

Posted in Agile, Retours | Tagged | Leave a comment

Compte-rendu Agile Tour Rennes 2013

L’Agile Tour Vannes est déjà demain, et je n’ai toujours pas fait le compte-rendu pour la session de Rennes il y a trois semaines. Au boulot, donc…

Keynote

Sociocratie : chaque personne du cercle est responsable. Trois piliers :

  • Consentement plutôt que consensus
  • Election sans candidat (la personne doit tout de même donner son accord)
  • Double lien : pas la même personne pour remonter et pour descendre l’info

Urbanisation des SI : l’agilité au niveau du SI

Au lieu de faire un CR, puisque c’est la conférence que j’ai présentée avec mon collègue Johan Le Lan, je remonte plutôt un résumé du feedback. Malheureusement pas assez nombreux pour avoir une bonne idée, nous aurions du faire un ROTI.

Ce qui ressort est que le lien avec l’agilité n’a pas été assez fortement souligné. Nous avons donc revu notre copie pour Vannes et Nantes, où ce sera plus clair. Nous reprenons en particulier les liens avec les quatre principes du manifeste agile.

Le feedback remonte également un manque de temps, et toutes les fiches ont souligné que le sujet est intéressant, ce qui est très encourageant pour améliorer cette conférence.

ALM : accélérateur ou frein à l’agilité ?

Très intéressant d’opposer la sécurisation, la planification et le pilotage contre la flexibilité, la réactivité et le collaboratif, en notant que, de la même manière que dans une équipe de rugby, il y a Chabal et Michalak, on peut très bien avoir besoin des deux ensembles de qualités, pourtant opposées.

Solutions : agiliser au niveau des enjeux, et avoir des évangélistes qui font le lien du bas vers le haut de la hiérarchie.

Introduction au leadership tribal

Je n’y suis pas allé, mais plein de remontées très enthousiastes sur cette conférence. J’espère qu’elle passera à Nantes…

Transition Scrum à Kanban sur projet de maintenance

Un REX très solide et argumenté.

Incoming fixé à 2 en mini (si pas assez, réunion pour demander plus de boulot ou sortir une ressource pour autre chose) et 6 en maxi (pour éviter les changements de priorité inutiles).

Une ligne kanban réservée pour l’urgence.

Mesure des temps d’attente par colonne : horodatage à l’arrière des post-its, mis à jour à chaque changement de colonne, ce qui permet de réaliser les statistiques après coup.

Estimation d’une tâche uniquement quand elle est tirée dans le kanban.

Rock the Product Map

Atelier très intéressant sur une façon extrêmement réactivité de créer une roadmap produit. Le sujet pris est assez drôle, et le présentateur très fort pour arriver à canaliser les nombreuses grosses équipes présentes.

Au final, quelques bonnes recommandations sur la façon d’aborder la conception produit, et en particulier la façon de trier les “bonnes idées” des fonctionnalités qui doivent réellement être mises en oeuvre, et les prioriser.

Cette session sera jouée à Vannes, je la recommande.

Booster Scrum avec le Lean Startup

Le message principal : Scrum est fait pour bien gérer l’exécution d’un projet, mais n’a rien à voir avec la gestion d’une entreprise, de ses marchés et de ses produits. Typiquement, trouver des idées, établir une roadmap, trouver un budget, monter des équipes, séquencer les projets, lancer des solutions, et vérifier la valeur atteinte, tout ça n’est pas fait par Scrum.

Par contre, il y a une méthode agile pour cela, et heureusement, car le risque de se limiter à Scrum, c’est de devenir très bon pour réaliser quelque chose d’inutile. Cette solution est le Lean Startup.

La conférence présente ensuite plusieurs outils de la méthode. Les prototypes comme machines à apprendre (recoupe Eric Brechner sur ce point). Le but est seulement de tester des hypothèses pour les transformer en connaissance valide. Les idées derrière : Minimal Viable Product, Continuous Deployment, Pivot or Persevere, Split Testing, A/B Testing, Actionable Metrics, Customer Development, Small Batches (baby step, mais au niveau produit au lieu de code).

Lean Canvas (ashmaurya.com) : utilisable pour démarrer des projets d’évolution logicielle, par exemple. La confrontation des deux hypothèses n’en élimine pas nécessairement une. On peut les garder pour les tester, plutôt que de forcer un consensus.

Une idée (parmi beaucoup d’autres, la conférence étant très riche) : livrer les User Stories avec un test d’acceptance de l’hypothèse business. Par exemple, si je livre telle fonctionnalité, je vais gagner tant de CA en plus.

Conclusion : le nerf de la guerre, c’est de valider le ROI en amont (et pas constater)

Voyage à travers nos biais cognitifs

Conférence moins technique, mais super intéressante, sur la façon dont nos cerveaux, toujours câblés comme il y a quelques centaines d’années (l’évolution de nos fonctions ne va pas aussi vite que celle de notre environnement), nous font prendre des décisions d’une certaine manière qui n’est potentiellement pas celle idéale.

Je ne dévoile pas les expériences, ni les exemples, car il vaut mieux que vous alliez voir vous-mêmes. Une petite note personnelle, toutefois, sur le fait que les décisions ne sont pas aussi rationnelles qu’on le croit : il y a un lien très fort avec la définition des passions chez Leibniz. Notre comportement est soumis à des affects qui le dirige.

Attention, toutefois : connaitre nos biais cognitifs nous rend juste plus intelligent, mais ne nous aide aucunement à les éviter.

Oana, désolé d’avoir fait planter ton expérience sur les calculs mentaux. C’est un de mes points forts, et ma partenaire d’expérience, qui était censée avoir le plus facile, disait elle-même que ce n’était pas sa tasse de thé.

Conclusion

Encore une belle édition de l’Agile Tour Rennes ! Toutes les conférences que j’ai vues étaient enrichissantes. C’est une journée bien investie. Chapeau à l’organisation, super rôdée désormais !

Posted in Agile, Retours | Tagged | Leave a comment

Compte-rendu du BreizhCamp 2013

Le BreizhCamp, c’est une conférence du tonnerre qui a lieu tous les ans à Rennes ! Excellents intervenants, sur toutes les technologies sans aucune barrière : du .NET, du Java, du Python, du NoSQL, des méthodes, etc. Bref, le meilleur investissement en temps de formation possible… Ci-dessous quelques notes sur les différentes sessions que j’ai suivies.

Session Devops

Nicolas Ledez se définit lui-même comme un architecte Lego. Il présente une session sur le principe Devops, qui consiste à intégrer les opérationnels (admins systèmes, DBA, etc.) dans les équipes de développement, de façon qu’ils soient inclus sur le projet dès le début. Pour le conférencier, il est essentiel d’ajouter une troisième personne, à savoir l’assurance qualité.

Le principal problème de compréhension, pour lui, est que le développeur est payé pour faire du changement, alors que l’opérationnel est payé pour faire de la stabilité. Pour réduire ce hiatus, il est important d’impliquer les opérationnels dès le début du projet, et ne pas les mettre devant le fait accompli, en leur demandant de casser toute leur architecture pour s’adapter à un nouveau projet logiciel. Typiquement, qu’ils ne se rendent pas compte le jour de la mise en œuvre qu’il faut douze fichiers de configuration à des emplacements différents. Pour cela, le mieux est de sensibiliser les devs aux contraintes de la production, en les faisant par exemple participer à l’installation de leur logiciel, et ce dès les premières itérations. Nicolas Ledez parle aussi de faire du pair programming avec un sysadmin, mais j’ai un peu de mal à voir comment il peut jouer le jeu.

On revient un peu en arrière en desserrant les contraintes de mise en production, car elles n’ont pas prouvé leur efficacité pour réduire les coûts de problèmes à l’exploitation. Pour cela, on peut par exemple laisser les développeurs créer leur propre système d’installation sans tout centraliser, du moment que ça correspond aux besoins du logiciels et du client au final. Dans le cas de l’outil Capistrano, par exemple, on crée des scripts atomiques pour réaliser des opérations a distance.

Un outil comme Vagrant est très adapté aux approches Devops. Il permet de piloter Virtual Box avec Ruby, et de créer ainsi dynamiquement des machines virtuelles pour les besoins de tests de déploiement, voire même la gestion élastique de ressource. C’est un Git qui centralise les settings nécessaires. Une démo achève de convaincre que cet outil pourrait nous amener à de fortes améliorations de productivité sur nos installations. A tester, donc… Pour cela, on se place dans un répertoire, et on fait un vagrant init pour créer le fichier de conf, qui sera modifié pour pointer sur l’image voulue, et ensuite on lance vagrant up pour démarrer la machine. Il y a d’autres outils avancés : Vagrant provision pour lancer une recette Chef sur la VM, Guard pour relancer les tests lors de la modofication des fichiers (permet donc de ne pas avoir à relancer à chaque fois les tests à la main).

L’amour est dans le graphe

Session très intéressante sur les bases de données NoSQL orientées graphes, et en particulier Neo4J dans notre cas. L’explication est faite par une personne qui a travaillé sur un projet pour Meetic, et qui consistait à parcourir des graphes de relations entre les personnes, afin de proposer des rencontres avec des personnes en fonction d’affinité supposée. Typiquement, si MEC1 s’est mis en relation avec GIRL1, on peut retrouver tous les MECx qui ont aussi contacté GIRL1, puis montrer à MEC1 la liste des autres filles que ces MECx ont également contactées (en éliminant les doublons, et bien sûr GIRL1, que MEC1 a déjà draguée contactée).

Il y a deux grosses difficultés qui sont levées par la base de donnée spécialisée dans le graphique. Déjà, un problème de performance : si on parcours la liste des GIRLx après avoir bouclé sur MECx, qui lui-même vient d’une boucle sur GIRL1, et encore au-dessus un niveau de boucle pour trouver GIRL1 qui n’était certainement pas la seule contactée par MEC1… Bref, combinatoire exponentielle et à peu près aucune chance de ne pas saturer un serveur avec le nombre d’entrées sur Meetic. Neo4J, par contre, travaille uniquement avec des nodes de graphes en mémoire, ce qui permet de traiter des milliards de connexion.

L’autre fort intérêt d’utiliser une base de données orientée graphe est qu’elle fournit une grammaire d’interrogation super concise. Imaginez faire le scénario décrit plus haut avec une réquête SQL. Pas facile à faire… Tandis qu’avec le langage Neo4J, il suffit d’écrire MEC1 -contacte-> GIRL(*) <-contacte- MEC*) -contacte-> GIRL(*). Du coup, ça s’explique encore plus facilement qu’en français. La grammaire ” -relation->” permet de décrire le sens de la relation et son type de restriction. On peut également écrire ” <-> ” pour requêter par rapport à tous les types de relations possibles entre les entités, etc. Bref, un langage extrêmement concis et puissant pour faire des requêtes sur les graphes d’objets.

Plénière jour 2

La keynote était réalisée par deux anciens de chez Google, sur le sujet de la veille technologie entre autres. Entre boulimie de techno et rétrograde, ils recommandaient de réaliser chacun son propre radar techno, en méthode Hold Assess Trial Adopt.

Google Trends pour suivre des technos ou autre. Astuce : rajouter tutorial comme mot clé pour voir l’adoption effective d’une technologie.

Cloud patterns

Une des sessions les plus dynamiques (grâce à Nicolas De Loof, le dictateur en chef de l’organisation BreizhCamp, complètement déjanté) et qui a porté bien des messages qui résonnent à mes oreilles, et me font dire que décidément, tout le monde va vers la servicialisation et les architectures de type SOA.

L’idée était de faire voir des bonnes pratiques qui émergent des premières années de mise en place des technologies Cloud. Ca porte bien sûr sur le déploiement, le versioning, mais aussi le développement, l’architecture, etc. Une mine d’information. Les conférenciers commencent par citer quelques outils dont ils ont un usage grandissant, comme Yslow, Google Page Speed pour la gestion de la performance, et Mongo Gridfs pour le stockage centralisé.

Ensuite, une des recommandations principales, et qui s’applique parfaitement à nos propres produits, à savoir de tout faire en stateless : pas de session, pas de cache, et attention aux frameworks en dessous qui en font. Une fois que tout ceci est sécurisé, on facilite non seulement le parallélisme, mais aussi la montée en charge, le déploiement, etc. Pour Nicolas, l’élasticité promise par le Cloud ne peut être pleinement réalisée qu’en mode stateless.

La deuxième information importante est que “SOA : this time it is for real”. Bref, après des années de fausses annonces, de prévision de SOA-isation du marché, d’outils prétendant que faire du SOA pouvait se gérer par une simple installation d’un middleware, nous arrivons enfin dans un monde où les mises en production se basent sur SOA pour améliorer effectivement le service rendu. Adoption par pragmatisme, donc large, plutôt que réservée aux précurseurs. La diapo associée était la suivante :

Après une explication sur le mode de déploiement habituel, les présentateurs montrent cette architecture qui est en train d’apparaître, et qui par un bus ESB de type RabbitMQ, permet de mieux gérer les déploiements élastiques en séparant les serveurs Front End et Back End. Cela permet une recette séparée, une meilleure élasticité, et une meilleure utilisation des ressources. Sans compter les avantages en termes de débogage. Nicolas ne tarissait pas d’éloges sur ce mode de développement, qui simplifie fortement la vie de l’administrateur système qu’il est.

La suite aurait pu être enregistrée pour être diffusée à tous les développeurs de France et de Navarre : un service web, ce n’est pas du WSDL, mais un vrai service externe utilisable en grille. Ce mode permet de ne plus avoir peur de toucher à un morceau de l’installation car on est à peu près sûr de l’absence d’impact sur un autre (sauf dépendance, bien sûr). Enfin, Nicolas insiste sur la nécessité de passer à ce genre d’architecture dès maintenant pour les nouveaux développements, car la réintégration après coup est difficile.

Et de conclure avec une slide présentant la bible de l’intégrateur, à savoir le bouquin sur les EIP que j’essaie de forcer tout le monde à lire ! Ca fait plaisir Sourire

Une bonne pratique pour garder des environnements les plus propres possibles : utiliser les variables d’environnement système pour la configuration. En effet, elles ne forcent pas à faire des fichiers, sont accessibles depuis tous les processus, et sont faciles à changer au lancement par un script. C’est une idée en provenance de 12factors.net.

Pour faciliter les migrations de version de bases de données, les intervenants recommandent Liquibase ou Rails Migration. Le premier est apparemment assez générique (contrairement au second, uniquement pour Ruby on Rails). J’y reviens un peu plus bas, vu que je suis allé voir une session dédiée.

Le blue / green deployment est ensuite montré : il s’agit d’alterner production et pré-production comme on le fait sur Azure, par exemple, en changeant simplement les adresses IP virtuelles. Cela permet de préparer une pré-production tranquillement, de la recetter, et en un seul instant, de basculer la production dessus. La production ancienne devient alors le nouvel environnement qui servira pour la pré-production du prochain changement de version. Ceci a également un avantage pour faire de la réversion, et revenir à l’environnement précédent en cas de problème. Evidemment, si on ne gère pas les duplications de messages entrants, il faut gérer la mise à jour des bases de données, ou être dans un cas où l’on peut se permettre de perdre quelques enregistrements (serveurs de logs, etc.). Toujours pour la base de données, on peut faire une migration en deux étapes comme pour la prévalence (ou comme expliqué dans le bouquin “refactoring database”). La conférence explique ensuite le Canari Release, le A/B testing (voir qui réagit mieux aux nouvelles features, et augmenter tel ou tel déploiement en fonction des résultats). La notion de “Pretotype” est expliquée : créer la face visible d’une feature sans rien derrière. Il faut alors utiliser le cloud comme volant d’ajustement. Ce qui est stable est un volant de test en continu, il faut juste héberger les différentes solutions.

Nagare

Nagare.org, pour voir ce framework web écrit en Python, et à base de continuation, à l’opposé du consensus MVC Framework.

En particulier, Nagare prend l’approche statefull avec du memcache derrière pour rendre la clusterisation possible. Perso, ça me paraît extrêmement hasardeux, et les démos ne m’ont pas rassuré. Peut-être conceptuellement intéressant, mais il faut attendre que ça fasse ses preuves (10% de chance) ou que ça se plante en beauté (90%) pour savoir.

Liquibase

Comme promis plus haut, quelques détails de plus sur Liquibase. Il s’agit d’un outil de gestion de la montée en version des bases de données. Il y a aussi un générateur de SQL de mises à jour, sous la forme d’un outil simple et rapide, traitant toutes les bases, avec possibilité de migration inverse, de gestion très fine des cas de figure, y compris exotiques, etc.

En bref

Quelques informations sans aucune cohérence, mais qui peuvent avoir un intérêt :

  • WinJS peut faire du XHR crossdomain
  • Virtual box : VMs sans frontal visible possible
  • MarkdownConverter pour transformer automatiquement le contenu MD d’un div en HTML
  • Return this dans les méthodes pour faire du fluent
  • CQRS est pratique pour découpler la montée en version de la base. Côté modification, le cycle de vie est couplé a l’appli, et de l’autre, il est couplé aux clients de consommation, voire à n clients.

Conclusion

Encore une fois, des conférences extrêmement intéressantes, avec plein de bonnes idées originales, et qui permettront de gagner du temps sur plein de questions lorsqu’elles se présenteront.

Le point fort des conférences restant bien sûr la présentation des patterns de Cloud, qui insiste à fond sur la nécessité de servicialiser. Ca fait plaisir de voir son cheval de bataille mis de plus en plus en avant Sourire

Posted in Retours | Leave a comment

Attention au Random !

Obtenir du hasard d’un ordinateur, qui a été conçu dès le début pour être le plus déterministe possible, est certainement une des plus grandes difficultés en programmation. Ce n’est pas pour rien que les entreprises qui doivent créer des certificats recourent à des périphériques spécifiques pour générer de l’entropie (station météo, manette à secouer, etc.)

Lorsque vous manipulez la classe System.Random, faites bien attention à ne pas trop manipuler le nombre que vous obtenez. Prenons le code ci-dessous : vous demandez une valeur entre 0 et 999, et l’utilisez telle quelle.

image

Pas de problème, la répartition est linéaire :

image

Mais imaginons maintenant que, pour une raison ou pour une autre, vous montiez à un million la taille du plus grand entier demandé, car votre algorithme avait besoin de deux fois une valeur sur trois chiffres. C’est plutôt une bonne idée à la base de réduire les appels à la fonction de génération de pseudo-hasard (voire une très bonne idée si vous utilisez une fonction de hasard de classe cryptographique, qui prendra beaucoup plus de temps). Mais voila, vous n’avez pas réalisé proprement le code pour récupérer les trois derniers chiffres, et vous avez introduit une perte de précision :

image

Le résultat, du point de vue du hasard, est catastrophique, à savoir que certaines valeurs sont bien plus représentées que d’autres :

image

Evidemment, si c’est un jeu qui utilise cette fonction pour introduire du bruit dans les déplacements d’un bonhomme par exemple, le déplacement sera un peu plus erratique que prévu… Dans certains cas (utilisation pour la direction au degré près), ça passe, dans d’autres (utilisation de l’aspect pair / impair pour une décision), c’est une catastrophe, car le hasard sera complètement biaisé.

Pour ne pas introduire de perte de précision, il faut repartir de la valeur choisie au hasard et lui soustraire la partie haute :

image

Ce qui nous amène à nouveau à une répartition propre des nombres :

image

Conclusion : attention quand on manipule des nombres au hasard. Non seulement des classes comme Random ne donnent que du pseudo-hasard (bien que plutôt bien équilibré en .NET), mais en plus les manipulations de chiffres après doivent être soigneusement étudiées pour ne pas perdre de précision, car dans ce cas, l’impact sur la distribution statistique peut être extrêmement fort.

Posted in .NET, C# | Leave a comment

Conférence “Concilier Architecture et Agilité” en ligne

Je suis assez fier de vous annoncer que ma conférence sur l’architecture agile a été captée au BreizhCamp 2013, et est désormais en ligne sur ce site référence qu’est InfoQ.

image

Une petite heure de conférence, dont vous pouvez récupérer les diapos en passant par le site du BreizhCamp, ou en direct avec ce lien. Je me permets toutefois de vous recommander plutôt la video : mes diapos sont de plus en plus “Lean”, avec dans la majorité des cas, seulement une ou deux images pour fixer le sujet (et accessoirement tenter de faire sourire l’auditoire).

Pour vous motiver, voici les retours en sortie de conférence :

image

Et en cadeau-bonus, découvrez dans cette conférence que Microsoft est une des boîtes les plus agiles dans le milieu de l’édition informatique. Oui, je sais, c’est dur à croire… J’y reviendrai dans quelques mois avec beaucoup plus de détails, par un projet dont je ne peux pas vous parler pour le moment, mais qui me tient énormément à coeur.

Posted in Agile, Méthodologie, Retours | Tagged , | Leave a comment

RedGate publie un second livre gratuit avec des astuces de performance

J’avais déjà parlé dans un ancien article du premier livre d’astuce de RedGate sur la performance : “50 ways to avoid, find and fix ASP.NET performance issues”. La suite vient d’arriver, sous la forme, toujours gratuite de “25 secrets for faster ASP.NET applications”. Comme le titre le fait comprendre, cette deuxième édition est plus concernée par l’amélioration de la performance que le simple diagnostic.

C’est un excellent point d’entrée si vous vous intéressez à la performance sur ASP.NET. Surtout, c’est bien à jour, avec des recommandations sur async / await.

Le livre est disponible sur http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/entrypage/faster-asp-net-apps, et pour plus d’information, vous pouvez consulter le blog de Michaela Murray.

Posted in .NET, Performance | Tagged | Leave a comment

Profilage énergétique dans le prochain Visual Studio

Enfin, ils l’ont fait ! Il existait quelques outils Open Source, ou bien on pouvait utiliser des systèmes de mesure hardware de la consommation électrique (voir ici, à 45’20’’), mais avoir un outil intégré dans Visual Studio, c’est vraiment génial :

C’est disponible dans la Preview de Visual Studio 2013 (voir ici pour tous les détails).

Posted in .NET | Tagged | Leave a comment

Un provider ADO.NET pour Bamboo Prevalence

Ca a mis le temps (annonce il y a un an), mais ça y est : le fournisseur ADO.NET pour le moteur de prévalence objet Bamboo est enfin disponible, en Open Source bien sûr, sur GitHub :

https://github.com/MGDIS/mgdis.data.bambooclient

image

C’est la société pour laquelle je travaille, MGDIS, qui l’édite selon la LGPL 3. Je ne vais pas reproduire ici le readme associé, ni réexpliquer pourquoi on a besoin de ce fournisseur pour favoriser la migration vers cet excellente (et trop peu connue) technologie qu’est la prévalence objet, mais juste une petite explication globale pour ouvrir votre appétit Sourire

La prévalence objet est une technologie qui existe depuis un bon bout de temps, et qui consiste à se débarrasser complètement de tout effort de gestion de la persistance, en programmant uniquement sur le modèle objet en mémoire. La persistance est bien sûr gérée en arrière-plan, pour ne pas tout perdre en cas de coupure électrique ou de plantage du processus, mais tout est réalisé de manière transparente. La seule condition est que le modèle ne soit modifié que par des commandes sérialisables, ce qui rend d’ailleurs la technologie très pratique dans des approches CQRS. Un système de logs et de snapshots permet d’améliorer les performances de reprise, et les performances en fonctionnement sont évidemment phénoménales, puisque non seulement tout est en mémoire, mais en plus tout est dans un modèle objet, donc pas besoin de transformer depuis une approche tabulaire, ou graphe, ou autre.

A part l’aspect psychologique (lors de la première rencontre avec la prévalence objet, on a du mal à croire qu’une librairie de 50 Ko peut permettre à des applications d’aller BEAUCOUP plus vite qu’en utilisant des bases de données indexées qui prennent 200 Mo en mémoire dès qu’on charge une instance), il y a un frein à l’adoption de la prévalence objet, à savoir qu’on ne peut requêter qu’en langage objet (ou en Linq, quand on est sur Bamboo) et pas en SQL.

C’est ce que cherche à faciliter ce fournisseur ADO.NET pour Bamboo, en proposant une solution pour réutiliser les requêtes SQL existantes. Le legacy SQL dans les applications LOB est souvent très lourd…

Le fonctionnement est simple, et compliqué à la fois. En théorie, il suffit de décomposer le SQL, puis de reconstruire une requête Linq pour exécuter la requête correspondante sur les objets gérés par la prévalence. En pratique, cela veut dire construire dynamiquement des expressions lambda, et ça… c’est quand même un peu chaud. Mine de rien, on a :

  • un niveau d’indirection entre le SQL et le modèle
  • un autre entre le SQL et l’arbre décomposé de la requête
  • un autre entre l’arbre et la requête Linq
  • un quatrième entre la partie Where ou Having et l’expression lambda
  • un cinquième entre l’expression lambda compilée et sa représentation en mémoire
  • un dernier entre la représentation mémoire et l’API Expressions de .NET

Cette complexité a usé deux stagiaires avant de trouver le bon, à savoir Damien Gaillard, qui a fait un excellent boulot d’implémentation de cette architecture. Le code a été un peu modifié pour être publié sur GitHub (version anglaise, réécriture de commentaires, structuration de classes différente), et il manque certaines parties comme la gestion des Group By, Having, etc. que je rajouterai plus tard. L’essentiel est que les principes soient exposés aux commentaires de tous. Même si vous ne comprenez pas le principe du fournisseur pour Bamboo, n’hésitez pas à jeter un oeil. Tous les commentaires constructifs, même sur des détails, sont les bienvenus !

En espérant que ce petit projet aidera à l’adoption de la prévalence objet en favorisant la migration d’applications avec beaucoup de SQL, et qu’il donnera également des idées de programmation dynamique. Sur ce point justement, une prochaine version basée sur Roslyn est à l’ordre du jour, mais je n’ose pas annoncer de date, vu que j’ai mis un an à publier ce premier code Sourire

Posted in .NET, C#, Performance | Tagged | 1 Comment