Affichage des articles dont le libellé est agile. Afficher tous les articles
Affichage des articles dont le libellé est agile. Afficher tous les articles

20 octobre 2010

Architecte ou Agile ?

Sur l'AgileTour, j'ai eu la surprise d'entendre un mythe sur l'architecture et son incompatibilité avec l'agilité. Cette fois, le propos était étoffé par un cas concret : une application qui a développé un module en local avant de constater qu'un service équivalent existait par ailleurs et centralisait cette information. Résultat : une migration à prévoir et un surcoût.
Conclusion de l'intervenant : l'architecte doit intervenir en amont pour éviter ce genre d'erreur.

Evidemment, je n'ai pas les détails du contexte, mais cette conclusion heurte mes conviction. Revoyons donc la scène au ralenti au travers de la loupe des 4 valeur eXtreme Programming :

Communication
De toute évidence, il n'existe pas de manière visible un diagramme des applications du S.I. Elles sont pourtant toutes fortement liées, donc cette information serait primordiale. Sans vouloir faire de scrum-urbanisme, un schéma logique des composants majeurs me semble indispensable. De manière plus générale, la communication ne doit pas s'arrêter au portes de l'équipe.




Simplicité
Est-ce que s'interfacer dès le début avec ce système externe aurait été bénéfique ? Le risque est de développer directement avec ses API, et de coupler les applications. En définissant une API neutre avec ses propres métaphores et son niveau d'abstraction, on découple les composants. Le code initial peut également servir de simulateur ou d'outil de test, ce qui n'est pas une perte de temps. Le concept de Simplicité est délicat à assimiler : il ne s'agit pas de faire du code naïf, ni même de faire le moins de lignes de code, mais de faire quelque chose de clair, concis, avec des rôles bien séparés et un bon niveau d'abstraction. Les métriques de cette architecture émergente sont difficiles à quantifier.
Par ailleurs, la maturité obtenue sur ce premier jet est en soi une avancée. On a toujours tendance à évaluer le coût en considérant nos connaissances actuelles, et non celles qu'on avait à l'instant t.

Feedback
Quelqu'un s'est rendu compte que le système existait déjà dans le SI, mais trop tard. De toute évidence il n'intervenait pas dans la boucle de feedback. D'où l'importance de lier aux démos un maximum de personnes d'horizons variés, de faire tourner en continue les tests d'inter-opérabilité, de publier ses API auprès des autres équipes, etc.

Courage
Il faut avoir le courage de faire un refactoring en profondeur pour abstraire l'application de ses dépendances externes. Dans cette optique, les bonnes pratiques de masquage par des interfaces nous aide  fortement. A ma connaissance, la seule difficulté majeur est de déterminer si un service est synchrone ou non, ce qui induit fortement nos interfaces. En dehors de ça, local, disant, XML, JMS, ou base de données, peu importe. Il faut aussi avoir le courage de développer son propre modèle de données et une couche de traduction, plutôt que de bondir sur le code généré depuis un WSDL. Le courage de défendre ce choix, qui coûte un peu initialement, mais qui permet une souplesse sans comparaison par la suite.

Alors ?
Si l'équipe agile a pondu une solution locale, même si elle n'est pas adaptée à la cible du S.I, elle a finalement apporté de la valeur métier rapidement. Elle a développé un mécanisme proche de ses propres besoins, respectant le critère de simplicité. Dire que le refactoring associé à une étape d'intégration dans le SI est un surcout est (AMHA) une erreur; au contraire, le système développé permet d'avoir un feedback rapide, et le refactoring nécessaire peut ne pas être si coûteux (en fonction de la maturité technique de l'équipe et de la propreté de son design). Le risque de faire intervenir une phase amont d'architecture, c'est de figer le périmètre, et de décharger l'équipe de ses engagements : "Ca ne tiens pas 1000 utilisateurs simultanés ? C'est pas nous, c'est l'architecte !"

Ma conclusion est que les architectes sont paradoxalement ceux qui défendent l'agilité pour avoir bouffé trop de projets mal ficelés, mais qui ne se l'appliquent pas à eux même. Un peu comme de vouloir une liaison TGV, mais dans le bled d'à côté. Ma conclusion secondaire, appuyé sur de nombreux autres exemples, c'est que beaucoup (trop) de gens s'arrêtent à Scrum pour mettre en place l'agilité, et ne poussent pas assez les pratiques de développement et de responsabilisation de l'équipe, ce qui est le coeur de l'eXtreme Programming.



Ah, et tant qu'on en est à parle de mythes ...
www.youtube.com/watch?v=DUoRtivgjao

15 octobre 2010

Agile Tour 2010 : Vannes

Seconde étape de la tournée bretonne Agile Tour, Vannes !
L'organisatrice a du passer quelques mauvaises nuits en cumulant une première sur cet évènement avec des grèves SNCF et les menaces de pénurie de carburant. Cependant, tous les speakers ont répondu présent à cette édition qui fut un grand succès.

Les thèmes abordés, sur 4 sessions simultanées, permettait à chacun de trouver son compte dans un large choix de sujets. Pour ma part, j'ai assisté ...

à une présentation de l'Holacracy, condensé de pratiques innovantes pour l'organisation d'une entreprise. Le principe clé est de comparer l'entreprise à un organisme vivant : chaque cellule à sa propre identité et un degré de liberté, mais elle participe à un organe, qui participe au fonctionnement global et inconscient du corps, qui lui même joue un rôle dans une société. Les fondamentaux du modèle hiérarchiques sont conservés, mais épaulés de nombreux mécanismes de feedback, d'équilibrage et d'autonomie à chaque niveau. La conférence a été perturbée par des réactions assez épidermiques lorsqu'on remet en cause les rôles bien établis de chacun dans l'organigramme de l'entreprise, comme quoi le refus du changement est présent partout, même sur l'Agile Tour ;).

à une démonstration de la table interactive "Surface" de Microsoft, très sympa pour la gestion de projet : vos post-its de tâche, bien que dématérialisés, restent quasiment des objets physiques manipulés à la main. Prochaine étape pour Microsoft : LigthSpace, qui utilise une simple projection et une détection de mouvement (même techno que sur la console X-Box ?). A n'en pas douter avec cette variante bien plus légère et riche en interactions, notre façon de travailler avec les outils de planification et de communication va évoluer à vitesse grand V. Démo est infos ici


à une présentation sur la place de l'architecture en agilité. Pour rompre avec la légende qui veut que l'architecture ne puisse pas rentrer dans un mode agile, itératif et incrémental, mais doit se faire en amont, jean-philippe gouigoux nous met en face d'une application développée en eXtrem Programming et applique au pied de la lettre les concepts de simplicité, test-driven et refactoring. D'un bout de code naïf on aboutit rapidement à une structure claire, élégante, sans redondance, et facilement extensible, c'est l'architecture émergente. La difficulté de cet exercice est de bien clarifier la notion de "simple" : simple à lire pour le novice qui connait mal les astuces du langage ? simple à lire en proposant à une personne du métier quelques classes qui résument tout son problème, en isolant les détails techniques ailleurs ?

Je n'ai pas pu assister aux autres sessions, dont le Coding Dojo TDD qui m'aurait bien tenté, car je participais à l'enregistrement des CastCodeurs #29, avec quelques difficultés techniques pour obtenir une liaison skype fiable ;)

En conclusion, une excellente journée, avec des rencontres enrichissantes et des sujets très variés. Si vous avez (encore?) raté l'AgileTour, il vous reste une séance de rattrapage à Nantes Jeudi 21 !

08 octobre 2010

Agile Tour 2010 : Rennes

Pour sa seconde édition Rennaise, l'Agile Tour remporte un énorme succès, avec 200 inscrits (le max) et de nombreuses propositions de sujets. Il faut reconnaître que pour 20€ (contribution casse-croûte) c'est un évènement à ne pas manquer !

Après l'introduction, les sessions se répartissaient dans 4 salles, dont deux orientées ateliers. J'ai eu le plaisir d'ouvrir le feu, avec un public nombreux et de bonnes questions : l'interaction du public sur cette conférence est très bonne.

Entre autres sessions, j'ai beaucoup aimé celle de Sébastien Tanguy "Scrum vs XP (charue et boeufs)". Sébastien y a souligné la grande popularité de Scrum, orienté rôle, communication et processus, et son absence de solutions pour les dérives qu'il permet de constater dans la dégradation de la vélocité. XP est donc un complément indispensable pour l'agilité, et la conférence a permis de faire le point sur 4 pratiques XP, le TDD, le refactoring, le pair-programming et l'intégration continue. Détail notable : Sébastien a fait le lien avec des sessions de l'Agile Tour 2009 et celles proposés sur cette édition - dont la mienne ;) - ce qui est un point très positif pour les choix éditoriaux des organisateurs. Les références incontournables à Uncle Bob n'ont pas manquées, même si Sébastien a choisi de se limiter aux plus softs.

Pages Jaunes faisait un retour d'expérience sur son passage au tout agile pour sortir d'un "Time To Market" bien trop long. Ils sont passés de 12 à 4 mois, avec 10 versions mises en production par an - excusez du peu. De leur propre aveux, leur approche est encore perfectible et il manque des briques importantes dans l'outillage du projet pour soutenir efficacement le processus. Le secret de leur succès : impliquer tous les maillons de la chaîne, avec une généralisation des KanBan de l'expression de besoin marketing à la phase de maintenance. Un sujet particulièrement pointé du doigt est la difficulté de marier maintenance et développement, soit avec une équipe dédiée, soit en intégrant des tâches de maintenance. Les deux approches ont des défauts significatifs qui va obliger pagesjaunes à expérimenter d'autres organisations.

J'ai aussi suivi l'atelier rétrospective pendant lequel je me suis retrouvé transformé en Renne gréviste du père noël. Ce format atelier est très intéressant pour comprendre les processus de travail en équipe et les techniques proposées par l'agilité. Dans le cadre de la rétrospective, comment amener chaque participant à identifier les éléments positifs et négatifs et à envisager ensemble des axes d'amélioration de l'équipe, loin des règlements de compte et du classement dans l'armoire IQ d'un bilan de projet "traditionnel".

J'ai aussi suivi une conférence plus "outil" sur la mise en place de tests d'acceptance avec Concordion. Mis en place sur un projet wrokflow délicat à valider avant la recette, et qui faisait l'objet de nombreuses versions correctives, il a fallu 6 mois de lobbying pour passer du premier PoC à la généralisation, mais le succès est au rendez-vous et l'outil s'est progressivement propagé dans d'autres domaines du SI. Si le coût de maintenance des tests et des "fixtures" n'est pas nié, il s'avère "linéaire" en fonction des évolutions fonctionnelle, ce qui est un avantage majeur par rapport à une approche plus bas-niveau à base de jUnit.

Sans compter toutes les autres sessions pour lesquelles je n'ai pas pris de notes ou que je n'ai pas pu suivre, l'AgileTour Rennes 2010 était donc une réussite incontestable, avec une excellente ambiance et de très bons échanges entre participants. Si vous avez raté cet évènement,  il y a des dates programmés dans de nombreuses villes françaises dans les semaines à venir.

11 novembre 2009

visual management, SCRUM et tout ça

Je sors juste de formation SCRUM Master et (ceux qui suivent ce blog le savent déjà) j'expérimente par ailleurs le management visuel.

Selon le principe du "eat your own dog food", et aussi du "mieux vaut tester d'abord sur un cas simple avant de trop se la jouer" je fais un petit essai @Home :

Je suis en train de faire la déco complète de ma chambre, donc :
  • Delphine joue le rôle du product owner. Elle donne les objectifs, comment les valider, et leur "valeur" relative - exercice un peu étrange auquel elle s'est pliée en me prenant pour un dou-dingue qui sort de sa formation tout frétillant d'excitation.
  • Je joue le rôle de l'équipe, et aussi du ScrumMaster - c'est donc totalement biaisé par rapport à la méthode théorique :)
  • Il n'y a pas vraiment de Sprint, plutôt des heures libres pour bosser par ci par là dans la semaine. Disons qu'on pratique plutôt le ScrumBan pour ceux qui ont lu cet essai.
Au niveau organisation, ça donne ça :

  • plein de choses à faire
  • une tâche entamée qui pose déjà problème et dépasse largement l'estimation en "heures idéales"
  • du mal à intégrer rapidement des tâches à forte valeur métier car elles dépendent d'autres tâches de faible valeur

  • L'objectif est donc atteint :
    • vision claire et immédiate de l'avancement (ou du non avancement dans mon cas) - ça tombe bien, c'est le but
    • vision claire des tâches à prioriser, et de la difficulté de les intégrer
    • la limitation du nombre de tâches en parallèle imposée par le kanban n'empêchent de me disperser (c'est mon gros défaut) - c'est un garde fou intéressant pour ne pas introduire de gaspillage de temps et d'énergie.
    A suivre pour savoir si l'aménagement de cette chambre terminera dans des délais raisonnables et satisfera le Product Owner, ce qui dans mon cas est un objectif non négociable ;)

    13 juin 2009

    extrem feedback device


    Comment sensibiliser l'équipe au bonnes pratiques de l'intégration continue ?

    Le contexte :
    • un bon gros projet (50 personnes * 16 mois),
    • un approche "V" pas du tout agile (déjà plus d'un an de conception dans les pattes), ce qui n'interdit pas d'emprunter aux méthodes modernes quelques bonnes pratiques,
    • une équipe hétéroclite, avec de nombreux "juniors", regroupés dans 5 équipes par couche technique - sensées collaborer ;) - et des buils Hudson FAILED à tour de bras.
    Actuellement, certains ont bien pris possession du concept d'intégration continue et suive régulièrement l'état d'Hudson. D'autres par contre semblent peu s'en préocuper et sont dans un esprit "chacun sa m..", ce qui se traduit par des commits qui cassent le projet sans que personne ne réagisse.

    Les piqures de rappel n'ayant pas données de résultats très convaincants, surtout que je suis loin d'être un bon exemple, je voulais expérimenter une approche plus ludique : le feedback visuel

    "Extreme feedback device" : trois lampes qui illuminent le couloir pour indiquer l'état du build - difficile de passer à côté et de faire l'indifférent. Un truc comme ça :


    La commande se fait depuis le PC via le port parallèle - je sais, les PC modernes n'on plus cette relique du IBM PC, mais ici on a pas encore reçu les nouveaux core i7 triple channel, on doit se contenter ne nos Lenovo un peu asfixiés par Eclipse :)

    Le port parallèle, programmé au plus bas niveau, a l'intérêt bien connu des bidouilleurs de se comporter comme un "octet exposé au reste du monde". Ses 8 pins sont contrôlables en 0V / 5V en fonction du byte inscrit sur ce port. Il est donc facile de piloter jusqu'à 8 lampes en y envoyant de 0 à 255.

    1er soucis
    Le "plus bas niveau" est un peu compliqué sous Windows ou le port parallèle est masqué par l'abstraction matérielle. Il existe cependant des drivers bidouille qui corrigent le tir, ainsi qu'un soft qui assure l'accès exclusif à ce port (sans quoi ça merde de temps en temps).
    - le soft qui va bien pour écrire byte par byte sur le port parallèle en Java
    - le soft qui va bien pour un accès exclusif sous windows

    Un premier "proof of concept" pour allumer une led rouge (en ce moment c'est la couleur dominante) et mettre au point le côté logiciel, basique mais fonctionnel. L'occasion aussi d'amuser la galerie et de préparer l'équipe pour la suite.


    Une fois cette formalité remplie et les premier regards amusés des collègues, on sort le fer à souder. Liste de courses :
    • un vieux cable d'imprimante "centronics" (comme quoi faut jamais rien jeter)
    • quelques composants électroniques (~20€)
    • trois ralonges (pour pouvoir placer les lampes à qq mètres de mon bureau),
    • une boîte tupperware pour mettre tout ça à l'abris - c'est tout de même du 220v, faut pas déconner.
    Le montage n'a rien de bien compliqué, mais comme mes cours d'électronique sont un peu loin je me suis reposé sur ce plan. Si vous comptez allimenter un transfo ou un moteur (typiquement un gyrophare 12v) faites gaffe, ce n'est pas exactement le même schéma.

    2ème soucis
    Ce premier essai est un bide : rien ne marche. J'ai d'abord cru avoir grillé les optocoupleurs (c'est tout de même du 220V, on hésite à venir y mettre ses doigts). En fait le montage que j'ai voulu utiliser suppose que la prise parallèle débite suffisement de jus ... ce qui était loin d'être le cas au cous de mes essais. Il faut donc ajouter un "étage" suiveur de tension - ressortez vos cours d'électronique sur les transistors ! Dans ma boîte à bricoles j'ai retrouvé tout plein de ces bidules à trois pattes, l'occasion de (re)découvrir à quoi ça sert.

    Après un test sur plaque d'essai (attention au 220V :-/) implantation sur circuit imprimé et mise en boîte.

    3ème soucis
    On branche et ... les plombs sautent. Après une bonne heure à tester chaque module sans trouver de problème, je décide de couper le circuit en deux sous les opto-coupleurs, de manière à avoir une isolation totale entre 220 et 9V - et ça marche. Comme quoi ma plaque d'essai ne devait pas être au top question isolation.

    Je vous passe les 4ème, 5ème et 6ème soucis (la LED qui s'allume pas, un fil de masse qui se déssoude ...)

    Pour les "signaux visuels" vous pouvez ressortir ces blocs-spots octogonaux en plastique qu'on a tous achetés un jour pour animer une boum - ça peut vous faire un joli feu de signalisation. Moi, j'ai fait une petite folie :
    • trois tubes néons de couleur bleu/jaune/rouge (19€ chez alinea)
    • un gyrophare rouge pour venir épauler le tube rouge (16€)

    et voilà le résultat en action :
    Le "Laser Saber Extreme Feedback Devive (TM)"

    Pas de photo ? Ben non, j'ai oublié mon appareil, revenez en fin de semaine ...

    Effet étonnant : le jour de l'installation, 12 builds bleus alors qu'on plafonnait péniblement à un ou deux par jours au meilleur de notre forme. Pourvu que ça dure !

    Autre option pour ce type de montage, utiliser un circuit programmable, comme par exemple celui-ci qui intègre sur quelques cm² un serveur HTTP avec sa prise ethernet. Mais là, ça devient presque de l'industrialisation. Le côté bricolage facilite le succès du bidule auprès de l'équipe ;)