Rupture Douce saison 2 est sur les rayons

Alors je dois l’avouer, je n’ai même pas encore lu la saison 1 ! J’ai bien été relecteur de quelques histoires, mais je n’ai pas encore sorti le livre de son étagère où il prend tranquilement la poussière. Tellement à lire, si peu de temps…

rupture-douce02

Le volume de la saison 1 va bientôt avoir un compagnon de misère : j’ai commandé mon exemplaire de la saison 2, oui même en sachant qu’il risque de s’écouler un petit moment avant que je m’y plonge sérieusement.

Etes-vous comme moi ? Au final peu importe : nous allons y trouver les textes émanant d’intervenants réguliers de la communauté agile française. Nous n’avons pas toujours le temps ou l’opportunité de les voir en conférence. Et même alors nous regrettons de n’avoir au mieux que le support de présentation à notre disposition et pas la substantifique moelle ! Cessons de nous lamenter, rupture douce vient à la rescousse.

Vous pouvez :

Retours sur Agile France 2013, 1ère partie (en images)

J’avais fait l’impasse sur l’édition 2012, je suis revenu pour l’édition 2013. Cette année encore Agile France promettait un programme attrayant : promesse tenue ! Le “take away” de ces 2 jours de conférences ne rentre guère dans mon sac à dos, c’est un semi-remorque qu’il va me falloir. Une fois de plus, je vais vous distiller cela en plusieurs parties.

Place à l’action, ou plus précisément à la première session de la journée.

agileFrance2013-01Keynote02

Peter Stevens : From Value to Values

Why management has to change and how IT is inspiring the solution

Nous étions quelques un à avoir eu l’occasion de croiser Peter Stevens lors d’une Scrum Beer il y a environ 2 ans. Cette fois, il nous faisait la keynote de la conférence et venait nous parler du Stoos Network. J’avais une première fois évoqué ce mouvement à l’annonce du Stoos Connect, puis plus récemment pour parler du Stoos Satellite Paris.

C’est bien du Stoos Network dont Peter Stevens est venu nous parler. Selon lui, le monde se divise en 2 types de sociétés:

  • Celles qui enchantent leurs clients.
  • Les autres.

Vu comme ça, c’est un peu simpliste. Creusons un peu. Aujourd’hui, les compagnies ayant un fort “focus client” sont celles qui gagnent de l’argent. Car il n’a jamais été aussi facile de changer de fournisseur ou de service. Votre service de téléphonie ne vous plait plus, résiliez-le dès aujourd’hui pour prendre un nouveau plan ! Il y a 30 ans, Peter Stevens nous confiait qu’en Suisse, un abonnement téléphonique nécessitait un dépot de garantie équivalent à un demi-mois de salaire ! Nous avons donc changé de logique :

  • Autrefois : “you take what we make”.
  • Aujourd’hui : “I choose what I want”.

Pour autant, ce changement de polarité ne s’est pas accompagné d’un changement de paradigme dans la logique de l’entreprise.

agileFrance2013-01Keynote03

L’entreprise moderne continue de choisir son cap en fonction des dividendes qu’elle peut reverser à ses actionnaires. C’est une logique qui n’est en fait pas celle permettant d’obtenir les meilleurs résultats car elle part du mauvais point.

Pour enchanter le client, il faut augmenter la vitesse de réactivité, faire grandir la capacité d’innovation. L’économie d’aujourd’hui est une économie de la créativité. Toutes choses que le mode de fonctionnement “commande / contrôle” hérité du Taylorisme et du Fordisme ne permettent pas.

Il doit y avoir une meilleure façon de faire, c’est le constat que différents courants de pensée du réseau Stoos (radical management, tribal leadership, beyond budgeting, management 3.0, etc…). Et elle s’inspire de l’agilité.

Pour Peter Stevens, l’élément le plus important du manisfeste agile se situe en haut de celui-ci :

We are uncovering better ways of developing software by doing it and helping others do it.

Stoos Network est un “mouvement de mouvements” qui promeut l’entreprise non comme une structure pyramidale, mais comme un réseau “apprenant” de personnes, dont les managers seraient les servants.

Aujourd’hui, l’agilité dans les projets informatiques est confrontée à une frustration de par les conflits qui l’opposent à un management classique. Stoos est la continuité de ce mouvement vers l’organisation de l’entreprise.

Je n’ai pas trouvé la présentation de Peter Stevens, mais un support qui s’en approche de très près.

J’ai été un peu déçu par cette keynote. Bien que quelques exemples (visibles sur les supports) aient pu nous donner à réfléchir, elle est pas mal resté dans les généralités.

Géry Derbier : Le leader en tant qu’hôte

J’avais suivi de loin l’intérêt de Géry pour le host leadership, mais sans m’y intéresser plus avant, car on ne peut pas être partout, n’est-ce pas ? Mais Géry étant mon futur collègue, j’essaie de le pister un peu…

Déjà, ça commence par le coincer en face de mon objectif !

agileFrance2013-02Gery01

Cette session était en fait un atelier participatif. On parle toujours du “servant leadership” par opposition au “leader command & control”. Certes, mais comment cela peut-il se matérialiser ? Il y a-t-il des parallèles avec de choses que nous connaissons qui pourraient nous aider ?

Il se trouve que oui !

Que se passe-t-il quand nous participons à une fête que nous jugeons réussie, que fait l’hôte pour rendre cela possible ? C’est à ce travail de reflexion que nous a invité Gery aujourd’hui. Par petits groupes, nous avons cherché à décortiquer les ingrédients d’une fête réussie

agileFrance2013-02Gery03

Une reflexion pas très facile à mener en un temps limité. Je vous livre en vrac les points qui sont remontés :

  • Favoriser l’émergence, laisser de la liberté pour permettre la créativité.
  • Avoir une (des) réactions en chaine. A l’image de ce qui se passe quand on commence à danser.
  • Créer le lien entre les personnes. C’est vrai surtout quand nombre d’entre elles ne se connaissent pas. C’est moins le cas dans des réunions de famille.
  • Le pouvoir de l’invitation. On ne vient pas sous la contrainte, c’est un acte volontaire.
  • Donner la permission, ou comme le dira Olivier Pezziardi “pas faire chier les gens”.
  • Ne pas chercher à obtenir un résultat. On créé les conditions, le résultat vient en second.

Mais est-il possible de considérer un projet de la même manière ? Sommes-nous invités à nous joindre à un projet ? J’aurais tendance à répondre “oui”. En fait, cela se passe beaucoup dans la tête: nous sommes invités si nous avons envie de nous sentir l’être. Mais c’est juste un avis personnel. Je vous invite à lire le white paper accessible sur le site host leadership.

Cyrille Martraire : Code legacy : Faire évoluer ou réécrire ?

Cyrille est un adepte fervent du DDD et un membre actif de la communaute du software craftmnship. Aujourd’hui il vient évoquer avec nous les stratégies de travail sur le code hérité (legacy code). Cette présentation s’appuie sur un projet mené chez Sungard autour d’un système d’asset management. Nous parlons ici d’une application vieille de 20 ans lourde de 20 millions de lignes de code avec des procédures stockées, des EJB2, etc…

agileFrance2013-03Martraire02

Mais qu’appelle-t-on “code legacy” ? Pour Michael Feathers, du code hérité n’a pas de tests. Si l’on se calque sur cette définition, du code hérité n’a pas besoin d’être vieux pour être considéré ainsi !

Alors, faire évoluer ou récrire ?

Il faut regarder les choses avec lucidité: espérer que tout soit “beau” un jour est illusoire. Ca n’arrive pas !

Le postulat de départ est donc : on garde tout ! Mais pour faire évoluer en gardant l’existant, il faut se munir de tests, d’une manière ou d’une autre. Comment faire ?

Je vous présente le “Software Testing Ice-Cream Antipattern” ! On commence par le haut: si on a rien, on fait des tests manuels. Puis on essaie d’automatiser les tests par l’IHM. Dès que le découpage en couches devient à peu près présentable, on passe à des tests d’intégration pour tester les API. Enfin quand le niveau de découplage interne le permet (le plus souvent jamais) on met en place des tests unitaires !

softwaretestingicecreamconeantipattern

Bien sûr, c’est très coûteux, et l’orateur évalue le différentiel de vélocité de 1 à 4 par rapport à du code neuf écrit en TDD.

Et s’il faut réécrire, doit-on réécrire ?

Pas toujours. C’est la fameuse question du “make vs buy”. Si le processus métier habillé avec le logiciel est un différenciateur de l’entreprise, alors il faut faire ! Comment se différencier en pratiquant la même chose que les autres ? Si ce n’est pas différenciateur, alors il faut essayer d’acheter. Oui, mais le logiciel sur étagère ne corresponds pas exactement à ce que je fais … N’essayez pas d’adapter, même si l’éditeur dit que l’on peut, même si de nombreuses société qui sont prêtes à vous vendre du conseil disent que l’on peut (et qu’elles peuvent vous “aider”). Ou alors, faites-le à minima, faites votre possible pour plutôt adapter vos processus au logiciel. De toute façon, ce ne sont pas eux qui vous rendent différenciant, ce sont des centres de coût.

Visualiser

Il est bien rare que l’on doivent intervenir partout en même temps dans du code hérité. En fait cela concerne le plus souvent un volet précis de l’application : une phase de traitement, de nouveaux instruments financiers, etc…

La première étape que nous propose Cyrille est de visualiser le flux métier. A l’image de ce que l’on montre lorsque l’on construit une story map (là c’est moi). Il s’agit de donner de la structure. Sur celle-ci s’appuient des fonctions secondaires et des concepts. C’est le travail péparatoire qui va nous permettre de passer à la suite. Ce que Martin Fowler appelle l’Asset Capture.

A partir de là, il va falloir identifier le ou les assets concernés par l’évolution.

Comment intervenir

Quand on part d’un legacy à priori inconnu, il y a une démarche logique pour aborder la bête :

  1. Lire la documentation
  2. Interroger les anciens qui la connaisse peu ou prou.
  3. Utiliser l’application.
  4. Lire le code.
  5. S’essayer dessus en fixant des bugs.

Le principe de base des évolutions, est de ne pas essayer de faire plusieurs choses en même temps. Il faut y aller prudemment, s’insérer dans l’existant même si on n’aime pas ce que l’on voit. Des conseils souvent prodigué dans les Reengineering Patterns.

Comment s’organiser

Comment pensez-vous procéder : en opérant une réécriture iso-fonctionnelle ? Sachez-le, personne ne paie pour cela.

Une réécriture s’accompagne toujours d’une certaine dose d’évolutions. Oubliez l’idée d’une équipe refonte constituée de pur techos, il va falloir une vrai équipe projet regroupant des compétences diversifiées (analystes, testeurs, etc…).

Maintenant il faut se mettre au boulot !

Strangler application

Le pattern préféré de Cyrille est le Strangler Application Pattern, lui aussi décrit par Martin Fowler. Comme son nom l’indique, ce pattern consiste à “étrangler” progressivement l’application existante en envoyant les traitements qui ont été réécrits vers la nouvelle application. Le point faible étant ce dispatching qui doit alors exister dans l’ancienne application, nécessitant un refactoring pas nécessairement négligeable… Les deux points clés de l’approche sont:

  • Le décomissionement des concepts : on travaille concept par concept, et on switch complètement l’un d’entre-eux quand il est prêt dans la nouvelle application. C’est donc mieux quand les concepts sont assez atomiques.
  • Le “feature toggle” qui doit permettre le basculement vers la nouvelle application. Attention, parfois cela se passe mal, il est alors souhaitable dans ce cas de pouvoir revenir en arrière.

Bubble context

Le développement de nouveaux concepts s’opère dans une “bulle” isolée des adhérences avec l’existant, du moins autant que faire se peut. C’est l’Autonomous Bubble Context décrit par Eric Evans.

Isolé du monde legacy, le développement s’opère comme un nouveau développement, en TDD & BDD. Entre l’ancien et le nouveau monde, une Anti-Corruption Layer isolée vers le haut par une API et par le base par une SPI, opère comme un sas entre les deux environnements.

Quelques points clés à ne pas oublier :

  • Se faciliter la vie en ayant un certin niveau de mapping avant l’existant. On pense surtout ici au mapping avec la base de données.
  • Décréter le “freeze” de l’existant : toute évolution doit s’opérer dans une Bubble Context. On touche seulement à l’existant pour opérer des renvois vers la bubble context.
  • Ne pas oublier qu’une bulle n’a qu’un temps. Avec le passage du temps, elle-même deviendra du legacy à son tour un jour.

Pour résumer la stratégie de réécriture, l’orateur nous résume la chose :

Réécriture = Frontières clairement définies + stratégie d’étranglement + intégration minimale.

Je n’ai pas exactement le support que Cyrille a utilisé, mais un très proche. Le voici 

Lectures recommandées

Essentiellement 3 ouvrages à connaitre. Ils sont tous sur mes étagères mais n’ont pas encore fait l’objet d’une note de lecture publiée :

Vous pouvez également lire l’excellent retour de Vincent Uribe sur cette session, sur le blog Soat.

Break !

Le début de matinée a déjà été bien rempli. Il est temps de faire une pause. C’est une occasion pour reprendre contact avec les uns et les autres. On est là aussi pour ça.

agileFrance2013-04BreakJeudiMatin02

C’est aussi la pause pour la publication de mon retour d’Agile France. Nous sommes agiles, on va faire tout ça de manière itérative, que diable ! Rendez-vous bientôt pour la suite de mes périgrinations agilistes.

Note de lecture : Spring in Action 3rd édition, par Craig Walls

Note : 6 ; A la fois plus et moins complet que l’édition précédente.

Spring devient de plus en plus important … de plus en plus gros, même s’il se modularise. Je me demandais bien à quelle sauce on allait être mangé cette fois-ci ! L’édition précédente faisait 700 pages, celle-ci en fait … 380 ! En fait, non seulement cette édition se recentre sur les aspects essentiels du frameworks (certains thèmes ne sont donc plus traités), mais les aspects qui le sont toujours ont été revus et en fait la table des matière a changé de manière non anecdotique. Mon conseil : si vous avez la seconde édition, conservez-là !

Dans la première partie, les déclarations XML sont traitées plus légèrement à la faveur des annotations plus largement décrites, ainsi que du langage d’expression. De même la déclaration d’aspects est traité sur plus d’espace.

Ce qui était dans la précédente édition la seconde partie se retrouve désormais sur deux parties (la 2 et la 3). La plus importante différence réside sans doute dans le « client side Spring » qui a complètement disparu.

La première partie « Core Spring » regroupe 4 chapitre et compte 110 pages. Elle reprend les aspects qui ont fait le succès des éditions précédentes : une bonne introduction à ce qu’est Sprint (en y intégrant dès le début les annotation et les aspects) et un chapitre très solide sur le wiring qui inclut les namespaces de Spring et le langage d’expression SpEL. A cela s’ajoute un chapitre tout nouveau sur la prise en charge de l’injection de dépendances par annotations qui complète celui consacré aux aspects. Tout cela est très didactique et très bien épaulé par des exemples assez courts pour être parlants et de bons schémas.

La seconde partie « Spring Application Essentials » est longue de 140 pages en 5 chapitres. C’est le liens aux couches applicatives qui sont traitées ici. D’abord l’accès aux bases de données. Ce chapitre s’enrichit d’une partie consacrée à JPA, mais hélas les autres frameworks (à l’exception d’Hibernate) sont abandonnés ! Regrettable, spécialement pour iBatis / MyBatis. Une lacune que l’on va retrouver dans le chapitre suivant consacré aux transactions qui fait même l’impasse sur les transactions XA ! Les chapitres dédiés à Spring MVC et Spring Webflow sont repris de l’édition précédente et actualisés. Mais ne cherchez pas l’intégration avec JSP, JSF ou Struts : cela a complètement disparu. Il en va de même pour l’intégration EJB (bon, pour EJB2, j’aurais tendance à comprendre…). Enfin le chapitre consacré à la sécurité est toujours là, ni mieux ni moins bien que dans l’édition précédente.

La dernière partie est consacrée à l’intégration. Les exporters qui sont là depuis la version 1.0 peuvent passer pour de vieux trucs, mais ils sont bien pratiques et ils figurent toujours au menu de cette édition sans en réduire la voilure. Ouf ! Ne pas évoquer le support REST eut été une grosse lacune aujourd’hui : un chapitre complet lui est consacré. On retrouve aussi le support JMS, qui traite aussi de l’intégration ActiveMQ et Lingo. Le chapitre consacré à JMX est très court mais fait le boulot. Et finalement, le dernier chapitre regroupe l’intégration des trucs qui ne vont pas ailleurs. : l’externalisation de la configuration (cela aurait eu plus de sens dans la première partie), le wiring via JNDI, EJB (tiens si, finalement on en parle…), l’envoi d’emails et la planification de tâches. Sur ce dernier aspect on ne parle que du Scheduling natif Spring, mais pas de l’intégration Quartz qui est pourtant plus puissant ! Là encore, ne jetez pas votre édition précédente.

C’est vrai, Spring devient de plus en plus volumineux, mais il devient aussi modulaire car tout le monde n’a pas besoin de tout tout le temps. La ligne éditoriale du livre suit ce principe et un ouvrage de près de 700 pages qui aurait été en route pour en faire 900 se trouve réduit à en faire 380. La qualité de la rédaction est toujours là et les adaptations à Spring 3.0 sont réelles sans que cela soit pour autant des changements en profondeur à bien des égards. Le livre a été profondément restructuré au passage, et cela me paraît plus logique et mieux fait ainsi. Il faudra donc aussi compter désormais avec d’autres volumes pour compléter celui-ci : Spring batch in Action, Spring Integration in Action, etc…

Bref, ne vus dépêchez pas de jeter la seconde édition…

spring-inaction-3edt-manning

Référence complète : Spring in Action, 3rd édition – Craig Walls – Manning 2011 – ISBN : 978-1-935182-35-1

Spring in Action

http://www.goodreads.com/book/add_to_books_widget_frame/1935182358?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

97 Things Every Programmer Should Know

J’avais fait la note de lecture de cet ouvrage il y a un bon moment. Grace à la licence “creative commons”, vous pouvez librement bénéficier de son contenu.

Un Wiki a aussi été créé, justement dans le but de permettre les contributions collectives autour de cet ouvrage.

Kevlin Henney, qui a été le rédacteur en chef de ce volume s’est appuyé sur son contenu pour une Keynote. En voici le support

Déjeuner Stoos Paris de Mai

J’avais évoqué il y a peu le Stoos Satellite Paris. Je dois l’avouer, nous n’avons pas fait preuve de l’assiduité dont nous avions l’intention au départ.

StoosParisMai-Dejeuner2

Se voir le temps d’un déjeuner était une bonne façon de reprendre le ryhme, même sans agenda bien défini …

Ca devient presque une habitude, mais on a aussi parlé de Lean Startup et de Lean Startup Machine auquel Oana va participer en tant qu’animatrice.

La mauvaise nouvelle, c’est que je suis reparti avec une nouvelle référence à lire : Liberté & Cie d’Isaac Getz ! Ca devient dramatique …

Comme on n’avait pas d’agenda, les discussions furent décousues … et émergentes !

Transformation et rupture du contrat social

Comme à chaque fois qu’il est parmi nous, Julien nous a asséné une réalité qui est le fruit de son expérience : les transformations organisationnelles radicales n’arrivent qu’après qu’il y ait eu rupture du contrat social ! L’entreprise cherche à renaitre, mais la confiance est perdue, les employés sous le choc.

C’est donc bien la présence d’un danger mortel qui est le facteur déclencheur. Pourquoi amorcer un changement radical si les contraintes sur l’entreprise ne l’exigent pas ? Bien sûr, cela complique d’autant le travail de transformation :

  • Comment repartir de l’avant ?
  • Comment construire un projet pour l’entreprise dans ce contexte ?
  • Comment changer les personnes quand la confiance est rompue ?
  • Comment mettre l’entreprise et ses hommes en situation de regarder vers l’avenir quand le passé récent nous étreint ?

Nous n’avons répondu à aucune de ces questions. Mais Julien nous a bien remis les pieds sur terre : les dynamiques de changement n’arrivent QUE dans les situations les plus difficiles.

ScrumBeer de Mai, bientôt l’été

L’été approche, on reprends un peu de rythme après notre ScrumDay. Notre Grand Organisateur des ScrumBeers AKA Arnaud nous avait convié à cette nouvelle rencontre informelle.

ScrumBeerMai-YannickAnne1

Comme d’habitude, pas d’agenda. Beaucoup d’inscrits, peu de présents (6 sur 17), mais c’est sans importance. Deux étudiants, Charles et Marie, s’étaient joints à nous. Une occasion de voir si nous savons mettre nos propos à la portée des non initiés. Nous sommes parfois moins accessibles que nous le pensons !

ScrumBeerMai-CharlesMarie

Notre idée originale était de faire un peu de teasing en attendant le ScrumBoat. Celui-ci a été reporté depuis. Tant pis ! Mais nous avons évoqué l’apport des innovation games comme élément disruptif, des difficultés liées au changement. Marouane nous a apporté un éclairage original sur les différences culturelles et la façon dont elles impactent la façon dont est perçu le changement.

ScrumBeerMai-Marouane2

Bref, la ScrumBeer, c’est de la balle !

ScrumBeerMai-ArnaudMoi

On me fait parfois remarquer que je ne suis jamais sur les photos. Ce n’est pas encore complètement réussi pour cette fois-ci. Mais bon, l’auto-portrait à bout de bras, ce n’est pas si simple.

Je ferais mieux pour la prochaine ScrumBeer … en Juin ?

Note de lecture : The Computer Boys Take Over, par Nathan Ensmenger

Note : 7 ; Une leçon d’histoire sous forme de traité universitaire de qualité estampillée MIT

Ceci est un livre d’histoire. Sur l’histoire de l’informatique, depuis le début des années 50 (voir la fin des années 40) jusqu’au début de 70. L’auteur s’intéresse à l’émergence du métier de programmeur. Ce n’est pas non plus un texte facile à lire, c’est du sérieux. Du très sérieux ; ce n’est pas pour rien que le livre est édité chez MIT press. Les 9 chapitres du volume comptent une centaine de références bibliographiques … chacun !

Je parlais d’un texte pas forcément facile à lire : l’auteur a fait le choix d’une trame thématique plutôt que d’une trame historique. Ainsi, chaque chapitre traite d’un sujet particulier dont il retrace l’historique (remontant à des dates différentes selon les sujets). Certains chapitres font références aux mêmes évènements ou situations, laissant au lecteur le soin de faire les corrélations. Si il s’agit d’histoire récente, il ne faut pas oublier que manquer de précision, éluder certains faits ou en romancer d’autres est assez facile, sinon commun. Rien de tel ici, l’auteur est d’une précision diabolique dans son énumération des faits, des citations et de sa trame évènementielle. La prose ne cherche pas à faire oublier qu’il s’agit là d’un travail de recherche. Si cela contribue à la difficulté de lecture, c’est la très grande force de l’ouvrage. Il est temps de s’intéresser à son contenu.

Le premier chapitre est une introduction au reste de l’ouvrage : l’avènement du métier de programmeur qui émerge du monde de l’électronique mais peine à se faire une place en tant que discipline à part entière. Il évoque la fameuse « crise du logiciel » dont l’origine remonte à la conférence de l’OTAN de 1968.

Continuer à lire « Note de lecture : The Computer Boys Take Over, par Nathan Ensmenger » →