Mes retours sur l’Agile Day Valtech 2012

Ce 19 Juin 2012, Valtech nous accueillait dans ses locaux du 103 rue de Grenelle pour une journée de présentations et d’atliers dédiés à l’agilité. Quelques retours.

Keynote

C’est toujours quelque chose d’écouter Laurent Sarrazin ! Il y a du dynamisme, de la substance, beaucoup d’anglicisme et des phrases choc ! C’est sous un format singulièrement raccourcis que Laurent nous a présenté Sweet Rupture qu’il avait déjà joué au Scrum Day. Je n’avais alors assisté qu’à une partie de cette présentation. Ici, j’ai tout vu, mais en accéléré !

Laurent nous raconte l’odyssée du centre agile de la société générale et ses nombreuses sources d’inspiration qui en font de “l’agilité Benetton” selon ses propres mots. Difficile de raconter cette session, je vous propose plutôt d’en visonner la version longue  celle du Scrum Day.

Kanban game

Laurent Morisseau est probablement l’une des personnes les plus pointues en France sur l’application de Kanban en France. Il est d’ailleurs l’auteur d’un livre qui arrive en librairie ces jours-ci : Kanban pour l’IT. Vous devriez d’ailleurs avoir droit à une note de lecture à ce sujet dans euh … un certain délais, car Laurent a eu la gentillesse de m’en faire parvenir un exemplaire !

Cet agile game est désormais un classique, car Laurent a déjà joué le Kanban Game à de nombreuses reprises. Toutefois je n’avais jamais eu la possibilité d’y participer. J’étais donc bien décidé à combler cette lacune.

Je n’ai pas été déçu, d’autant que Laurent et son complice Dimitri Baeli (visiblement faire collaborer Bretons et Normands est donc possible) sont rompus à l’exercice. Nous avons donc exécuté par équipe de 6, 8 itérations de développement afin de délivrer de la valeur, mais surtout de l’argent (eh oui : la valeur délivrée tôt capitalise et rapporte plus…). Voici ce que j’en ai trouvé:

  • Le jeu est intéressant et prenant, la qualité de l’animation aide sans aucun doute !
  • Des équipes de 6, c’est un peu trop: on se marche sur les pieds et cela génère trop de discussions quand aux différents choix !
  • Le jeu met bien en évidence les “limites de WIP” et le focus sur le flux et les goulots d’étranglements.
  • L’aspect “comptabilité” est un peu complexe et ce n’est pas évident d’en tirer les enseignements. Au minimum, il aurait fallu passer plus de temps (encore !) pour les décoder.
  • Le timing était un peu trop serré, mais c’était lié à l’agenda spécifique de cet Agile Day. Les conditions normales requièrent un peu plus de temps.

Bref, je suis satisfait de cet agile game qui matérialise très bien les aspects principaux du Kanban.

Outside in Design : the BDD way

Cette session présentée par Marcus Anhve de Valtech Suède était pour moi la session hard core de cette journée ! Concrètement, cette session dédiée au Behaviour Driven Developement par l’exemple était d’un abord ardu pour moi : Marcus a réalisé ses exemples en Ruby (que je ne connais pas), en y ajoutant du Rails, de la compilation avec Rake  et évidemment du RSpec pour l’acceptance testing ! Sans oublier un moteur de templating pour le HTML que j’ai justement oublié …

Bref, au-delà de la présentation d’introduction il me fut très difficile de suivre le fil, j’ai juste réussi à ne pas être complètement noyé. Respect pour notre très cool présentateur qui a réussi à faire du “par l’exemple” avec absolument aucun code préparé à l’avance et en réalisant absolument tout en live ! Franchement il faut le faire et c’est la première fois que je le vois ainsi fait intégralement. Marcus m’a confié qu’à son avis c’est vraiment la bonne façon d’exposer la façon dont on avance et on construit les choses : de le faire sans tricher !

Innovation needs waste

Ce fut ma sesion préférée de la journée ! L’animateur de cette session, Dirk Lässig de Valtech Germany était venu nous initier au Design Thinking. Dirk a intelligemment combiné une présentation limpide avec un exercice hélas un peu trop sous la contrainte du temps !

Le Design Thinking, quest-ce que c’est ? Une approche et un ensemble de pratiques pour permettre l’innovation radicale, celle qui n’est pas une simple amélioration d’idées existante mais l’émergence d’un concept nouveau en rupture avec l’existant !

Les approches agiles parlent souvent de “vison” et de son importance. Mais d’où vient-elle ? D’une personne particulièrement géniale qui l’a sortie de son chapeau à l’aide d’un quelconque tour de magie ? Faire émerger les Visions innovantes ne doit plus être comme le-boulot-de-quelqun-d’autre-car-nous-on-écrit-du-code ! Le design thinking nous apprend à mettre ensemble des personnes d’horizons différents justement pour élargir le champs du possible. Et justement pour élargir ce champs il faut générer des idées sans se censurer, même si au final la plupart et peut-être même toutes seront écartées.

Nous avons donc tenté (avec un succès mitigé, je le crains) d’abord d’identifier des cibles et des contextes d’utilisation pour une application smartphone, puis de développer ce concept à l’aide de techniques de brainstorming. Bien sûr en si peu de temps, il ne pouvait s’agir que de jeux de l’esprit. Toutefois un peu plus de temps aurait certainement produit un résultat plus pertinent.

Mais j’ai appris une nouvelle chose, un nouveau territoire à explorer qui fait le lien avec d’autres que je connais. J’ai aussi remarqué et apprécié la synergie très importante entre cette approche et le Lean Startup. D’ailleurs cette technique est fugitivement évoquée dans le livre d’Eric Ries. Ici aussi on parle d’emettre une hypothèse, de confronter celle-ci à la réalité le plus vite possible, d’apprendre sur cette base et d’itérer en s’appuyant sur ce que l’on a appris.

Bravo Dirk !

L’agilité au service du marketing, une révolution en marche

Une mauvaise pioche m’a fait choisir cette session que j’ai trouvé la plus décevante de la journée ! J’étais impatient de voir et comprendre l’agilité projeté dans le domaine du marketing. Hélas la présentation de Laura Guillemin manquait cruellement de substance ! Certes, la bonne idée de cette présentation était d’y faire participer des acteurs métier (mais aussi un consultant). Alors oui, on peut facilmement se douter que les plan marketing à long terme se voient balayés par les itérations rapides et les possibilités qui nous sont offertes de mesurer les impacts dans l’économie numérique ! Mais même un gros bourrin d’informaticien comme moi sait cela depuis longtemps.

Il existe une substance, des concepts dans le marketing numérique dont j’ignore même l’existence. Un question venant de la salle (mais vite balayée) sur les modèles d’attribution en a été l’un des exemples. Bref, je n’ai rien appris !

Keynote de cloture

A la session de Laura Guillemin, j’ai largement préféré la cloture que nous a proposé Scott Brinker ! Difficile de résumer cette intervention vraiment très riche. Je vous recommande la présentation qui est en lien, ce support est vraiment très bon (avec un petit arrêt sur le slide 16). Le(s) message(s) de base de cette présentation est (sont):

  • Tout est marketing !
  • Tout le monde doit être agile !

Un grand merci à Valtech d’avoir organisé cette journée !

Note de lecture : Concurrent Programming in Java, second edition, par Doug Lea

Note : 9 ; Un remarquable ouvrage sur le multithreading, pour Java et pour les autres langages également … même si on accueillerait volontiers une mise à jour !

J’ai écrit cette note en 2005. Les livres liés à des technologies particulières ont fâcheusement tendance à mal accueillir le passage du temps. Celui-ci subit moins cette tendance car il s’intéresse plus aux concepts sous-jacents mais il vous faudra certainement relativiser certaines parties de mon propos.

S’il est un sujet d’importance sur le développement Java peu abordé aujourd’hui, c’est bien la programmation concurrente. Sans être ignoré, le multi-threading est largement mis de coté, ne serait-ce que parce que le développement coté serveur ne permet pas sa mise en œuvre. Or, il s’agit bien là d’un aspect majeur de conception, important coté client, et plus important encore avec l’avènement des clients riches. O, développeur Java, tu as bien de la chance dans ta misère, car à ta disposition un livre sur le multithreading tu as ! Nous parlons bien entendu du livre de Doug Lea. Bien sûr, il existe d’autres livres sur le sujet, ne vous attardez pas sur ceux-là : le livre de Doug Lea est LE livre. En fait, Doug Lea est le multithreading en Java, car depuis la version 1.5, l’API officielle dédiée au multi-threads est celle développée par l’auteur.

Mais revenons au livre lui-même. Et là, comme disent les jeunes : c’est du lourd ! La lecture des 380 pages du volume n’a rien d’une promenade bucolique, le texte et l’information sont denses. On aurait pu s’attendre à un livre traitant des spécificités de Java sur le multithreading, cet ouvrage va bien au-delà. Comme indiqué dans le titre, on parle avant tout de principes de conception et de patterns, puis de mise en œuvre en Java. C’est l’une des forces du livre : focaliser sur des principes de conceptions à l’aide de patterns, décrivant ainsi le contexte d’utilisation. L’ensemble est supporté par des représentations UML lorsque c’est nécessaire et du code Java avec juste le niveau de détail qui convient. On dénombre ainsi 17 patterns, répartis en 4 chapitres seulement, couvrant les sujets suivants :

  • La programmation concurrente : Ce chapitre évoque les principes de base de la programmation multithreads et des concepts liés tels que la synchronisation, les queues d’évènements, les pools de threads, etc. La base, quoi !
  • Les exclusions : On attaque les choses sérieuses, ou quelles sont les stratégies de base sur l’exclusion (l’élimination, la gestion dynamique ou la gestion structurelle), et comment celle-ci se déclinent en 5 patterns.
  • Les dépendances d’états : Ce chapitre nous montre comment géré en environnement concurrent des comportements dépendants d’états.
  • La création de threads : On couvre ici les choix de conception lié à la gestion au partage et à la création de threads.

Au cas où ce matériel ne suffirait pas à assouvir votre soif de savoir, l’auteur dispense 2 ou 3 pages de références de « lectures supplémentaires » en fin de chaque chapitre. De quoi satisfaire n’importe quelle boulimie ! Les chapitres en eux-même sont hélas un peu volumineux, ce qui conduit à un chapitrage à 4 niveaux, ce qui est trop. L’auteur aurait dû découper le livre en autant de parties et réaliser des chapitres plus courts. Ce sera peut-être ma seule critique.

La qualité de ce livre est en tout point remarquable, c’est en fait une référence incontournable pour quiconque désire s’attaquer au multithreading sur des systèmes objet, même au-delà du langage Java !

Ce livre fait sans contestations possibles, partie de la catégorie des excellents surprises, il est en tout point remarquable, aussi bien par sa couverture du sujet que par sa qualité pédagogique, et ce malgré le niveau relevé du texte. C’est de fait une référence incontournable pour quiconque désirerai s’attaquer au multithreading sur des systèmes objet, même au-delà du langage Java ! Finalement, j’ai un autre regret à formuler : cette édition accuse 5 ans, une 3ème édition mise à jour par rapport à Java 1.5 serait la bienvenue.

Allez Doug, t’as bien mérité ton 9 !

concurent-programming-java

Référence complète : Concurrent Programming in Java, second edition: Design principles and patterns – Doug Lea – Addison Wesley / Java series 2000 – ISBN: 0-201-31009-0

Concurrent Programming in Java: Design Principles and Pattern


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

Note de lecture : SQL Antipatterns, par Bill Karwin

Note : 7 ; Au croisement des préoccupations du développeur et du concepteur de base de données

Le pluriculturalisme est un véritable problème en informatique. Prenons le cas qui nous intéresse aujourd’hui : comment concilier le point de vue (valide) du concepteur de base de données, avec les questions d’efficacité d’accès aux données, de normalisation du modèle et de requêtage SQL, avec le point de vue tout autant valide du développeur s’adossant à cette même base de données, pour qui celle-ci n’est qu’un support de persistance ? La réponse est : ces points de vue sont rarement conciliés. En cela ce livre est réellement intéressant car il considère ensemble ces deux points de vue tout au long de nombreux cas de figure de conception de modèles de données constituant autant d’antipatterns. On notera aussi au passage que les exemples sont toujours donnés avec MySQL, toutefois lorsque des spécificités de certains SQBD s’appliquent, l’auteur en fait part.

Le texte est articulé autour de 24 antipatterns constituant autant de chapitres. Leur structure est invariable : objectif, antipatterns, comment le reconnaître, usages légitimes et solution. Cette structure qui montre une bonne appréhension du principe des patterns s’avère très efficace, aussi bien dans le diagnostique du problème que dans l’émergence de la solution. Ces patterns se répartissent par ailleurs en 4 parties dans l’ouvrage.

La première partie est constituée de 8 antipatterns occupant 100 pages ! Elle traite de la structure logique de la base. On y parle de l’usage irraisonné de champs blob, du bon usage des contraintes et des cardinalités (entre autre lorsqu’il faut user de tables intermédiaires). Ces règles paraissent de bon sens aux vieux routiers de la modélisation, mais elles sont souvent enfreintes par les développeurs d’applications peu enclins à passer beaucoup de temps et d’attention sur le modèle et donc prêts à « couper les virages » !

La seconde partie traite de la structure physique de la base. Elle compte 135 pages et 4 antipatterns. On y évoque l’usage intelligent des différents types de champs, mais aussi de clés primaires et d’index secondaires pertinents. Là encore, il s’agit des éléments de base du DBA … qui devraient l’être aussi pour le développeur. Mais l’expérience montre…

Dans la troisième partie (6 patterns, 60 pages) on évoque les requêtes, le bon usage de la valeur « null », des regroupements, mais aussi de l’écriture des « requêtes à tout faire ».

La dernière partie est longue de 6 patterns couvrant 70 pages. On trouve ici diverses bonnes pratiques applicatives pour couvrir par exemple des problèmes de sécurité. Hélas les exemples sont développés en PHP, bien loin de ce que je ne saurais utiliser (aussi bien sur le langage que sur l’architecture). C’est donc le chapitre qui m’a le moins intéressé.

En lisant ce livre j’ai eu l’impression (non la certitude) de lire des choses que je connaissais déjà. Mais j’ai eu aussi l’impression de croiser des cas de figure que j’ai vu appliqués plus ou moins souvent, mais que j’ai tous vu ! J’en conclu que cette lecture devrait faire partie du bagage de tout développeur applicatif, aussi basique que semblent parfois ces concepts ! Le ciblage de l’ouvrage est clair : il s’adresse aux développeurs qui va souvent considérer la base de données comme un artefact de second ordre, un simple moyen de persistance des données qu’il va traiter dans son application.

La vérité est qu’appréhender l’association d’un développement objet (au hasard) et d’une base de données, c’est devoir faire face à la question des paradigmes multiples. Ce livre est original à ce titre car il fait face à cette réalité et va aider le développeur souvent peu sensibilisé à ce problème à monter en compétence.

De plus le texte est clair et bien écrit. Pourquoi se priver de cette lecture ?

sql-antipatterns-pragprog

Référence complète : SQL Antipatterns, Avoiding the pitfalls of database programming – Bill Karwin – Pragmatic Bookshelf 2010 – ISBN : 978 1 93435 655 5

SQL Antipatterns: Avoiding the Pitfalls of Database Programming

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