Archive

Archives de l'auteur

French SUG – deuxième soirée mensuelle

Le jeudi 18 Novembre a eu lieu la deuxième soirée du French SUG (Scrum User Group) de l’année. C’est la première pour moi, et j’avoue ne pas avoir été déçu. Je ne parlerai pas des locaux dans lesquels nous avons été reçus pour l’occasion (mais c’est plutôt superbe), mais plutôt des intervenants : Martin Sudmann de la société PriceMinister, Céline Srauder de CLT Services (déjà vue à l’Agile Tour 2010 à Paris) et Ludovic Galabru de la startup Scrumers.

Cette soirée a été l’occasion de partager des retours d’expérience sur la mise en place de l’agilité dans différents types d’entreprises. Mais avant cela une rapide présentation d’un nouvel outil pour promouvoir l’agilité : l’agenda agile (http://www.agenda-agile.org/), qui a pour but de présenter les différents évènements en France et en Europe autour de l’agilité.

Première présentation : Le rythme agile chez Price Minister (Martin Sudmann)

Trois outils ont été mis en place dans cette entreprise : Scrum, Kanban et des lab days. Au démarrage, c’est Scrum qui a été mis en place, avec des sprints de deux semaines pour la maintenance de leur site, avec des pratiques XP (TDD, Pair Programming…). Une définition du « Done » assez poussée : code couvert, code relu, refactoring effectué, démo faite au PO et tests d’intégration écrits. Un point notable : la présence d’un sprint spécifique dit « de livraison » (1 sprint sur 4) juste avant une release, dans le but de corriger les bugs pendant la phase de recette. Les problèmes de cette phase est que le sprint backlog est imprévisible : il s’agit des retours issus de la recette, et ce en plus des tâches à réaliser durant le sprint (et oui ils ne se tournaient pas les pouces en attendant les anos !) ; il est donc difficile pour l’équipe de s’engager sur un contenu. Plusieurs choses ont été tentées pour améliorer cela : baisse de la vélocité, création d’items de livraison, création d’items « fantômes » de correction d’anomalie … sans succès.

Dans un deuxième temps, pour pallier ce problème, il a été décidé de mettre en place une approche Kanban en lieu et place du sprint de livraison. Cette idée est venue à Martin en lisant le livre d’Henrik Kniberg : Kanban et Scrum – tirer le meilleur des deux (http://henrik-kniberg.developpez.com/mattias-skarin/livre/scrum-kanban/).

Pourquoi un tel choix ?

  • plein de taches courtes à livrer rapidement
  • pas d’engagement de périmètre
  • travail en cours limité pour plus de réactivité sur les anomalies
  • conceptions techniques (POC) en parallèle

Ici le kanban permet de suivre deux lignes : une pour les correction d’anomalies liées à la livraison, prioritaire sur la ligne de taches de fond, qui peut avancer lorsque l’équipe de recette ne livre pas de retour. Ce mode de fonctionnement permet de tirer le meilleur de l’équipe, qui de sprint en Kanban se retrouve fatiguée, vidée de son énergie.

C’est pourquoi dans un troisième temps, les « lab days » ont été mis en place. Que sont ces lab days ? Il s’agit de demi-journées où l’équipe choisit le sujet sur lequel elle travaille, et toujours en paire (ils sont 6 dans l’équipe) afin de souder l’équipe.  Ces demi-journées ont lieu à la fin de chaque sprint, pour rappel toutes les deux semaines, le vendredi après-midi (sprint fini le jeudi, sprint planning le vendredi matin). Les sujets tournent autour de TP, de l’auto-formation et des méthodologies. Petite remarque intéressante pour illustrer ces lab days : la présentation que nous fait Martin Sudmann ce soir là a été réalisé en collaboration avec toute son équipe durant un lab day !

Pour finir sa présentation, Martin nous parle d’autres pratiques mises en place chez Price Minister, tels que des groupes de travail transverses (task forces), pour lesquels un membre de chaque équipe de développement participe sur des sujets liés à l’environnement de développement ou à l’interface utilisateur du site, des sujets communs aux 4 équipes (Scrum) de développement du site. Il nous parle aussi de la communication inter-équipes, via des présentations, des workshops, des newsletters, ou encore des posters.

J’avoue avoir été très intéressé par cette démarche agile, pour plusieurs raisons :

  • je ne connaissais pas Kanban
  • je trouve ces lab days fabuleux (et en plus la hiérarchie approuve, car ils publient les résultats de leurs travaux, créant l’émulation dans et entre les équipes)
  • ça m’a rappelé qu’il fallait être agile dans la mise en place de l’agilité, de toujours adapter les pratiques de l’agilité en étant créatif et audacieux, afin de motiver les troupes et de créer un cadre de travail efficace et convivial !

Deuxième présentation : Scrum et XP dans les entreprises ‘Waterfall’ (Céline Stauder)

Ok, j’ai raccourci le titre, le vrai c’est « retour d’expérience sur l’implémentation de Scrum + XP dans plusieurs DSI de culture traditionnelle » … Soyons synthétiques donc : la présentation s’articule autour de cinq problématiques rencontrées chez un (ou plusieurs) client.

1 – La résistance au changement

Souvent les méthodes agiles sont mal comprises, pour remédier à cela, il faut expliquer, évangéliser et former les équipes de travail, ainsi que le management. Le changement de culture peut poser également problème, mais aussi un manque de prédictibilité apparent. Pour ces différents problèmes Céline a insisté sur l’accompagnement fort qu’il faut faire auprès des équipes pour mettre en place l’agilité dans les meilleurs conditions possibles, et ce de manière progressive (pas de changement brutal).

2 – Les parties prenantes au coeur de l’équipe

Souvent les équipes sont éparpillées et la MOA se détache des équipes de développement. Le but est donc d’impliquer la MOA, qui doit s’approprier la solution, la réalisation du produit. Céline nous rappellera plus tard qu’il est de bon ton qu’un membre de l’équipe métier vienne travailler directement au contact de l’équipe Scrum, membre qui devient alors PO délégué (attention il ne peut pas être le seul PO sans quoi il devient souvent trop indulgent avec l’équipe à son contact).

Il faut parfois recadrer les équipes métier, qui au lieu de venir avec une expression de besoin, arrivent avec un problème et une ébauche de solution technique. Il faut bien diviser les étapes : le métier développe une expression de besoin, l’équipe de réalisation conçoit une solution et la développe si elle répond correctement au métier.

3 – Scrum et le management : définition des rôles

Voyons comment ont été définis les rôles chez le client dont Céline nous parle :

- MOA : PO délégué, au sein de l’équipe Scrum

- Chef de projet technique : il voulait être Scrum Master, mais le lien hiérarchique avec l’équipe Scrum l’en a empêché, ce rôle a donc été exclu de la méthodologie (je parle du rôle, pas de la personne), du coup le SM a été joué par tous les membres de l’équipe (rotation à chaque sprint)

- Pour l’équipe, rien à faire elle était déjà constitué. On note juste que la notion d’engagement sur chaque sprint a due être inculquée.

4 – La transparence et le droit à l’erreur

Dans cette entreprise il y avait une forte culture du cloisonnement et de la culpabilité. Dans ce contexte hostile, difficile de faire quelque chose d’agile ! Plutôt que de partir dans la recherche des coupables quand une erreur est commise, Céline tente de développer une dynamique d’équipe qui a pour but de résoudre le problème en question. On accepte le droit à l’erreur, et on profite de celle-ci pour s’améliorer, par l’expérimentation.

5 – Rituels Scrum et développement itératif

L’environnement de l’entreprise n’est pas toujours adéquat à la mise en place de pratiques agiles. Il faut à tout prix pouvoir intégrer en continu et donner accès au métier à un environnement d’intégration stabilisé.

Quant aux rituels agiles, entre le planning, les daily, la revue, la rétro … ça fait beaucoup de réunions ! Afin d’expliquer tout cela il faut jouer la transparence et réaliser des compte-rendus de ces réunions, pour expliquer la démarche et montrer que des artefacts qui facilitent le travail sont issus de ces réunions.

Bilan

Si c’était à refaire, Céline mettrait en place une démarche Scrum et XP de manière très progressive, presque en douceur, en commençant par mettre en place le tableau Scrum, qui permet d’offrir de la visibilité, puis en mettant en place des métriques, sur les retours de bugs par exemple, qui permettrait de mettre en évidence les gains apportés par la mise en place de l’agilité (si c’est le cas bien entendu :) ) et ce afin de négocier le changement. Elle mettrait ensuite en place les daily meetings, car c’est simple et motivant, puis les rétrospéctives, même si cela prend du temps, car elles permettent l’amélioration continue des méthodes de l’équipe Scrum.

Troisième présentation : Scrumers (Ludovic Galabru)

Scrumers, c’est deux choses : une startup et un produit (http://scrumers.com/). Ludovic est donc membre (fondateur ?) de la société qui développe le site web, qui est en fait une application Scrum, au même titre que d’autres que je ne citerais pas pour ne pas faire de l’ombre à cette jolie application qui nous a été présenté à la fin, je vous invite donc à découvrir cette séduisante application (à vous d’y trouver votre compte).

Mais avant cela Ludovic nous a parlé de la mise en place de l’agilité dans une startup. Et oui car pour développer un produit relatif à Scrum, c’est mieux de le faire en Scrum, sinon c’est pas classe.

Le MVP

Ludovic nous présente donc le MVP : Minimum Viable Product (je ne vous ferai pas l’affront de traduire). Il s’agit de faire le minimum qui peut plaire aux clients, et ce afin de cibler un public targué de « early market ». C’est au moment où l’on arrive à ce MVP que l’on peut commencer à itérer et mettre en place Scrum. Mais pas avec un backlog produit, mais avec ce MVP, qui va évoluer et servir de référence pour les sprints.

Avoir du feedback

La revue de sprint, c’est la communauté qui l’a fait ; autant vous dire que l’indulgence n’est pas au rendez-vous, et Ludovic nous a parlé de ses angoisses lors de ses premières itérations (propres à tous les open sourceurs à mon avis).

Il existe des moyens de feedback plus implicites, telle la mise en place de Google Analytics pour surveiller le traffic sur son site et le corréler avec la satisfaction de ses utilisateurs. Pour le contenu des sprints, il met souvent en pratique ce qu’il nomme le A/B testing : il implémente deux solutions répondant à une problématique et laisse la communauté choisir la meilleure.

Quand on a du feedback négatif, il ne faut pas hésiter à « faire un pivot », ça veut dire faire demi tour (au cas où c’était pas clair).

Voilà pour la présentation de ce jeune développeur, je vous invite maintenant à aller voir son produit et pourquoi pas à lui donner du feedback !

Conclusion

Pour ma part, j’ai trouvé cette soirée enrichissante. L’intervention de Martin et sa mise en place de l’agilité m’a particulièrement intéressé, de voir comment on peut mixer Kanban et Scrum, et cette recherche permanente d’améliorer le process, sans s’en tenir à une seule pratique. Bref tout ça pour dire que Scrum c’est bien, mais que ce n’est pas la seule solution pour être agile, il faut avoir l’esprit ouvert et trouver les solutions adaptées à chacun !

J’espère que ce petit compte-rendu vous a motivé à vous rendre au prochain rendez-vous du SUG, sur le thème « Usages et Agilité », qui aura lieu chez Microsoft. RDV en Décembre !

ParisJug Google – Wave (part3)

Mais elle était si longue cette soirée ??? Pas assez malheureusement, beaucoup d’infos diffusées en très peu de temps, voici donc la dernière partie de notre compte-rendu …

Google Wave

Cette présentation, faite par Didier Girard et Salvador Diaz, fut une succession de démos Wave, M. Girard préférant nous montrer du concret … et il n’a pas eu tort. Juste pour rappel, Wave est une plateforme de collaboration web, qui essaie de réunir tous les moyens de communications actuels et de les regrouper dans une vague, une ‘wave’. Ainsi une wave est un flot de communication qui peut contenir toutes sortes de choses : du chat, des fichiers, des mails, des images. Une wave est une succession de ‘Blips’ : chaque composant qui s’ajoute dans une wave est donc un blip. Le langage Google Wave est maintenant défini !

Voyons maintenant comment développer sous Wave … une Wave peut contenir deux choses intéressantes :

  • des gadgets : comme des gadgets iGoogle, sauf qu’il y a une notion multi utilisateur et shared context
  • des robots (rien à voir avec Goldorak comme nous l’a subtilement fait remarquer Didier !) : participant automatique d’une wave

Comment développer un gadget ? Il suffit pour cela d’écrire une classe qui étends Gadget, d’écrire son comportement, et attention, de le déployer sous GAE !!! On parle là de la méthode Girard, on n’est pas obligé d’utiliser GAE, mais il semble clair qu’on aurait tort de s’en priver ! Ce fut l’objet de la première démo : Qui se cache derrière le coq ? Ce gadget anime la mascotte du jug, et lorsqu’on parvient à cliquer dessus, surprise : le visage d’Antonio Goncalves (co-fondateur du jug) apparait ! Forcément, ça a fait réagir positivement la salle, qui était pleine à craquer !

Comment développer un robot ? Il s’agit en fait d’une servlet, qui a pour mission d’écouter une wave, et qui est bindée à une appli sur GAE (par exemple). Un robot peut modifier le contenu d’une wave et communiquer à l’extérieur de la wave (autres waves, applis externes, persistence BD etc…). Pour développer un robot il faut étendre la classe AbstractRobotServlet pour définir le comportement du robot après avoir défini le scope de ses events dans le fichier capabilities.xml. Ceci fut l’objet de la deuxième démo où les membres de l’auditoire envoient des sms sur un numéro indiqué au début, et le robot réceptionne les sms et les affiche dans la wave … impressionnant et très interactif. Les intervenants ont même eu la bonne idée de créer un sondage sms pour savoir combien de personnes étaient intéressés par le prochain JUG. Ce fut l’occasion de se délecter des réponses de certains participants !

Pour en savoir plus sur le développement de gadgets, allez voir ici, et pour le développement des robots, allez voir .

Lors d’une troisième démonstration, nous a été présentée une ébauche d’application de gestion hébergée sur une wave : une gestion de demandes de congés, avec la mise en place d’un workflow de validation. Bien qu’on n’ait pas pu bien voir le code, tout a été dit avec cette dernière démo : Google Wave peut être le théâtre d’un nouveau modèle de développement informatique, qui, associé à GAE (forcément me direz-vous), permet à Didier Girard de nous laisser entrevoir ce monde idéal où le développeur est au centre de l’innovation (développeur=innovateur selon ses propres termes).

Voilà donc que se termine cette soirée Google, somme toute assez riche, bien qu’inégale, et trop courte, on aurait pu parler pendant des heures de toutes ces technologies, et même d’autres (GWT 2.0 par exemple !), mais il ne s’agissait pas de refaire le Google I/O !… (ni un Google User Group d’ailleurs ;)

Vous pouvez retrouver les slides de toutes les présentations (sauf de GoogleWave) ici (déjà linkés au fil des précédents posts).

N’oubliez la soirée Java EE 6 et Spring 3.0 qui aura lieu le 8 Décembre.

On se retrouve au prochain jug ?

Categories: Actualités Tags: , ,

ParisJug Google – App Engine (part2)

Et la soirée Google continue … voici donc la suite de cette histoire.

APP Engine

Cette présentation fut menée par Guillaume Laforge, créateur de Groovy. On pouvait donc se douter de la coloration que pourrait prendre cette présentation GAE, qui tourna rapidement en présentation GAELyk, sucre Groovy pour exploiter sereinement les APIs GAE. Un bref résumé de ce qu’est le cloud computing, ou XaaS, soit :

  • SaaS : Software as a Service
  • PaaS : Platform as a Service <– positionnement Google avec GAE
  • IaaS : Infrastructure as a Service

L’intérêt soudain de la communauté Java pour GAE s’est produit lors de l’annonce du support Java (JVM Sandbox, serveur Jetty) par GAE l’an dernier. L’intérêt est de faire héberger sur les plateformes Google une application web, donc un war, ce qui permet d’utiliser nos frameworks web préférés (GWT, Dojo, et même Flex !), et de ne pas se soucier des problématiques d’installation, de scaling …En plus de cela, il y a des services offerts par les APIs GAE très intéressants : gestion de la mémoire CPU ou de la persistance DB, l’url fetching (liens vers sites externes), mails, librairies de manipulation d’images, support XMPP (Gtalk), support de login Google, et pour finir, gestion des CRON et Task Queues.

Que du bonheur, sauf que voilà, rien n’est gratuit en ce bas monde, il y a des limitations :

  • quotas : assez hauts, il faut générer beaucoup de traffic, mais il y a des quotas sur tous les services GAE : CPU, la mémoire , l’espace disque, les mails, les url fetch, xmpp … bref sur tout !
  • pas une ‘vraie’ DB relationnelle : il s’agit de BigTable, sorte de Map (key/value), qu’on peut attaquer via JDO ou JPA (ouf !), mais il ne s’agit pas vraiment de SQL
  • requêtes > 30sec interdites
  • nombre de fichiers, ainsi que leur taille, limité

Voilà donc pour la présentation GAE, en ce qui concerne l’intégration Groovy avec Gaelyk, cela semble très sympathique, je vous invite à regarder la présentation de Guillaume et ses compères ici.

Categories: Actualités Tags: , ,

ParisJug Google – Androïd (part1)

Le mardi 10 Novembre 2009 a eu lieu le JUG parisien sur Google, JUG qui s’est temporairement transformé en GUG !

Trois thèmes abordés lors de cette soirée : Androïd, GAE et Wave. Les présentations furent intéressantes bien qu’inégales, mais globalement toutes étaient trop courtes (environ 40 minutes pour chaque sujet, c’est peu).

Androïd

Je ne reprendrai pas l’historique d’Androïd, seulement la partie dév. Il faut savoir qu’Androïd est basé sur un noyau Linux 2.6 et un environnement Java, sauf que ce n’est pas du vrai Linux et qu’il n’embarque pas une JVM, mais une Dalvik VM, allégée et spécifique à des processeurs et unités mémoire de téléphone portable. De ce fait quand on veut développer une appli, on utilise un simili Java SE (AndroïdSDK, en v3 pour Androïd 2.0). Google livre donc un outillage spécifique : l’Androïd Development Toolkit (ADT) qui s’intègre sous Eclipse, qui offre un joli émulateur/debugger de Google Phone (Androïd Virtual Device) qui permet de visualiser le rendu de notre appli. L’environnement de développement offre une interface WYSIWYG (on peut sinon faire du declarativeUI, ou encore du programmaticUI), et manipule essentiellement 4 types de composants :

  • les activités : composants graphiques, comparables à des widgets (une activité correspond à un écran)
  • les services : comme son nom l’indique, il s’agit de services (fonctionnement comparable aux threads)
  • les broadcast receivers : réception de message broadcast (exemple : message de batterie faible)
  • les content providers : fournisseurs d’accès aux données publiques

On voit donc apparaître une notion de message, qui semble être une notion capitale dans le dév Androïd : on parle alors d’ « Intent ». Un intent, peut être soit explicite (cible un composant au sein d’une application) ou implicite; il s’agit alors d’un message qui circule entre toutes les applis Androïd (pas de couplage fort entre les applis ). Par manque de temps, la présentation s’est arrêtée ici, mais vous pouvez voir le support complet .

La suite dans le prochain billet !

Categories: Actualités Tags: , , ,