Carnet de route : DevFest 2013 à Nantes, en images (2/2)

Pause déjeuner

Suite de notre parcours de la DevFest. La pause déjeuner à la DevFest, c’est standing. Ca change des sandwiches qui sont le quotidien de certaines autres conférences que l’on ne nommera pas…

DevFest 2013 : Le buffet (1)

Le service ne semble pas en reste.

DevFest 2013 : Le buffet (3)

D’un autre côté, il semble qu’il nous faille mériter notre pitance. La file d’attente s’allonge terriblement.

DevFest 2013 : En attendant le buffet

Passant sur le second créneau de l’après-midi, j’ai courageusement choisi de sauter la première séance d’après-déjeuner afin d’être fin prêt. Nous avons une salle “réservée orateurs” à cet effet.

DevFest 2013 : la salle de repos des organisateurs

Christophe Addinquy & Martin Mouterde : De l’agilité pour mon projet, pourquoi faire ?

C’est notre tour, à Martin et moi-même. Notre session d’introduction à l’agilité n’est pas vraiment un thème “mainstream” de cette DevFest, il est donc peu surprenant qu’elle n’attire pas foule. Une trentaine de personnes environ.

DevFest 2013 : le public de ma session

Je ne vais pas faire de résumé de notre session ici. Je posterais le support plus tard.

Why Google+ Sign In ? Par Ian Barber

Gros fail pour cette session. J’aurais pu me douter qu’elle était en Anglais (et j’avoue que le sujet ne me passionne pas assez pour avoir envie de faire un effort). Mais pire, elle était retransmise par Hang out !

DevFest 2013 : Google Sign In (2/2)

Pour être honnête, je n’ai pas fait d’effort et me suis laissé décrocher assez rapidement. Pas de résumé, donc pour cette session. Je ne suis même pas sûr que le préposé au Hang out ait trouvé cela palpitant !

DevFest 2013 : Google SignIn (1/2)

Break de l’après-midi

Une pause avant la dernière ligne droite. C’est l’occasion de faire un petit tour.

DevFest 2013 : signalétique à l'accueil

D’aller s’intéresser au paysage, aussi.

DevFest 2013 : Stand sponsor (4)

Ou de voir ce que j’ai bien pu rater au programme (et essayer de ne pas rater la dernière session).

DevFest 2013 : le programme

Web Components, l’avenir des développeurs Web, par Julien Vey

Pour ma part, ce fut la meilleure session de la journée, par son contenu et la maitrise du sujet par Julien. Par exemple, on crée des <div> que l’on masque ou l’on crée du DOM via du Javascript…

Demain, il suffira d’utiliser la balise <template> pour créer des fragments HTML qui seront parsés mais ni chargé, ni exécuté, mais qui pourront l’être en instanciant ce fragment d’arbre en Javascript via cloneNode().

DevFest 2013 : Julien Vey (2/3)

Le shadow DOM est un nouveau moyen d’encapsuler un élément. Il est utilisé par exemple dans le cadre de la balise <video>. Mais ce concept est aujourd’hui fermé. Il sera disponible demain aux développeurs, via la méthode createShadowRoot() qui crééra un élément auquel il suffira d’accrocher des sous-éléments. L’un d’entre-eux pourrait d’ailleurs être une balise <content> pour injecter du contenu dans ce shadow DOM.
On peut apparemment mixer DOM et CSS, mais comme je suis imperméable à ces considérations, le mieux sera pour vous d’aller gambader dans les la vidéo de le session de Julien !
Enfin, les Web Components permettent de créer ses propres balises, via la balise <content>.
Bref, les Web Component, c’est l’avenir. Du moins, ce le sera quand la norme sera finalisée, ce qui n’est pas encore le cas. On pourra alors intégrer des Widgets d’un nouveau genre qui ne ressembleront plus à un amas sordide de <div> et de Javascript ! Toutefois, il n’est pas nécessaire d’attendre ce jour béni. On peut déjà utiliser Polymer qui émule l’état actuel de la norme.
Outre l’excellente présentation de Julien, on peut aller vers le site de référence sur HTML5, à savoir htmlrocks pour en savoir plus et surtout trouver les bons tutoriaux !

Check out

La DevFest touche à sa fin, quelques irréductibles s’essaient encore au zPilot et il sera temps de plier les gaules.

DevFest 2013 : Fin de la conférence

Un bon DevFest en ce qui me concerne. Si les sessions front-end sont assez loin de mon habitat naturel, j’ai réussi à ne pas être trop largué, ce qui est déjà pas mal pour moi…

Carnet de route : DevFest 2013 à Nantes, en images (1/2)

La DevFest, c’est l’évènement Google pour les développeurs. Pour être exact, il n’est pas organisé par Google (bien que supporté par le géant de Mountain View) mais par le GDG Nantes. Je m’étais joins aux festivités pour une session d’introduction à l’agilité avec mon collègue Martin Mouterde.

Check-in

On débute tôt la journée ici, les portes sont ouvertes à 8h20 ! Rien à voir avec notre rythme de bâton de chaise Parisien… Heureusement, Martin et moi étions arrivés la veille pour répéter. Café et croissants sont prévus pour accueillir les participants.

DevFest 2013 : Le café en arrivant

Jusqu’ici tout va bien. Direction la keynote.

Keynote : Des opportunités pour s’associer

On a tranquillement rempli l’amphithéâtre pour cette keynote. A priori, nous étions 350. Julien Landuré a délaissé son polo Zenika pour un T-shirt GDG Nantes pour évoquer l’année écoulée.

DevFest 2013 : Présentation GDG Nantes

L’organisation avait aussi prévu une couverture en image plus solide que celle de vôtre serviteur. J’espère avoir bientôt un lien à vous donner.

DevFest 2013 : La photographe

Place maintenant à la keynote ! Une keynote surprenante, car elle ne va pas parler de technologie, mais de collaboration. L’orateur y évoque des outils parfois connus comme les modèles DISC, MBTI ou Process Com. Il en évoque d’autres moins connus comme Strength Finder, qui me donne bien l’envie d’essayer !

DevFest 2013 : Keynote

Connaitre ses forces, c’est une bonne façon de savoir comment les associer, lequelles acquérir pour se renforcer.
S’associer, c’est essayer au travers de Startup Week-ends, Hackathon et autres Roadtrips… si on n’arrive pas à s’entendre sur 2 jours intenses, ce n’est peut-être pas la peine d’insister sur une longue durée…
S’associer, enfin, c’est s’engager :

  1. En formalisant au plus tôt les statuts.
  2. En rédigeant une lettre récapitulant ces statuts.
  3. En s’aidant d’un avocat d’affaire.

Pawel Kozlowsky : AngularJS: making a browser a better development platform

Pawel est l’auteur de ce qui est encore l’un des rare livres sur AngularJS. Il pratique en outre ce framework depuis 3 ans.
Béotien absolu du développement Javascript, je me suis campé dans cette session justement pour cette raison, et aussi pour avoir un peu parcouru les tutoriaux AngularJS…

DevFest 2013 : introduction à Angular JS par Pawel (3)

Pawel le dit lui-même: le développement dans le browser, c’est parfois douloureux ! Les frameworks sont là pour soulager, mais un framework comme JQuery se focalise surtout sur le requêtage du DOM, afin de le rendre plus facile. Ce n’est ni n réel changement de paradigme, ni un “game changer”.
AngularJS propose un binding bidirectionnel entre modèle et vue, sans qu’il soit nécessaire d’enregistrer le modèle, ni procéder à des notifications explicites ! AngularJS est réellement déclaratif ! En fait, une grande partie des fonctionnalités d’AngularJS consiste en propriétés (notées ng-*) qui peuvent être ajoutées aux éléments, tel le ng-repeat qui permet de construire des templates.
AngularJS permet aussi de construire des tags “custom” à l’image des futurs Web Components, ainsi que l’injection de dépendance en JavaScript.
En conclusion, AngularJS, c’est :

  • Du data binding bidirectionnel sur un modèle.
  • Un DSL customisable au-dessus de HTML
  • Un framework complet et solide.

Et une excellente ressource pour commencer : http://egghead.io/

Guillaume Campion : Retour d’expérience sur les Google Glasses

Bien sûr, les Google Glasses, ça attire les badauds, même si la session n’est pas très technique. En fait, même pas du tout !

Les objets connectés, c’est le nouvel eldorado, qu’on se le dise ! Pourtant il n’y en a que 8 paires en France actuellement. Pourtant les “lunettes informatiques” ne sont pas nouvelles. Steve Mann (http://spectrum.ieee.org/geek-life/profiles/steve-mann-my-augmediated-life ) en construit et en porte depuis 35 ans. Chez lui, elles sont vissées à la boite cranienne, car il ne fait pas dans la demi-mesure !
Les lunettes Google disposent des fonctionnalités suivantes :

  • Un touchpad sur le côté.
  • Un appareil photo de 5 Mega pixels
  • 12 GB de mémoire
  • Une mise à jour du firmware tous les mois.

Voilà la bête, sur Guillaume :

DevFest 2013 : 6 mois avec les Google Glasses (2)

Prendre une photo n’a jamais été aussi facile. L’orateur objecte cependant à ce que l’on puisse les considérer comme le nouveau gadget du voyeur.

Prendre une photo n’a jamais été aussi facile. L’orateur objecte cependant à ce que l’on puisse les considérer comme le nouveau gadget du voyeur.

DevFest 2013 : 6 mois avec les Google Glasses (3)

L’interface utilisateur de compose de “cartes”. Pour ce qui est du développement, il peut se faire de 2 façons:

  • Miror API : Ca passe par une connexion permanente chez Google !
  • Natif : C’est un gros un SDK Android (il y a un GDK, mais qui n’est pas encore publié). Ce mode donnera accès aux senseurs des lunettes quand il sera accessible.

En résumé :

  • Les Google Glass, c’est un 6ème sens !
  • On peut toujours les avoir sur soi, mais elles sont non intrusives (pas une réelle réalité augmentée).
  • Un usage plus spontané, ne nécessitant pas les mains et “quasi” see-through
  • Une interface utilisateur différente qui nécessite pas mal de boulot.

J’ai eu la possibilité de prendre une photo de plus près des lunettes (mais pas de les essayer) dans la salle réservée aux orateurs. Voilà:

DevFest 2013 : Les Google Glasses (2)

Et si vous voulez la présentation in-extenso :

Présence Zenika

L’une des raisons de ma présence ici était la présence de Zenika en tant que Sponsor. Notre stand proposait des animations autour de jeux video.

DevFest 2013 : On joue sur le stand Zenika (2)

De manière générale, l’espace était assez exiguë. Celà renforce l’impression d’affluence générée par les jeux.

DevFest 2013 : On joue sur le stand Zenika (1)

Comme à Rennes, une petite photo du staff s’impose

DevFest 2013 : L'équipe Zenika (1)

Je vais m’arrêter ici pour ce post, histoire d’en garder pour un peu plus tard.

Carnet de route : Agile Tour Rennes en Images (2/2)

Nous nous sommes quitté lors du premier post à l’heure du déjeuner. En fait cette heure du déjeuner était réservée aux lightning talks, chacun sur son créneau horaire afin de permettre de les voir tous au besoin !
Hélas cette méthode n’est pas très efficace. Seuls les derniers lightning talks rencontreront un public. Pas facile de gérer cela. Seul l’Agile Tour Nantes m’a convaincu sur ce point l’an dernier. Mais les organisateurs de l’Agile Tour Rennes restent très loin du fiasco du Scrum Day !
On en termine donc rapidement avec la pause déjeuner pour voir cela.

AT Rennes 2013 : Lunch (8)

Prélude au second mouvement : Le Podojo par Emilie Esposito et Damien Sainte

Un Ligtning Talk, c’est déjà court. J’arrive pourtant à en rater la moitié. C’est quoi le PO Dojo ? Un atelier construit collaborativement pour les PO et un groupe Google pour le faire vivre ! Ce qui semble remarquable, c’est l’aspect complètement communautaire, sans PO donc. Sans roadmap non plus, avec un catalogue d’ateliers qui évolue au fil des besoins et des idées.

AT Rennes 2013 : PO Dojo (1)

Alors que le concept de PO promeut que quelqu’un tienne la barre, ces PO ont su s’affranchir de l’idée d’avoir un chef (quelque soit la forme qu’on lui donne), une roadmap prévue à l’avance et tout et tout. Chapeau à eux !

Avant de me rendre à la session de Laurent Morisseau, je passe rapidement la tête dans la salle où officie Dov…

AT Rennes 2013 : Dov

Reprise : #OMG, mon équipe fait son haka en Kanban style ! Par Laurent Morisseau

Un petit challenge pour notre ami Laurent en ce début d’après-midi : faire bouger le public à l’heure de la digestion…

Et d’abord, c’est quoi Kanban dans un projet agile ? De l’amélioration continue + de la gestion de projets !

Commençons avec Scrum

Quand l’on part de Scrum, le point de départ, c’est le tableau des tâches : à faire, en cours, fait… MAIS on met un nom sur une tâche ! C’est un antipattern. Le stand-up devient un reporting !

AT Rennes 2013 : Scrum et Kanban (2)

Améliorer les choses

  • En utilisant les “classes de service”, pour traiter les bugs urgent, par exemple
  • En régulant le flux des stories et des tâches en cours en utilisant des limites de WIP (work in progress) à chaque niveau.

Bref, l’idée est de rendre les problèmes visibles dès qu’ils sont évoqués et de poser des limites hautes et basses.

Quand le PO est dépassé…

Que dire d’un backlog de 70 user stories pour 7 développeurs ?
C’est bien trop, ou bien trop détaillé ! Scrum en tant que process met la contrainte sur l’équipe de développement. En amont, le PO doit travailler en flux, donc sans faire trop de stock.
On peut remédier à cela en matérialisant ce flux tiré et en étendant le Kanban aux activités amont et un matérialisant les états des stories.
Vous pourrez en savoir plus sur le site de Laurent, où vous trouverez non seulement une video mais le matériel de cette présentation sous forme de podcast.

Entracte : Zenika à l’Agile Tour Rennes

Je vous l’ai dit, nous étions présent en force à cet Agile Tour Rennes, pour représenter Zenika. Non seulement depuis l’agence de Rennes, mais aussi de Paris et de Nantes ! Cela valait bien une petite photo de famille.

AT Rennes 2013 : Staf Zenika (4)

Pour une fois, ce n’est pas moi qui prend la photo, cela me donne l’occasion d’y avoir l’air d’un niais. Et tant que j’y suis, j’en profite pour remercier Allison qui s’est dépensée sans compter pour préparer notre présence ici.

AT Rennes 2013 : Allison (2)

Les session s’enchainent. Il est l’heure de celle de Géry

Interlude : Carpaccio Game avec Géry Derbier

Géry nous propose un grand classique : Le carpaccio game. Mais qu’il anime avec grand talent et tout autant d’énergie.

AT Rennes 2013 : Carpaccio Game (2)

C’est très studieux, car il s’agit de programmer le sujet proposé par tranches de 8 minutes et d’apporter de la valeur à chaque itération. Un exercice auquel je me suis d’ailleurs livré il y a peu.

AT Rennes 2013 : Carpaccio Game (3)

Acte 2 : Booster Scrum avec le Lean Startup par Olivier Lafontan

Là encore j’ai bel et bien raté une partie de la session, mais j’étais très curieux de la voir, car elle a eu une belle affluence au Scrum Day en Avril dernier.

Lean Startup nous apprends à mettre l’investissement là où il y a de la valeur. Scrum tend à se “débarrasser” de ces questions sur le PO qui se tape un peu tout sur cet aspect. Et celui-ci se trouve un peu démuni face à ce genre de problème avec pour seul appui le backlog… Lean startup apporte quelques outils :

  • Le Lean Canvas
  • Le Validation Board
AT Rennes 2013 : Olivier Lafontan (1)

La charnière entre Lean Startup et Scrum se trouve au niveau de ces outils. La priorisation du travail devient une priorisation des hypothèses à vérifier. Car Lean Startup ne parle pas de besoin … mais d’hypothèses. Tant que ces “besoins” n’ont pas été vérifiés ils sont en effet hypothétiques. Le cycle Scrum devient un cycle de validation des hypothèses.
A plus grande échelle, un gestion de portefeuille se traduit en portefeuille de Canvas.

Conclusion : Christophe Keromen

C’était ma dernière session de l’après-midi (même si en fait il y en avait une après).

Christophe nous offre une session rafraichissante pour nous ressourcer aux origines de l’agilité. Il remonte au manifeste agile et à l’invitation d’Alistair Cockburn. Non, en fait il remonte plus loin : à Henry Ford, Richard Denning et Taïcho Ohno…

AT Rennes 2013 : Christophe Keromen (1)

Je ne vais pas essayer de reconter la session de Christophe qui mérite plutôt d’être vue. Toutefois, je ne résiste pas au plaisir de dévoiler le Lean version Dan Brown : “Le Lean est un projet Franc-Maçon pour dominer le monde” ! Un grand moment…
Pour finir, Christophe nous propose un nouveau gourou agile : Bob l’éponge … pour absorber les pratiques qui marchent !

Tombée de rideau : A l’année prochaine !

Cet Agile Day était un peu marathonien, force est de l’avouer. Sur la durée, je dirais qu’il y avait une session de trop. Mais ce fut une excellente journée, aussi bien du point de vue de la qualité des sessions que de celle des échanges. Figurez-vous que j’y ai même rencontré l’un des fidèles lecteurs de mon blog (du coup, je le salue !).

AT Rennes 2013 : A l'accueil (1)

Il est temps de se quitter et de se donner rendez-vous à l’année prochaine. A moins qu’un coach retreat, entre-temps…

Worshop Running Lean, avec Ash Maurya (2/2)

Alors que la première journée s’appuyait en grande partie sur Running Lean, cette seconde journée sera d’avantage centrée sur les techniques récemment développées par Ash Maurya.

User cycle

Act 1 : Est-ce un problème qui vaut la peine d’être résolu ?

Nous l’avons évoqué dans le post précédent : la clé est de se concentrer sur l’utilisateur, de rechercher quels sont ses sources de souffrance :

  • Son workflow (il ne faut pas l’ignorer, en fait on doit même s’y insérer)
  • Ses craintes, ses frustrations
  • Ses buts et aspirations.

L’approche à adopter est une alternance de recherche et d’interviews : La recherche permet d’établir des hypothèses et l’interview permet de valider ou invalider ces hypothèses. Il s’agit de “problem interviews” permettant de valider l’identification du problème.

Ash Maurya durant le workshop

Deux mesure de succès du “problem interview” permettant de vérifier ‘intérêt que l’on suscite:

  • L’acceptation d’un “follow up”
  • L’obtention d’autres référents avec lesquels travailler.

Deux points que l’on n’obtient pas si l’on a eu qu’un intérêt de politesse.

Acte 2 : Tester la Vision

On n’a pas nécessairement besoin de code pour tester sa Vision. Il faut surtout être capable de faire une démo qui raconte une histoire. On peut utiliser un outil de prototype comme Keynotopia ou Balsamiq .

Là encore la validation passe par une interview, cette fois c’est une Solution Interview, qui s’articule comme suit:

  • Attention : En cernant correctement et précisément le problème de départ.
  • Intérêt : Avec une démo qui déchire.
  • Désire
  • Action

L’objectif est de produire un engagement :

  • “soft” : c’est obtenir un “oui”. ça vaut ce que ça vaut…
  • “dur”: c’est déclencher un pré-vente !

Bien sûr, on a toutes les possibilités intermédiaires…
A propos de la pré-vente : l’ancrage du prix fait partie du solution interview. Il faut le justifier par rapport aux alternatives et bien entendu pouvoir montrer qu’on abaisse en fait le coût avec notre solution, donc changer la perception du client potentiel. Quelques références sur ce sujet :

Positionner le MVP

La première étape consiste, nous l’avons déjà dit, à se concentrer sur un petit nombre de clients, une dizaine peut-être, guère plus, souvent même moins ! On ne cherche pas à collecter d’informations quantitatives, mais qualitatives.
C’est pourquoi on va chercher à rendre ces clients très heureux, pas simplement satisfaits. Adresser le risque marché consiste précisément à identifier si la solution permet ce haut niveau de satisfaction chez des clients. On ne va pas chercher à abaisser le “signup friction” de ces early adopters, on doit cibler des clients pour qui la proposition de valeur représente un besoin important. Autant augmenter ce “signup friction”, au contraire !
Plus tard dans le cycle utilisateurs, on cherchera à élargir la base d’utilisateurs, en s’appuyant de plus en plus sur du self-service. A ce niveau, c’est le risque technique lié à la scalabilité que l’on adressera.
Et le prix ?
Cela semble malin de prime abord de proposer 2, 3 ou 5 “plans”. Mais en réalité, il est préférable de ne pas s’amuser avec ces plans, même s’ils ont pour but de guider le client vers un “plan préféré”. La présence de ces plans multiples peut être un obstacle pour apprendre des choses sur l’adéquation prix-service, car il introduit une dimension supplémentaire.
Le prix est une partie intégrante du MVP. Tant que la proposition de valeur n’est pas payante, sa validité n’est pas établie.

Nous sommes tous dans le “manufacturing business”

… Et ce que nous construisons, ce sont des clients heureux, dont on améliore la chaine de valeur !
En Lean, l’amélioration de la chaine de valeur passer par l’élimination du gaspillage à l’échelle de la totalité de la chaine de valeur. Celle-ci est formée d’un ensemble de processus interconnectés sur lequel il faut identifier la contrainte principale … sans perdre de vue qu’une fois cette contrainte levée, celle-ci se sera déplacée ailleurs dans le système !

Exercice pratique

Dans le principe, ça parait simple. Dans la pratique il faut prendre en compte la dimension irrationnelle des clients, bien que cette irrationalité soit en fait prédictible (voir Predictably irrationnal)
Ash Maurya gradue le niveau d’engagement des clients ainsi :
1. Acquisition
2. Activation
3. Rétention
4. Revenue
5. Référent
Cette échelle nous permet d’aborder le sujet suivant : la customer factory !

The customer factory

C’est le sujet du prochain livre d’Ash Maurya. Il représente cette Customer Factory ainsi :

The Customer Factory

Le principe est finalement assez simple :

  • L’étape initiale est l’acquisition : les prospects viennent chez vous. Mais attention ! ce doit être plus qu’un simple rebond !
  • La rétention : elle est matérialisée par le signoff (activation). C’est l’étape “usine”.
  • Le revenu : quand on parvient à faire payer le souscripteur.
  • Le référent : quand on parvient à acquérir de nouveaux clients grâce à ces clients existants.

Et le moteur de croissance ?

  • Le “paid engine” doit favoriser l’acquisition.
  • Le “sticky engine” doit permettre la rétention.
  • Le “viral engine” doit engendrer l’acquisition par référent.

Ash Maurya nous recommande pour le “paid engine” : une “life time value” = 3 x le coût d’acquisition.
Pour observer si les moteurs de croissances donnent le résultat escompter, il faut passer par des métriques de cohortes, mais surtout se livrer à de nombreuses expérimentations !

Le validation board

Le Lean Startup Machine a mis au point le “validation board” qui permet de suivre les expérimentations à faire et en cours (c’est une sorte de kanban, si on veut bien…) par rapport à des hypothèses.

The Validation Board

Les clés :

  • Identifier les expérimentations capables de valider les hypothèses.
  • Trouver la mesure adéquate. Ash recommande à ce sujet la lecture de How To Measure Anything.
  • Construire une offre.

L’auteur de Running Lean nous propose 3 types d’offres :

  • La “Maffia Offer” : comme son nom l’indique, c’est l’offre que l’on ne peut pas refuser !
  • Le “Smoke Test Offer” : Une offre dont la complétude s’arrête à ce qu’il faut pour tester une hypothèse de marché.
  • Le “Pré-order offer” qui serf à lever des fonds, à la façon Kickstarter.

Les idées clés sont de faire de petites expérimentations (2 semaines maximum) ne testant qu’une seule hypothèse, pour lesquelles on définit les objectifs avant les critères de satisfaction avant, afin d’éviter la rationalisation après coup.

Chaque expérimentation doit être documentée. Mais pas trop, car on est lean…

L’experiment report

L’experiment report est une déclinaison du A3 du Lean. Il va nous permettre de garder la mémoire des expérimentations déjà opérer : faire des erreurs, c’est apprendre. Refaire les mêmes, c’est bien dommage…

Experiment Report

La partie du haut nous permet de figurer les mesures, et la partie du bas résume ce que l’on a appris

This is the end…
Nous arrivons au terme de ces 2 jours. Ils furent bien remplis, même si la partie pratique pêche un peu. De toute façon, c’est bien sur du réel qu’il faut mettre tout cela en pratique, et sans trop tarder !
Il me faut remercier non seulement notre orateur, mais aussi Sebastien Saccard qui a rendu ce workshop possible.

Ash Maurya et Sébastien Saccar

Et bien entendu Zenika qui fut l’un des sponsors de cet évènement.

Ressources

Pour compléter ce que nous avons vu, voici 2 présentations. La première est d’Ash Maurya et reprend les éléments de son workshop.

Le seconde est de Camille Roux (qui était aussi présent au workshop) et reprend de manière très synthétique et percutante la démarche Running Lean.

Neo4J et Spring Data, avec Florent Biville

Ce premier Octobre, Zenika accueillait de nouveau le groupe Meetup dédié à Neo4J. L’occasion de faire connaissance avec Spring Data grâce à Florent Biville.

Echauffement

Débuter un Meetup par l’interlude commercial, ce n’est pas nécessairement le meilleurs départ. Mais Cédric Fauvet connait au moins le public auquel il a à faire et il fut lui-même développeur. En fait, il a même évoqué deux ou 3 choses qui ont piqué ma curiosité !

Meetup Neo4J Octobre 2013

La première réelle application de la théorie des graphes semble être celle des 7 ponts de Königsberg. Le seigneur du coin voulait savoir s’il était possible de faire un trajet dans la ville en passant une fois et une seule par chaque pont. Ce n’est pas possible et l’on peut s’en rendre compte de manière empirique, mais c’est Leonhard Euler qui le démontra mathématiquement.

Les 7 ponts de Königsberg

Il n’y avait pas Neo4J à l’époque, mais aujourd’hui on en dispose et on résoud avec d’autres problèmes ayant trait à la théorie des graphes:

  • Bien sûr il y a déjà le cas classique des réseaux sociaux, comme les suggestions de contacts utilisés par Viadeo.
  • Les analyses d’impact sur les réseaux, mis en oeuvre chez SFR.
  • Les calculs de primes de commerciaux, chez Sisco (!) Il ne faut pas moins de 2 clusters pou gérer cela.
  • Le routage des colis chez un grand opérateur en Allemagne.

Aujourd’hui la communauté Française semble se porter plutôt bien, elle compte 362 personnes inscrites sur le Meetup et un nouveau Meetup va démarrer sur Lyon.
Du point de vue de l’actualité, c’est la version 2.0 qui occupe le terrain et doit être le sujet principal de Graph Connect.

Après le pizza-break, place au sujet principale de la soirée.

Spring Data

Nous sommes face à un dilemme aujourd’hui : le monde devient de plus en plus dynamique, ce qui fait la part belle à des bases de données orientées graphe telle que Neo4J. Et pas seulement cette dernière d’ailleurs, mais aussi des solution empruntant le même paradigme:

  • Flock DB, une solution construite par Twitter.
  • Titan, une base de données orientée graphes distribuée.
  • Blueprint, qui est plutôt une abstraction au-dessus des bases de données graphe, mais aussi une stock logicielle offrant des fonctionnalités de plus haut niveau.
  • RDF, l’ancêtre de ces bases de données, qui est une normalisation par le W3C des représentations de données sous forme de triplets.
  • Orient DB qui mixte des fonctionnalités d’une base orientée documents avec une base orientée graphes.
  • InfiniteGraph

Un dilemme disais-je, car si ces solutions adaptées aux problèmes actuels se développent, l’entreprise reste, elle, conservatrice. Elle continue de s’appuyer majoritairement sur les bases de données relationnelles et donc sur les ORM pour assurer la jonction avec le code applicatif.

Meetup Neo4J Octobre 2013

Ces solutions ORM, tel que le standard JPA ne semblent pas poser de problème dans la plupart des cas, pourtant on fait rapidement face à “l’abstraction leak”, à savoir que les paradigmes fondamentaux des SGBDR et des applications sont différents et les ORM tentent de le masquer.

Les bases de données graphe offrent un mapping plus simple et plus naturel. Elles permettent en outre de satisfaire d’autres besoins :

  • L’hétérogénéité des propriétés associées aux noeuds.
  • L’absence de schéma prédéfini. Sur le papier, c’est un problème car il permet une discordance des donnés par rapport à l’intention de structuration. Mais avec Neo4J 2.0 le schéma existe de manière optionnelle.

Il y a-t-il un intérêt à proposer un mapping objet des bases orientées graphe ? Oui, si il offre une réelle simplification et des fonctionnalités intéressantes.

Hibernate OGM, une première approche

Hibernate OGM offre une approche inspirée de l’ORM qui ne convainc pas Florent. D’une part, à l’instant de JPA elle offre le plus petit dénominateur commun des bases orientées graphes, et l’idée de faire entrer toutes les bases de données NoSQL (pas seulement les bases orientées graphes) dans un même moule semble pour le moins un gros challenge…

Tinkerpop Frames

Cette solution se focalise également sur la construction d’une abstraction des bases orientées graphes (et seulement celles-ci). Elle propose son propre langage de requête, Gremlin. Las aujourd’hui le langage de requête de Neo4J, Cypher est l’un des atouts important du produit et de gros efforts sont consentis pour en améliorer les fonctionnalités. On se retrouve donc dans une course à la fonctionnalité… que Gremlin peut difficilement gagner.

Spring Data

Suivant l’idée d’origine de Spring, il s’agit d’une brique très légère. En fait, à l’origine même de ce sous-projet, il y a la rencontre entre Emil Eifrem et Rod Johnson, à savoir respectivement les créateurs de Neo4J et de Spring !

Un atout important de Spring Data est aussi son concept de “multi-store”. Nous avons évoqué la frilosité des entreprises par rapport aux nouveau paradigmes de bases de données. Spring Data adresse cela en permettant des ponts entre différents paradigmes (par exemple relationnel vers graphe) permettant des transitions douces vers ces nouveaux mondes !
D’un point de vue pratique, pour un repository standard, tout ce que l’on a à faire, c’est d’hériter de l’interface GraphRepository<> … et Spring Data s’occupe du reste ! Derrière le rideau, cette interface hérite de quelques autres (je ne vais pas les lister, elles sont sur le slide 31). Derrière le second rideau, au niveau de l’implémentation générée, cela va bien entendu être la “foire aux proxys” ! Bon, comme on dit : on ne peut pas tout avoir !
Spring Data offre d’importantes facilités pour écrire, ou plutôt ne pas écrire, des méthodes de recherches :

  • Des “find”, où la simple convention de hommage va permettre de connaitre les critères de recherche en les mappant sur les paramètres.
  • Des recherches plus complexes s’appuyant sur des clauses Cypher figurant en annotation @Query de la méthode.

En annotant des classes @NodeEntity, on peut spécifier ce qui est persisté et ce qui ne l’est pas, ce qui constitue des arcs, et bien d’autres choses encore !
Les templates Neo4J, à la façon de ce qui existe pour d’autres modules Spring, permettent d’opérer des requêtes de projection en éliminant la plomberie inhérente à l’utilisation brute de la base.

Spring Data offre de nombreuses fonctionnalités supplémentaires, comprenant bien entendu les famaux “cross store storage” que nous avons évoqué au début.

Pour conclure
Une soirée instructive sur les possibilités de Spring Data, bien que j’ai regretté que cela aille un peu vite sur les NodeEntity et que l’on ne s’arrête guère sur les stores multiples, car cela me parait un point clé pour Neo4J en entreprise, bien plus que l’économie de code que permet le framework !
Par ailleurs Florent a initié une série d’articles très bien écrits pour s’initier à Neo4J : le premier de la série est ici.

Forum ouvert et agilité

Ce 22 Septembre (oui, un dimanche), Christine Koehler nous a proposé de nous rassembler afin de réfléchir ensemble aux convergences entre forum ouvert et agilité. C’était aussi une opportunité d’échanger avec des orateurs du Scrum Gathering que Christine avait contacté pour l’occasion: Dan Mezick, Suzanne Daigle et Jasmina Nikolic. Suzanne nous a d’ailleurs gratifié d’un post pour l’occasion.
Zenika hébergeait ce rassemblement, je ne saurais trop remercier Carl Azoury d’être venu spécialement nous ouvrir les locaux ! Par contre l’aménagement spécifique à cette réunion nous était dû à Christine et entre la tenture d’affichage électrostatique, les posters répartis dans notre zLocalhost et la signalétique des points de rendez-vous, c’était de la mise en musique élaborée.
Parmi les appointés, quelques habitués des rendez-vous agiles.

Forum ouvert et Agilité 2

Sur 22 inscrits, nous étions finalement 17, ce qui n’est finalement pas si mal. Le nombre ne fait pas la qualité de toute manière.

Forum ouvert et Agilité 3

Christine et Suzanne ont ouvert la séance en rappelant le fonctionnement du forum ouvert. Je ne le rappelle pas ici, on trouve pas mal d’information sur le Web à ce sujet.
La première étape, c’est de proposer les sujets, bien sûr. Il n’y a pas de limite. On l’écrit sur un grand format…

Forum ouvert et Agilité 11

… et on le présente devant tous.

Forum ouvert et Agilité 12

Impact hub ? Cela ne me parle pas trop. L’occasion pour moi d’en apprendre plus…

Forum ouvert et Agilité 20

Lorsque qu’on a fait le plein, on vient faire son marché.

Forum ouvert et Agilité 22

D’ailleurs le lieux s’appelle bien la “place du marché”.

Dan Mezik et Jasmina Nikolic semblent assez pensifs devant les sujets. Le temps donné au groupe s’il est alloué ne veut pas dire que l’on s’y limite: Comme le dit Suzanne, la passion et l’énergie n’arrivent pas sur la base de la contrainte du temps.

Forum ouvert et Agilité 24

J’en sais un peu plus maintenant sur l’impact hub ; le tout me laisse encore un peu dubitatif, bien que je sois à priori convaincu sur l’idée de croiser des champs d’activité différents pour faire germer des idées nouvelles. Mais pourquoi et comment ? L’idée fera peut-être son chemin avant de vraiment m’interpeler.

Forum ouvert et Agilité 25

D’autres sessions en cours. pas très facile pour moi de m’insérer en cours de route, je passe.

Forum ouvert et Agilité 26

Je passe aussi celle avec Dan Mezik !

Forum ouvert et Agilité 27

Finalement je reste un peu sur une session consacrée au respect des règles et à la cohésion d’équipe !

Forum ouvert et Agilité 28

Je ne suis pas sûr d’accrocher à la direction que prends la discussion. Assimiler les “valeurs agiles” à une spiritualité, c’est peut-être trop fort pour moi. Et oui, en bas de la feuille, c’est bien marqué “sexualité”.

Forum ouvert et Agilité 29

Pour le coup, j’ai aussi manqué la discrète discussion menée par Jasmina autour du “oscrumban” ! Donc, je ne sais toujours pas ce que c’est !

Forum ouvert et Agilité 31

Au risque de vous frustrer, je ne vais pas retranscrire les discussions. Un forum ouvert, ça se vit plus que ça ne se restitue. Même si le “grand journal” essaie de se faire l’écho de notre après-midi !

Forum ouvert et Agilité 32

Devfest Nantes 2013

Le DevFest Nantes 2013 est une journée de conférences organisée par le GDG Nantes, qui s’inscrit dans un évènement mondial : les DevFests.

Les DevFests sont des événements communautaires de grande envergure à travers le monde, suivant la tradition des Google Developer Days et organisés par des groupes d’utilisateurs locaux. Ils constituent une occasion unique de partager et d’échanger autour des technologies du Web et du Cloud ! Et plus particulièrement sur Android, Dart, AppEngine, Angular JS, Chrome, HTML5, WebGL, Google Drive, Go, GWT… Cet événement sera suivi d’une AfterParty afin de discuter de manière conviviale et faire du networking !

Zenika est partenaire de longue date du Google Developers Group de Nantes et aussi l’un de cette manifestation.

Nous serons aussi parti prenante de l’évènement avec une session que je co-animerais avec Martin Mouterde. La session mérite bien sûr son petit teaser !

De l’agilité pour mon projet : pour quoi faire ?

Les développeurs ne sont pas tous des individus mal rasés, travaillant la nuit et jonchant leur sillage de boites de soda et d’emballages de pizzas.

L’agilité ne se réduit pas à des hurluberlus cherchant à couvrir chaque centimètre carré des murs de post-it multicolores.

Et d’ailleurs, l’agilité, qu’est-ce que c’est ? Vraiment !

Est-ce une nouvelle mode qu’il me faudra subir et passera à mon grand soulagement ? Ou est-ce une véritable réponse à la sclérose et l’inefficacité qui gangrènent nos projets ?

Durant cette session de découverte, nous allons voir ensemble ce qu’est réellement l’agilité, en quoi elle peut vous aider à réaliser des projets qui déchirent tout en y prenant plaisir ! Depuis les principes de base (adaptation aux changements, collaboration et transparence) jusqu’aux pratiques telles que le test-driven développement, le pair-programming, l’intégration continue, etc. nous iront à la rencontre des fondamentaux de l’univers agile.

Enfin, nous dérouleront un jour dans la vie du développeur agile pour comprendre comment les choses se passent. Réellement.

Rendez-vous à Nantes le 8 Novembre pour la DevFest !

Devfest Nantes 2013

Le tour de Varnish en 30 minutes

… En fait, cela aurait dû être “le tour de Varnish en 80 jours” … cela s’est avéré trop long, nous nous sommes donc repliés sur 30 minutes !

Varnish, j’en entends parler régulièrement, surtout quand il s’agit de gros, de très gros sites. Mais jusqu’à présent, je ne savais pas vraiment ce que c’était. La présentation que nous a fait Dridi Boukelmoune chez Zenika nous a éclairé sur la bête.

Le tour de Varnish en 30 minutes

Varnish, c’est quoi ?

C’est un cache HTTP. Plus exactement un reverse proxy cache HTTP. Ce n’est ni le premier, ni le seul. Pourquoi donc l’évoquer ? Comme je l’ai dit, on trouve Varnish dans les grosses, les très grosses infrastructures Internet. Car outre sa remarquable stabilité, ce sont ses performances très élevées qui ont fait la réputation de Varnish. Bien qu’issue de Varnish Software (la partie commerciale de Varnish), cette petite Vidéo fait un bon résumé de la situation.

Bref, Varnish, c’est un cache HTTP très performant car travaillant au plus près de la pile TCP/IP. 

L'architecture de Varnish

Pas d’IHM sexy pour configurer la bête. Varnish est fait pour les admmins sys barbus et se configure à l’aide d’un DSL : le VCL.

Configurer Varnish avec VCL

VCL c’est plus qu’un script de configuration, c’est un DSL qui est ensuite compilé en C. Pré-compilé, devrais-je dire, car bien sûr ce code C est lui même compilé ! Nous l’avons évoqué, Varnish est focalisé sur la performance, et on ne fait pas de choses performantes avec des mécanismes dynamiques ! Malgré tout, le changement de configuration peut être opéré à chaud.

Time to live

De base, Varnish gère son cache en TTL, mais on peut y inclure certaines variantes:

  • En fonction de l’encoding
  • En fonction du navigateur utilisé
  • En fonction de la compression

Les règles par défaut

Tout ne doit pas aller en cache ! Le VCL permet d’ajuster ces règles, mais par défaut Varnish stipule que :

  • Il n’y a pas de mise en cache d’une ressource si elle est liée à un cookie.
  • Pas de mise en cache si il y a des informations d’authentification.
  • Seules les requêtes GET et HEAD sont mises en cache. Les requêtes POST ne le sont pas.
  • Varnish gère les “variantes” en s’appuyant sur l’en-tête HTTP vary qui permet d’indiquer explicitement un élément à associer à la décision de cache.

 Invalidation ou prolongation

Au-delà de la règle de fonctionnement de Varnish, qu’il s’agisse des règles par défaut ou d’une configuration qui s’en écarte, il est possible d’exclure des ressources du cache à l’aide de plusieurs mécanismes.

L’invalidation des ressources est possible, que ce soit sur une base individuelle ou suivant une expression régulière. Elle peut être opérée en ligne de commande ou via le VCL.

L’option la plus radicale d’invalidation est la purge. La ressource est retirée du cache, il n’y a plus moyen de la ressusciter une fois cela fait.

Varnish possède aussi une notion de ban. Il permet d’invalider un objet du cache, mais sans en entrainer son nettoyage.

A contrario on peut prolonger une ressource au-delà de ce que prévoit initialement les règles de Varnish,  avec la notion de “grâce” qui permet de prolonger un contenu à priori périmé. Ce mécanisme peut s’avérer utile en cas de défaillance du back-end.

Mais comment ça fonctionne le VCL ?

Ecrire du VCL, c’est presqu’écrire du C (c’est probablement pour cela que c’est facile à compiler…). Varnish propose un certains nombre de “looks”, des template méthodes qui sont appelées par Varnish si elles sont implémentées. Il suffit alors d’implémenter la fonction en question pour s’insérer dans le cycle de vie du cache, et d’y utiliser les fonctions que Varnish met à notre disposition pour bannir un objet, par exemple.

Bien sûr, il faut pour cela connaitre le cycle de vie des objets

Varnish VCL

Et voici ce à quoi peut ressembler un bout de configuration Varnish :

sub vcl_recv {
        if (req.request == "PURGE") {
                if (!client.ip ~ purgers) {
                        error 405 "Method not allowed";
                }
                return (lookup);
        }
}

Comme on peut l’imaginer, cet élément de configuration vient “hooker” l’état recv, en suivant le pattern “template method”.

Au-delà de la configuration

Director : Varnish fait du load balancing !

Enfin, pas tout à fait du load balancing, mais presque !

Un director est un groupe de back-ends clusterisés pour lesquels on établit une stratégie de redirection. Le but premier n’est pas de faire du load balancing, mais plutôt de maximiser les chances d’obtenir une ressource.

Maintenant, on peut aussi s’en servir pour faire du load balancing !

Etendre Varnish avec les modules

Outre la possibilité qu’offre le VCL d’y introduire du code en C, la méthode la plus élégante d’étendre Varnish est d’utiliser les modules, ce qui est possible depuis la version 3 de l’outil.

Dridi a d’ailleurs écrit un article (sinon l’article de référence) sur ce sujet, sur le Blog de Zenika.

Administrer l’outil

La console

On n’est pas chez les touristes. Ici de base, l’administration c’est la ligne de commande avec varnishadm ! Certaines des opérations que l’on peut faire avec sont même scriptables pour être intégrées dans un sh. Du classique pour les admins, donc.

Le bundle commercial de Varnish propose la Vanish Administration Console (VAC) qui est un outil Web. Mais comme toujours dans ces cas là, on ne peut quand même faire l’impasse sur la ligne de commande.

La gestion des logs

C’est un sujet d’attention particulier. Le loge peuvent rapidement ralentir terriblement les traitements. Varnish a pris une option radicale à cet égard : les logs sont en mémoire et sont en binaire ! Et Varnish propose un ensemble d’outils pour y accéder et les exploiter (varnishlog, varnishncsa)

Vers l’infini et au-delà…

En résumé

Le point essentiel, celui qui fait choisir Varnish, c’est qu’il s’agit d’un cache HTTP ultra-performant à même de décharger efficacement le back-end dans le cas de sites à très fort trafic. C’est LE cas d’utilisation. Pour un site n’ayant pas un très fort trafic, Varnish sera de très peu (et plus probablement d’aucun) intérêt.

Varnish en 5 étapes

Voici la démarche condensée de mise en oeuvre que nous propose Dridi :

  1. Cacher le contenu statique
  2. Configurer la compression
  3. Cacher le contenu semi-statique
  4. Automatiser l’invalidation
  5. Améliorer le back-end

Les autres fonctions de Varnish

Bien que sa fonction essentielle soir le cache HTTP, on ne peut ignorer ce que Varnish sait faire d’autre :

  • Gérer le streaming
  • Utiliser des ACL
  • Structurer des architectures multi-tenant.
  • Tester son architecture, c’est à dire en pratique tester sa configuration VCL, avec le framework de test qui fait partie de la distribution.
  • Gérer le Edge Side Include (ESI)

Bien entendu, nous l’avons évoqué, Varnish peut servir de reverse proxy, bien que ce ne soit pas sa vocation première.

Merci Dridi !

Dridi n’est pas seulement un excellent collègue chez Zenika, son intérêt et sa maitrise croissante sur Varnish l’ont amené à en devenir un contributeur ! Il est entre autre chose l’auteur du module QueryString.

La présentation dont Dridi nous a gratifié fera partie de sa présentation des petits déjeunes planifiés sur Lyon et Paris, consacrés à Varnish. J’avoue que cette présentation en 30 minutes (30 minutes et 18 secondes, précisément) était un peu ardue pour moi, car faite un peu sans concession. C’est mon seul reproche. Elle présente clairement les fonctions et possibilités de l’outil et l’enthousiasme, la passion devrais-je dire de Dridi pour ce projet open-source font beaucoup au plaisir que j’ai eu à l’écouter.

La présentation de Dridi est accessible ici.

En épilogue, je vous propose de jeter un coup d’oeil au manuel de référence de l’outil.

Agile Grenoble 2013

J’avais brièvement évoqué cet évènement cet été, pour vous suggérer de le noter dans vos agendas. Je serais présent cette année à la conférence où je présenterais un sujet. Teasing, teasing :

User stories, what else ?

Les users stories sont rapidement devenus la formulation convenue du besoin. Mais est-ce la seule ? Est-ce toujours la meilleure ? On dit que quand on a un marteau, tout ressemble à un clou. Notre communauté agile tend à ignorer ce qui vient d’ailleurs. Pourtant ce qu’on appelle l’ingénierie des exigences est un domaine riche de plusieurs décennies de connaissances et de techniques. Certaines peuvent être utilisées directement, d’autres doivent être adaptées ou peuvent servir d’inspiration.

Au cours de cette session, nous allons étudier ensemble plusieurs techniques et concepts du recueil des besoins et les regarder par le prisme de nos pratiques agiles. A l’aide d’exemples, nous verrons comment elles peuvent renforcer nos pratiques actuelles.

La conférence Agile Grenoble

Agile Grenoble existe 2008. C’est LA conférence incontournable sur l’agilité sur la région Rhone-Alpes et l’un des évènements majeurs consacré à l’agilité en France aux côtés d’Agile France et du Scrum Day (Je devrais sans doute ajouter Mix-IT, mais cet évènement n’est pas uniquement focalisé sur l’agilité). Avec 500 inscrits, elle se situe même devant les grandes manifestations Parisiennes en terme de fréquentation !

Zenika à la conférence

Zenika est fier de compter au nombre des sponsors de l’édition de cette année.

Mais il ne s’agit pas seulement de faire acte de présence, ce serait insuffisant.

Le leader en tant qu’hôte

En plus de ma session, Géry Derbier animera l’atelier “le leader en tant qu’hôte” auquel j’ai eu le plaisir de participer à Agile France cette année. En voici le teaser:

La métaphore du leader comme héros ne me satisfait bien évidemment pas. Celle du servant leadership ne me convient pas beaucoup plus d’autant que je l’ai rarement entendue traduite en français et je pense que dire à un exécutif qu’il doit devenir un serviteur est… source de résistance. Je propose d’explorer ensemble une métaphore ancienne proposée par Mark McKerkow, le leader en tant qu’hôte. Je propose d’étudier entre autres les aspects suivants : la notion d’hospitalité et le pouvoir de l’invitation, la co-création d’un moment comme une soirée ou une fête (en français hôte designe à la fois celui qui reçoit et l’invité), l’équilibre entre définir et participer, … Nous verrons ainsi comment utiliser, ou pas, cette métaphore dans la mise en oeuvre de l’agilité dans une organisation. Compte tenu du caractère co-créatif de la métaphore proposée tout le monde est concerné et bienvenu dans cette session.

See you soon !

Ce n’est d’ailleurs pas tout : Laurent Sarrazin présentera aussi une nouvelle session : Neurosciences pour transitions agiles. Une belle représentation du pôle agile de Zenika, donc.

Agile Grenoble 2013

Agile Grenoble 2013

Zenika est aussi présent à cet évènement en tant que sponsor, mais aussi nous l’espérons avec quelques interventions qui contribueront à la qualité de ce bel évènement !

http://2013.agile-grenoble.org/

Agile Grenoble 2013