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.

Note de lecture : PostgreSQL, A comprehensive guide par Korry Douglas & Susan Douglas

Note : 7 ; PostgreSQL de haut en bas!

750 pages sur 21 chapitres, voici un livre que l’on ne peut accuser d’être léger ! Les deux premiers chapitres servent surtout à introduire le SQL à la mode PostgreSQL avec ses spécificités. Le tout est plutôt pédagogique et couvre 130 pages. Pour terminer cette première partie, les chapitres 3 et 4 nous emmènent plus loin sur la structure des bases de données, des clusters et des transactions, ainsi que sur les modèles physiques sous-jacent de PostgreSQL pour comprendre comment en optimiser les performances. Du bon boulot !

Avec la seconde partie, fini de rire! On attaque les API en C pour écrire des fonctions permettant d’étendre PostrgreSQL au chapitre 6. Le retour au SQL (PL/pgSQL pour être exact) est bizarre au chapitre 7, surtout que c’est pour retourner à l’API C au chapitre 8 ! Le propos n’est pas très ais à suivre, il se poursuit au chapitre 9, tandis que le chapitre 10 nous en livre la variante C++. Il ne s’agit ni plus ni moins que de la reprise de ce qui est déjà vu au chapitre 8. Et désolé pour ceux qui espéraient du grand C++ ! Le chapitre 11 nous montre une autre variante de l’interfaçage PostgreSQL en C, via le préprocesseur ecpg qui permet d’écrire directement du SQL dans le code source. Je vous le dit: c’est déroutant! Moins déroutant est le chapitre 12 qui traite de cet interfaçage via le désormais classique ODBC. D’ODBC à JDBC il n’y a qu’un pas, ou un chapitre en l’occurrence, car c’est le chapitre 13 qui traite de l’interfaçage Java. Et l’on a donc la joie de voir la même approche se dérouler pour la 6ème fois ! De Java, on passé à Perl au chapitre 14, toujours avec la même structure de chapitre et le mêle exemple (pour la 7ème fois, donc). Au chapitre 15, c’est au tour de PHP, puis de Tcl/Tk au chapitre 16 (je croyais celui-ci mort et enterré). Enfin Python ferme la marche au chapitre 17.

Après la phase “comique de répétition” des interfaçages, la 3ème partie traite de l’administration. Il est assez curieux que l’on doive attendre le chapitre 19 pour voir traité l’installation du serveur ! Ce chapitre traite par ailleurs des très classiques gestion des utilisateurs, créations de bases avec sauvegarde et restauration de celles-ci. On y traite par ailleurs plutôt efficacement de tout ce qui a trait au paramètres d’exécution du serveur. Enfin le chapitre 20 traite de la localisation (pas seulement la langue, mais aussi les unités de mesure, de monnaie, etc…) tandis que les aspect sécurité ferment la marche au chapitre 21.

Dans ce livre, les aspects interfaçage avec différents langage tienne la plus grande part du livre. Aussi celui-ci vous sera surtout utile si vous utilisez la base de données de manière programmatique, surtout en C. Mais j’ai aussi trouvé plutôt bien traité les aspects lies à l’usage interactif, à la configuration et à la maintenance de PostgreSQL.

postgresql-comprehensive-guide

Référence complète : PostgreSQL, A comprehensive guide to building, programming and administering PostgreSQL databases – Korry Douglas & Susan Douglas – Developer’s Library 2003 – ISBN: 978-0-7357-1257-7

PostgreSQL


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

Worshop Running Lean, avec Ash Maurya (journée 1/12)

J’ai eu la chance de pouvoir assister au workshop instruit par l’auteur de Running Lean ce mois-ci. Un workshop qui n’a eu aucun mal à se remplir car ce ne sont pas moins de 45 personnes qui s’y étaient inscrites !

Ash Maurya à l'accueil

Le temps d’avaler un café et une viennoiserie et on attaque le sujet !

Les stagiaires à l'accueil

Où l’on commence par casser un mythe…

Et c’est celui du visionnaire ! Certes le produit est important, mais pas SI important. Et comme Ash nous le répètera plusieurs fois durant ces 2 jours :

Votre produit n’est pas votre produit.
Votre Business Model est votre produit.

Ainsi la cause principale d’échec n’est pas un problème de réalisation du produit, mais l’incapacité à trouver des clients. En fait, parmi les startups réussissant à développer leur business, 2/3 d’entre-elles modifient leur plan en cours de route !
Comment savoir quelle direction prendre dans ces conditions ? En écoutant le client, et donc en apprenant à l’écouter : Quel est réellement son problème ? Mérite-t-il d’être adressé ? Le client que nous imaginons est-il celui correspondant au problème, ou devons-nous réévaluer le problème, à moins qu’il faille changer de client ?
Ces questions s’adressent sur les business classiques sur des cycles d’un ou deux ans. Il s’agit ici d’aller plus vite et de maximiser ce que l’on apprends en fonction du temps. Finalement, le développement du produit est une activité qui est en travers de notre route. C’est en évaluant l’usage du produit que l’on apprends des choses sur notre utilisateur, pas en le développant !
Il faut trouver des moyens de gagner du temps à ce niveau et d’optimiser nos moyens d’apprendre

Le Lean Canvas

Le Lean Canvas est un Business Model (il est d’ailleurs inspiré du Canvas du Business Model Generation). Peu importe que nous utilisions ce dernier ou celui de Ash Maurya. Ou même que nous inventions le notre. Mais il faut en faire un (et même plusieurs, en fait), et non un business plan ! Le Business Plan est un travail de fiction postulant sur des gains futurs dont on ne sait rien !

Lean Canvas

Il faut faire plus simple, un outil qui soit plus synthétique et tenant en une page et qui nous aide à construire nos hypothèses. Le Lean Canvas est cela et plus encore. Il suffit de 20 minutes pour commencer à le construire. Il faut encre moins de temps pour le déchirer et en recommencer un autre !

Le Lean Canvas nous aide à identifier la partie la plus risquée du plan :

  • Parviendra-t-on à être suffisamment différent pour acquérir un “unfair advantage” ?
  • Sur quelle marge (revenue – coûts) peut-on compter lors du scaling ?
  • Quels signes, quelles métriques mettront en lumière la “traction” sur le produit. Attention aux métriques de vanité, il est préférable de s’appuyer sur des métriques dites de cohortes et non des chiffres cumulés.
  • Enfin le problème est-il bien compris et bien articulé ? C’est la proposition de valeur. A ce stade, il est préférable de rétrécir le segment de marché auquel on s’adresse ! Geoffray Moore ne dit pas autre chose dans “Crossing the Chasm” !

Le véritable travail de l’entrepreneur

Nous allons le répéter une fois encore : votre produit n’est pas le produit, c’est le business model qui est le produit !
Le boulot de l’entrepreneur est de “dé-risquer” de manière systématique le business model au travers de conversations :

  • Avec les (futurs) clients
  • Avec l’équipe
  • Avec les mentors
  • Avec les investisseurs
  • … et même avec les compétiteurs !

Bien sûr, on ne parle pas de conversations au coin du feu, mais de conversations structurées, évaluables et capables de nous apprendre quelque chose !

Les 3 étapes de la startup

Dans l’approche “running lean”, Ash Maurya identifie 3 étapes majeures de l’évolution de la startup. Entre chaque étape on trouve un objectif de progression de clients d’un ordre de grandeur 100 ou plus !

Running Lean 3 stages

1 – Problem / solution fit

  • Le problème que l’on cherche à résoudre vaut-il la peine d’être résolu ?
  • Est-ce le bon client par rapport à ce problème ?

Comme le résume Ash Maurya :

La vie est trop courte pour développer quelque chose dont personne ne veut !

Durant cette phase on travaille avec très peu de clients, 1 à 10 par exemple. mais on travaille en grande proximité !
Le fameux MVP de Lean Startup prend place à cette étape. L’auteur de Running Lean nous donne 2 exemples de types de MVP :

  • Le concierge MVP : vous n’avez pas construit de système et vous effectuez manuellement ce qui sera plus tard automatisé.
  • Le magicien d’Oz : Vous laissez croire à vos utilisateurs qu’il existe un système derrière votre site web, alors que tout y est fait manuellement, à la manière du “mécanisa turk” que propose Amazon !

On en trouve d’autres dans le livre d’Eric Ries.

2 – Product / Market fit

Ai-je construit quelque chose dont les clients veulent ? Le tester avec un panel assez large d’utilisateur n’est pas la même chose que le tester avec trois. Il est temps de voir si le marché existe vraiment !

3 – Scale !

Comment accélérer la croissance ? C’est là que la notion de “moteur de croissance” prends tout son sens.

Running Lean as a startup

Tout cela nécessite bien un petit exemple. Prenons celui de la réalisation du livre : Running Lean !

Problème / solution

C’est ce que l’on appelle un “MVP accidentel”. En l’occurrence le Blog de l’auteur (octobre 2009). Il est démarré afin de documenter ses réalisations en mode startup en utilisant le Lean Startup ! A l’époque, l’auteur avait plus de questions que de réponses, une bonne motivation pour démarrer le blog.
Mais en faire un livre ? Pas question !

Customers interviews

Au fur et à mesure, les requêtes des lecteurs du blog s’intensifièrent pour convertir la série de posts en livre. D’où interviews pour en comprendre la raison. Ah ! C’est pour avoir du contenu qui permette de convertir les principes du Lean Startup en techniques applicables…

En mars 2010, Ash teste les clients potentiels via un teaser. Le nom n’est pas définitif (pas d’optimisation prématurée), mais la table des matière en est un élément important (proposition de valeur). L’objectif est de collecter 1000 emails (clients potentiels) afin de voir si il existe un intérêt sur le marché.

Workshop

Si le teaser est la définition de la solution, alors le workshop est la vérification quantitative.

En Juin 2010, l’auteur teste l’intérêt réel des clients potentiels via un workshop gratuit (small batch), puis payant en Juillet / Septembre 2010 (MVP où le prix est une part du produit).

Pré-order

A partir d’octobre 2010, il prend des pré-commandes pour un ebook en PDF (pas la peine de sortir la version Kindle, il n’y a rien à apprendre en la produisant).
On entre alors dans un cycle de release de 2 semaines. En cours de route, un éditeur manifeste d’ailleurs son intérêt (décliné par l’auteur).

Auto-publication

Elle est opérationnelle en Février 2011. S’en suivra une seconde version produite plus classiquement chez O’Reilly.

Un produit n’est jamais fini, juste “releasé”. D’autres étapes ont encore suivi celle-ci…

Objections !

Nous avons vu ce que sont les 3 étapes dans le cas de startups Web. Quelles peuvent être les objections ? L’approche Running Lean est-elle cantonnée à ces profils d’entreprises ?

B2C

Si je veux toucher 1 million de personnes, quel intérêt il y a-t-il à démarrer une première étape avec 1 à 10 utilisateurs ?
Disons que si les 10 premiers utilisateurs ne sont pas intéressés, il faut certainement changer quelque chose. Inutile de monter en échelle si l’on a pas identifié un problème méritant d’être résolu à petite échelle…

B2B

Les cycles de ventes y sont plus long. 

Ce sont les signes de rejet qu’il faut écouter avant même de commencer à conclure des ventes. Inutile d’engager des commerciaux trop tôt !

Low Tech

Un exemple “local”, c’est à dire à Austin, Texas : La restauration !
Inutile d’investir dans les murs pour tester son concept, c’est à dire la proposition de valeur. Une simple caravane permet de vérifier l’intérêt de la clientèle et en prime de tester différentes parties de la ville pour appréhender celle qui corresponds le mieux au concept.
En gros, voilà à quoi cela ressemble :

Restaurant Trailer

Une fois le concept validé, on peut monter en gamme, donc investir dans les murs !

Hardware

La construction industrielle semble mal se prêter à ce concept. Pourtant il a été mis en oeuvre pour la construction de voitures. Comment ? Simplement en commençant avec un prototype, et en le faisant essayer. Et en itérant !

Unique Value Proposition

Un problème bien exprimé est un problème déjà à moitié résolu !
L’UVP doit se focaliser sur un problème et éviter les promesses marketing vides de sens qui ne sont pas assez spécifiques.
Au contraire, il faut favoriser ce que Ash Maurya appelle “the instant clarity headline”. Par exemple : Youtube = Flickr for video !
Le prix est une partie intégrante de la proposition de valeur. Il ne faut pas hésiter à se comparer à l’alternative, à l’instar de ce que Jack Trout préconise avec son Product Ladder.
Partie complémentaire de l’UVP, le canal de vente est une partie importante qui déterminera si le modèle est scalable

Itérer !

Enfin il ne faut pas se cantonner à un seul canvas, mais au contraire itérer sinon l’on risque de se trouver piégé dans un optimal local. L’UVP doit aller de pair avec le “unfair advantage”, la caractéristique qui ne peut pas facilement être copiée, à l’image du Delivering Happiness de Zappos. Attention, sans cet “unfair advantage”, la proposition de valeur est risquée.

Boire un petit coup c’est agréaaaable !

Première journée terminée. Beaucoup d’informations. Certes, on la retrouve dans le livre en bonne partie, mais Ash Maurya fait un bon boulot pour insister sur ce qui doit l’être et l’illustrer. La partie “workshop” est moins bien gérée : peu de périodes de pratiques, et alors trop longues et peu dirigées…
On se retrouve au bar pour conclure cette première étape.

Bière à la fin de la 1ère journée

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.

Note de lecture : Scrum, a Breathtakingly Brief and Agile Introduction, par Hillary Louise Johnson & Chris Sims

Note : 7 ; Une très bonne introduction à Scrum pour l’impatient : brève, claire et bien écrite.

Plutôt qu’un livre, il s’agit d’un livret. Sous sa forme papier il pèse moins de 50 pages (et encore, des pas bien longues). Ce texte se situe à mi-chemin entre le « Scrum en 5 minutes » et le fameux « Scrum and XP from the Trenches » d’Henrik Kniberg. Il se situe plus près du premier titre et ne saurait se comparer au best-seller de notre Suédois préféré.

S’il ne prends pas 5 minutes, il ne nécessite pas tellement plus d’une heure. Le texte se lit d’autant plus vite que le style est vraiment concis et alerte : un vrai plaisir pour le lecteur.

Après une courte introduction (vraiment courte : une page pour expliquer « pourquoi Scrum »), le texte se présente en 3 parties :

La première présente les 3 rôles. C’est clair et le partage des responsabilités et l’état d’esprit attendus sont sans équivoques. Chacun des 3 aspects est plié en une paire de pages, ou peu s’en faut !

La seconde partie traité des « artefacts » : le product backlog, le sprint backlog, le burdown / burnup chart, le tableau des tâches et la définition de terminé. Encore une fois la clarté prime, mais les auteurs ne font pas de raccourcis pour expliquer par exemple l’aspect adaptatif du détail du backlog ou encore comment se présente une User Story.

La troisième partie nous fait voyager au sein d’un Sprint. Si les auteurs parlent de sprint d’une ou deux semaines, ils font le choix de nous présenter un sprint d’une semaine. Les cérémonies sont présentées de manière précise et concise : qu’est-ce qu’on y fait et dans quel ordre.

Petite particularité de l’ouvrage, il parle du « story time », temps dédié à la préparation du Sprint suivant. De l’aveu des auteurs, cela ne fait pas encore partie de Scrum et c’est la première fois que je vois cela évoqué, même si je l’ai moi-même pratiqué.

En appendice, on trouve les valeurs et pratiques agile, donc le fameux manifeste, mais curieusement pas la liste des pratiques et valeurs de Scrum !

Ce texte est un condensé d’un autre ouvrage des mêmes auteur : « The Elements of Scrum » qui en constitue en quelque sorte la version longue. La version électronique coûte moins d’un euro et je recommande sans réserve ce texte pour initier rapidement un équipier à Scrum. Plus encore que le Scrum en 5 minutes !

Scrum a breathtakingly brief and agile introduction

Référence complète : Scrum, a Breathtakingly Brief and Agile Introduction – Hillary Louise Johnson & Chris Sims – Dymaxicon 2012 – ASIN : B007P5N8D4 (Kindle edt.)

Scrum: a Breathtakingly Brief and Agile Introduction


https://www.goodreads.com/book/add_to_books_widget_frame/193796504X?atmb_widget%5Bbutton%5D=atmb_widget_1.png