En décisionnel aussi il faut suivre la mode!

Le petit monde de la data n’est pas étranger aux phénomènes de mode. Si je vous demande quels sont les sujets du jour, je suis quasi sûr que tout le monde me répondra Big Data et Data Visualization. Et ceux de l’année dernière ? Plutôt Cloud et BI Self-Service. Avant cela ? C’était BI Agile et le InMemory

Aujourd’hui j’aimerais faire un point rapide sur les caractéristiques et les mérites de certains de ces buzzwords, et l’impact qu’ils ont eu sur mon métier de consultant décisionnel. Evidemment ce sont des raccourcis, si vous êtes expert d’un des sujets, n’hésitez pas à nous en dire plus dans les commentaires 🙂

Data Visualization

  • C’est quoi : Une volonté artistique dans un monde de tableurs
  • Pourquoi : Rendre attractive la consommation de la donnée. Permettre aux utilisateurs d’utiliser autre chose que des feuilles Excel pour voir et comprendre les données
  • Dans mon quotidien : La dataviz pure nous vient du monde des designers. La partie visuelle est magnifique, mais la partie data est souvent négligée (analyses non reproductibles, traitement de la qualité des données aléatoire…). C’est beau, certes, mais difficilement transposable en entreprise. Cependant ce courant a déclenché une reconnaissance, a identifié un besoin qui pousse l’adoption de vrais produits technologiques (dont Tableau) qui permettent de faire du beau et du solide. Et ça c’est vraiment mon quotidien !
  • Si ça vous intéresse : je vous encourage à assister aux Data Tuesdays. Entre les présentations des dernières visualisations et la faune toute particulière, c’est une expérience à vivre 😉

Big Data

  • C’est quoi : Un courant technologique, une nouvelle sorte de base de données
  • Pourquoi : Répondre à un besoin spécifique : les 3 V – Vitesse (quasi temps réel), Volume (>TB) et Variété (des types et thèmes de données). Si les bases de données « legacy » (SQL Server, Oracle, MySQL, Teradata…) répondent bien à chaque combinaison de 2 V parmi les 3, il fallait autre chose pour traiter les 3 en même temps.
  • Dans mon quotidien : Ca frémit gentiment, les clients nous demandent des infos sur la techno, ça fait partie de la veille technologique, mais pas encore de business à proprement parler. Par contre je le vois arriver dans mes produits, que ce soit Tableau ou SSIS (via Azure), dans lesquels j’ai à disposition des connecteurs vers Big Data (Hadoop/Hive). Il me faudrait les tester pour voir les contraintes, c’est dans ma to-do list mais pas en haute priorité…
  • Si ça vous intéresse : Le mieux c’est surement d’implémenter la chose. Bon courage, et faites-nous un retour 🙂

Le Cloud (version BI)

  • C’est quoi : Un courant technologique, l’hébergement des services informatiques (base de données entre autres) « sur Internet ».
  • Pourquoi : Les services ainsi hébergés sont disponibles à tous vos utilisateurs à travers une simple connexion Internet. L’infrastructure est complétement virtuelle, elle est gérée par l’hébergeur, les SLA sont censés être garantis et le tout peut évoluer en 3 clics de souris.
  • Dans mon quotidien : Une avalanche de mail de Microsoft pour me convaincre d’utiliser SQL Azure et des private jokes sur la tarification de la chose sur les « SELECT * ». Plus sérieusement, je vous avoue que je suis encore partagé sur le cloud. Côté points positifs, les cas d’utilisation que ce type de techno libère pour le reporting sont excellents. Il n’y a qu’à voir les nouvelles solutions hébergées de dashboarding qui apparaissent, c’est vraiment chouette (oui je vous dois un comparatif, c’est dans les tuyaux !). Côté points négatifs, j’ai encore des réticences à imaginer héberger un datawarehouse dans la durée dans le cloud. D’abord parce que les performances ne sont pas encore là (ETL bridé par la bande passante par exemple), ensuite parce qu’à mon sens le stockage des données d’entreprise doit rester dans l’entreprise.
  • Si ça vous intéresse : Essayez SQL Azure, malgré toutes mes réticences sur le concept ça reste un outil technologique bluffant.

Le In Memory, le stockage vertical, les algorithmes de compression du futur…

  • C’est quoi : Des nouvelles techniques pour les bases de données
  • Pourquoi : Enfin tirer parti des nouvelles architectures physiques des machines modernes (beaucoup de RAM, CPU multi core…)
  • Dans mon quotidien : C’est partout. Que ce soit Tableau (on ne connait pas exactement les optimisations du moteur de Tableau mais c’est bien dans la même veine) ou la BI Microsoft (xVelocity alias Vertipaq qui est le moteur derrière PowerPivot et SSAS Tabular), ça a été intégré dans mes produits et je l’utilise donc régulièrement. En fait c’est totalement transparent pour nous, en dehors de quelques contraintes de design, c’est juste que les bases sont beaucoup plus rapides sur des opérations historiquement délicates (distinct count…).
  • Si ça vous intéresse : Si vous êtes dans le décisionnel il y a de fortes chances que vous l’utilisiez déjà. En effet en plus de Tableau et Microsoft, la plupart des éditeurs ont déjà intégré ces nouvelles sauces à leurs produits : SAP HANA, le moteur de QlikView, IBM TM1, Oracle en mode appliance, Tibco Spotfire…

Je conclue ce petit tour d’horizon en vous rappelant que la BI Agile j’en ai déjà assez parlé dernièrement et en vous annonçant que la BI Self-Service c’est mon nouveau sujet chouchou ! De ce sujet on en avait déjà causé sur FrenchConnection.bi et j’y consacrerai un autre article bientôt.

Petit Rappel Consulting: Forfait, Régie, Régie forfaitée…

Régie : Engagement de moyen

« Sur ce projet nous allons mettre 3 personnes à temps plein, du 1erjanvier au 12 décembre. »

  • Si on finit avant : Option 1 : les consultants restent jusqu’à la fin. Option 2 : les consultants partent et ne facturent que le consommé.
  • Si on ne finit pas à temps : les consultants s’en vont, à moins de commander une nouvelle prestation.

Particularités

  • Pour le client : pilotage complet de l’activité des consultants sur la période
  • Pour les consultants : Aucun risque sur la facturation

Facturation

  • On négocie un TJ, Taux Journalier, pour chaque consultant. On détermine la date de début et la date de fin de la prestation (nb: les anglosaxons préférent manifestement le taux horaire au taux journalier).
  • On multiplie le TJ par le nombre de jours de présence dans le mois, ça donne une facture mensuelle.
  • On prévoit des conditions de sortie dans le cas où on veut finir avant la date de fin (pénalités, préavis, proposition de remplacement…)

Forfait : Engagement de résultat

« Nous finirons le projet tel que défini dans le cahier des charges, avant le 12 décembre. »

  • Si on finit avant : les consultants s’en vont
  • Si on ne finit pas à temps : les consultants restent à leur frais, voir encourent des pénalités de retard si le contrat le prévoyait

Particularités

  • Pour le client : aucun coût en cas d’échec du projet, les consultants ne sont pas payés
  • Pour les consultants : plus grosse facturation si on finit avant, la compétence est récompensée

Facturation

  • On négocie un coût global et une date de livraison. On définit un périmètre précis.
  • On inclut également un échéancier de paiement (30% au démarrage, 50% à la livraison, 20% post-garantie).

« Régie Forfaitée »

« Sur ce projet nous allons mettre 3 personnes à temps plein, du 1erjanvier au 12 décembre. Sur cette période nous devrons finir le projet tel que défini dans le cahier des charges. »

  • Si on finit avant : Option 1 : les consultants restent jusqu’à la fin. Option 2 : les consultants partent et ne facturent que le consommé.
  • Si on ne finit pas à temps : les consultants restent à leur frais, voir encourent des pénalités de retard si le contrat le prévoyait

Particularités

  • Pour le client : c’est le beurre et l’argent du beurre
  • Pour les consultants : argument de vente massue pour ouvrir un compte capricieux

Facturation

  • Mode régie avant l’instant T
  • Aucune facturation en cas dépassement, voir pénalités.

« Forfait régitisé »

« Nous finirons le projet tel que défini dans le cahier des charges, avant le 12 décembre. Sinon nous mettrons 3 personnes à temps plein jusqu’à ce qu’il soit terminé »

  • Si on finit avant : les consultants s’en vont
  • Si on ne finit pas à temps : on bascule en régie à durée indéterminée

Particularités

  • Pour le client : Les consultants sont motivés pour finir rapidement, et si ça dérape on a un engagement de moyen pour terminer. Ça évite les consultants qui jettent l’éponge et disparaissent en cas d’échec.
  • Pour les consultants : c’est le beurre et l’argent du beurre.

Facturation

  • Mode Forfait avant l’instant T
  • Bascule en mode régie en cas de dépassement, TJ à fixer avant de commencer.

Le nommage des modes mixtes peut varier, voir s’inverser, soyez donc attentif à la formulation de qui doit faire quand ça dérape. J’espère que ça aidera ceux qui nageaient encore avec les définitions 🙂

Notez que pour ceux qui partent sur de l’Agile, le mieux est souvent de travailler en régie. Les itérations provoquant souvent des glissements de périmètre – c’est le but en même temps – une contractualisation au forfait impliquera donc la rédaction de nombreux avenants. Cela devient rapidement pénible et limite le flux de productivité.

Je terminerai en rappelant qu’indépendamment des contrats, vos clients et vos consultants sont des êtres humains qu’il est très facile de démotiver / vexer / fâcher. Une relation de consulting doit être une relation de confiance, sinon aucun travail productif ne sera effectué. Ne gâchez pas cette relation en voulant être trop agressif d’entrée de jeu. Un consultant sous facturé (donc indirectement sous payé / mal valorisé) en régie longue ne fera jamais du très bon travail. Un client qui se sent arnaqué vous allumera toujours au moment de la recette. Sachez rester dans le gagnant-gagnant !

Un dernier conseil pour les clients : demandez une période d’essai, quel que soit le type de prestation. En régie : une période de 15 jours pendant laquelle vous pouvez arrêter la prestation sans frais ; en forfait : un premier mini-projet pour tester la capacité à livrer de l’équipe. Ne vous enfermez pas dans des relations inconfortables au boulot, vous avez votre vie personnelle pour ça… Plus sérieusement, n’ayez pas de scrupules : les bons consultants choisissent leurs clients, alors faites la même chose !

Décisionnel Agile : Réaliser son Datawarehouse en itérations agiles

Ça y est, vous avez bien intégré les valeurs de l’Agilité et vous vous êtes décidés pour construire votre datawarehouse en utilisant une méthode Agile. Excellent !

Déjà vous allez devoir convaincre les gens autour de vous que c’est possible. En effet la réaction naturelle dès qu’on parle de construire une solution décisionnelle en mode Agile c’est l’incrédulité. Autant pour la partie reporting personne ne voit vraiment de problème, souvent c’est même le contraire, autant côté back end – l’ETL et le datawarehouse à proprement parler – les reproches fusent :

  • Les alimentations sont lourdes et compliquées, on ne peut pas les réaliser rapidement
  • L’entrepôt est monolithique, vu les volumes on ne pourra pas le faire évoluer facilement

Pourtant, dès 1998 Kimball (notre père à tous 😉 ) publie les 3 concepts de base (PDF) du cycle de vie du datawarehouse :

  1. Mettre l’accent sur l’ajout de valeur métier pour toute l’entreprise
  2. Délivrer les données à travers les dimensions
  3. Développer une solution de façon itérative, livrer des incréments compréhensibles, plutôt que de travailler en mode big bang.

Vous avez vu la 3 ? Et la 1 ? Quel talent ce Ralph, en 1998 il faisait déjà de l’Agilité 🙂

Si le pape du datawarehousing dit qu’il faut le faire – notez qu’il ne dit pas qu’on devrait le faire, mais qu’il faut le faire – c’est bien que c’est faisable non ! Le tout c’est de savoir comment.

Dilbert.com

Là encore on écoute Monsieur Kimball, qui applique parfaitement l’Agilité et qui nous donne le mantra du découpage (Slide 19) : « Meaningful but Manageable » – « Porteur de sens mais Gérable ».

Point de vue implémentation l’objectif devient d’identifier la plus petite fonctionnalité qu’on puisse livrer à l’utilisateur qui porte encore du sens par rapport à ses besoins. Si on suit la méthodologie Kimball, cela veut dire qu’on va se concentrer sur un seul processus métier à livrer à chaque fois. Autrement dit, une seule table de fait (ou une poignée de tables) et les quelques dimensions qui lui vont bien. Soit on livre ces tables et on les rend accessibles en SQL, donc exploitable par l’utilisateur, soit on les accompagne d’un petit rapport SSRS ou un petit cube SSAS tout simple généré en une demi-journée. Là on a une itération courte et qui apporte de la valeur.

Oui mais même une table de fait et 4 dimensions ça peut prendre bien plus que 2 semaines à fabriquer, recetter et livrer ! Si on a des problèmes de qualité de données, si on fait du multi-source…

Ok. Alors on va se concentrer sur une seule source de données (une seule instance, un seul applicatif source…), sur un seul périmètre de données dans une même source (la France parmi le monde…), pour réduire le périmètre métier de la fonctionnalité, tout en maintenant son intérêt pour l’utilisateur, jusqu’à obtenir quelque chose d’unitaire et de livrable.

Par exemple, dans le cas d’une solution décisionnelle RH, on commencerait par importer uniquement les données actuelles, sans reprise d’historique. On récupèrerait uniquement les effectifs, uniquement d’une source choisie et d’une seule instance de cette source. On ne ferait de la qualité de données que de bas niveau (unicité, validation des types…) en rejettant tout ce qui n’est pas conforme. On ne ferait que peu de transcodage (uniformisation des critères type sexe, situation familiale…). Et on arriverait à générer un premier rapport simple mais précis sur la situation actuelle des effectifs sur ce premier périmètre. A partir de là on pourra itérer pour améliorer la couverture et/ou la qualité de la solution, en fonction des priorités arbitrées par l’utilisateur. Parfait ! 😉

Ce qui est important, c’est qu’il faut découper son projet selon l’axe métier, le périmètre fonctionnel, et pas selon l’axe technologique. Il faut faire du bout en bout (de l’ETL au reporting) en traitant un sujet simple, plutôt que de faire tout l’ETL, avant de passer à une autre brique :

Découper son datawarehouse en itération agiles

Il faut penser ses fonctionnalités comme les vertes, et pas comme les rouges!

Au départ cela peut paraître difficile, voir même contre-productif. Et ça le sera d’ailleurs certainement au début. Mais cela mène à une plus grande expertise, une plus grande maîtrise de la solution de bout en bout et à une bien meilleure satisfaction client. En 2 semaines on va pouvoir lui générer un premier rapport qu’il pourra effectivement employer pour améliorer son quotidien.

Evidemment il existe des cas particuliers. Si vous êtes à fond dans la qualité de données, on peut considérer qu’une table de transcodage propre, avec une petite interface d’administration en ASP.NET, c’est une fonctionnalité qui a de la valeur pour l’utilisateur. Dans ce cas on n’est pas obligé d’aller jusqu’au modèle dimensionnel pour avoir de la valeur.

Et une fois que votre datawarehouse sera monté et stable, vous pourrez faire des itérations facilement au niveau de SSAS, SSRS ou tout autre outil de haut niveau, là on retombe sur quelque chose de plus facile à gérer.

Un conseil important au niveau de l’ETL : perdez le réflexe de vouloir importer tous les champs de tous les fichiers ou tables sources. Il faut savoir minimiser la largeur (le nombre de colonnes) à importer après la collecte (Extract d’ETL) dans le phase de nettoyage/transformation (Transform d’ETL). Chaque colonne a un coup de maintenance, que vous l’utilisiez ou pas, elle a un impact sur les performances (largeur du buffer), sur la maintenabilité (les bugs qu’elle peut générer) et dans l’évolutivité (lourdeur des métadonnées à mettre à jour). Il faut savoir rester lean de bout en bout, même si nos instincts d’écureuils de la forêt nous encouragent à stocker toutes les noisettes qu’on peut trouver !

Une noisette pour les diriger toutes!

Si vous voulez stocker ces informations parce qu’elles sont périssables, utilisez ce type d’architecture comportant une base d’archivage des données au format source. Vous pourrez l’utiliser si besoin de reprise d’historique :

Archivage des données périssables

Enfin, tout cycle de développement Agile commence par une phase d’initialisation : rencontre des intervenants, découverte des premiers besoins, installation des produits, prototypage… qui ne sont pas à proprement parler des itérations. C’est normal, pas d’inquiétudes à avoir, la transition vers les itérations se fera naturellement quand on vous demandera la première date de livraison 🙂

Voilà, on a fait le tour de l’itération décisionnelle, n’hésitez pas à poser vos questions dans les commentaires. Mais notez tout de même que cela ne suffit pas pour avoir un vrai décisionnel Agile. La brique essentielle qu’il manque encore c’est le cycle d’amélioration continu, tant au niveau de l’équipe que du datawarehouse. Ça c’est un sujet pour un autre jour 😉

Gestion de projet décisionnel – Les valeurs de l’Agilité

La semaine dernière nous avons parlé choix de méthodologie projet pour un projet décisionnel. L’objectif était de déterminer un critère simple pour trancher entre développement itératif (méthodes agiles) et cycle en V (vive les spécifications). Pour ceux qui ne lisent pas les commentaires, un expert de l’agilité est venu apporter des précisions importantes (avec une forme désagréable certes, mais sur le fond plein de sagesse), la première étant qu’on ne devait pas partir sur de l’Agilité sans prendre en compte les valeurs. C’est vrai et nous allons commencer par là avant de voir comment cela impacte directement le découpage du Datawarehouse en itération.

Les valeurs de l’Agilité sont inscrites dans le Manifeste Agile – je vous laisse consulter Wikipedia si vous êtes intéressés par l’histoire de la chose. Ce sont en fait quatre relations de valeur qui doivent toujours guider le chef de projet agile :

Valeurs de l'Agilité

Notez bien que ces relations ne sont pas des oppositions, mais des axes de progression. Il faut le lire comme : « Il faut privilégier les individus aux processus ». Si vous entendez un chef de projet agile vous dire qu’il ne fera pas de documentation parce que ce n’est pas Agile, c’est qu’il n’a rien compris à l’histoire.

Pour moi l’Agilité repose vraiment sur ces relations. Ma méthodologie de projet agile (mes processus) n’est vraiment pas exemplaire, c’est un mini-SCRUM improvisé que je ré-invente à chaque projet. Par contre je bosse toujours d’abord sur les anomalies avant les évolutions, ma bonne relation avec le client passe avant l’exécution de toutes les clauses du contrat et j’adore quand un utilisateur propose de nouvelles idées – tant pis si on doit tout casser pour l’implémenter.

Evidemment fonctionner en mode Agile c’est une relation qui marche dans les deux sens. Tous les acteurs doivent jouer le jeu, les utilisateurs c’est évident, mais également l’acheteur par exemple, sans quoi vous risquez de mauvaises surprises en fin de mission (surtout si vous attendez des signatures de PV de livraison en fin de forfait, mais on parlera contractualisation plus tard)…

De ces 4 relations découlent 12 principes, qui donnent les grandes lignes sur comment implémenter l’Agilité. Les plus importantes :

  • Livrer de manière continue des fonctionnalités complètes, utiles et utilisables
  • Développer par itérations courtes (quelques semaines)
  • Etre adepte du changement, privilégier les solutions simples et adaptables
  • Rapprocher utilisateurs et développeurs
  • S’améliorer continuellement

Il existe plusieurs méthodes de gestion de projet Agile, toutes itératives, toutes intégrant des métriques de progression et un framework de processus et documentation pour bien mettre en place une relation Agile avec l’utilisateur, mais je ne suis pas vraiment la bonne personne pour en parler (moi je suis un peu de l’avis de Ted Dziuba ;))

Ce qui est important, c’est que dans le quotidien il ne faut pas oublier les 4 relations de valeur de l’Agilité, dont la première qui dit bien que les interactions avec les individus doivent être priorisées par rapport au processus. Il ne faut donc surtout pas être rigide avec ses processus Agile, ce serait le comble ! La seule exception à cet impératif – et encore, ça se discute – c’est qu’une fois une itération commencée, on essaye de ne pas toucher à son contenu. En effet, comment arriver à livrer quelque chose de valeur si on ne finit jamais rien?

Ok tout ça c’est cool, mais dans la vraie vie je suis en mission, je veux faire du développement itératif mais je ne connais pas encore mon client. Est-ce que je peux faire de l’itératif, du processus Agile, sans les valeurs ? Personnellement j’en doute. Enfin je ne doute pas que ce soit faisable, on peut tout faire, je doute juste que cela finisse bien. Augmenter le rythme du cycle de livraison et la disponibilité face aux demandes de changement, cela augmente la friction avec l’utilisateur. Si on n’encadre pas cette relation avec les boucles de feedback que sont les valeurs Agile, cette friction devient frustration qui dégénère en conflit. Il faut « l’huile » que sont ces valeurs pour que cela puisse fonctionner sur le long terme.

Et puis quand on y pense vraiment, ces valeurs ne sont rien d’autre qu’un gros concentré de bon sens non ?

Maintenant que le contexte est donné on va pouvoir continuer sur comment découper son Datawarehouse en itérations agiles.

Gestion de Projet Décisionnel – Méthodes Agiles ou Cycle en V ?

Après le choix de la technologie, je continue sur la réflexion lancée plus tôt autour du projet décisionnel. Cette fois-ci j’aimerais aborder la question de l’organisation du projet décisionnel, quelle méthodologie choisir, quel mode d’engagement, pour se garantir de réussir son datawarehouse (ou au minimum d’échouer avec élégance).

Avant de commencer, on peut se demander ce qui distingue un projet décisionnel d’un projet informatique classique. La réponse se limite en fait à un seul élément : la dépendance à une ou plusieurs sources de données externes. Cela peut paraître trivial mais c’est fondamental, car cela implique qu’un élément au cœur du projet n’est pas maîtrisé par les intervenants. Comment garantir un résultat, comment se prononcer sur des deadlines, quand un élément critique du projet n’est pas dans le domaine de responsabilité ? C’est la question qui doit rester dans la tête du chef de projet décisionnel quand il va choisir son organisation projet.

Au-delà de cette dépendance externe, il n’existe pas vraiment de différence avec un projet informatique classique. C’est un mythe qui a la peau dure, on aime tous se sentir un peu spéciaux, mais ça reste un mythe. En décisionnel on voit beaucoup les utilisateurs pour le design du reporting ? C’est pareil sur les applications qui disposent d’une interface – soient quasiment toutes. En décisionnel on gère de la complexité métier dans la modélisation ? C’est pareil pour les applications qui gèrent la production des flux métiers. En décisionnel on est déployé en petites équipes ? Ça arrive tout autant côté applicatif. En décisionnel on gère les sujets transverses de l’entreprise, ce qui est très politique ? Même combat au niveau des ERP, des CRM, du MDM… Non vraiment il n’existe pas vraiment d’autre différence.

Pour en revenir au sujet du jour, l’organisation du projet décisionnel, je vais tenter de faire court et organiser la réflexion autour de 3 questions :

  • Méthodes agiles ou Cycle en V… Comment arriver au but ?
  • Faire ou faire faire, faut-il appeler les consultants ?
  • Forfait ou régie, quel type de garantie fournir?

Pour ce premier article nous allons commencer par le choix de la méthode de gestion de projet : Méthodes agiles ou Cycle en V ?

La différence élémentaire entre les 2 vous la connaissez :

  • Les méthodes agiles sont itératives et participatives, on développe des petits morceaux d’application qui apportent de la valeur, qu’on fait valider par l’utilisateur avant de passer aux suivants. C’est l’utilisateur qui pilote au fur et à mesure le développement  à travers le choix des fonctionnalités qu’il souhaite voir développer. Un cycle de développement, une itération, prend 1 à 3 semaines.

Cycle de développement Agile

  • Le cycle en V repose lui sur un développement de bout en bout, c’est donc une délégation totale de la fabrication de l’application jusqu’à la livraison finale (lever de rideau !). Je veux un résultat, peu m’importe la route pour y arriver. Un cycle de développement prend plusieurs mois.Cycle de développement en V

Jusqu’à présent je pensais que cette dichotomie représentait bien l’écart entre les deux philosophies. Pourtant quand on y pense, et si on se concentre sur l’organisation projet et pas les valeurs que véhicule l’Agilité, une itération agile n’est rien d’autre qu’un mini cycle en V non ? On a une mini-spécification – la description de la fonctionnalité attendue – et toutes les phases classiques du cycle en V (conception, réalisation, recette, livraison). La différence entre les 2, encore une fois si on retire les valeurs de l’Agilité de l’équation, ne serait donc qu’un niveau de zoom sur l’échelle temporelle ?

Cette réflexion, et la réponse à cette question, m’est venue suite à la lecture de cet article d’un designer de 37 Signals : le dilemme de la documentation. L’idée principale de ce monsieur c’est que la volonté de créer, de changer, est un flux d’idées qui s’écoule comme une rivière. Si la productivité est suffisante, si la capacité à réaliser les idées est adaptée au volume du flux d’idées, tout va bien, la rivière s’écoule correctement. Par contre si la productivité est insuffisante, un goulet d’étranglement se forme, un lac de stockage apparaît.

Un océan de spécifications!

Deux possibilités existent alors :

  1. Soit on arrive à faire coïncider le volume du flux d’idées et la capacité de production pour retrouver un équilibre,
  2. Soit on stocke les idées sous la forme de documentation, de spécifications, dans l’attente de l’allocation de moyens de production.

Avec les méthodes agiles, on est dans la première possibilité. Le cycle en V correspond à la seconde.

Par rapport à votre projet, la vraie réflexion à avoir est donc : vais-je avoir une adéquation entre le flux de besoin et la capacité de production ?

Autrement dit : Mes utilisateurs sont-ils prêts à participer de manière active et régulière à mon projet ? Avec cette question on retombe sur nos pattes par rapport aux prérequis classiques de l’agilité. Les réponses :

  • Oui, je suis dans le cas 1, je peux faire de l’itération rapide sur le besoin > Méthode Agile
  • Non, je suis dans le cas 2, je vais devoir documenter mon besoin pour ne pas le perdre > Cycle en V

Un argument qui revient souvent en faveur du cycle en V, c’est que les spécifications sont un engagement sur le livrable qui permet de contourner le problème de confiance qu’on peut avoir avec l’exécutant. En effet : ne pas avoir confiance dans les moyens de production contribue au goulet d’étranglement, c’est un frein à l’innovation, le flux des besoins ne s’écoule pas correctement : il faut documenter pour stocker les idées.

J’ai déjà entendu que l’absence de maturité des utilisateurs était un obstacle à l’Agilité. Je ne suis pas d’accord, dans cette situation c’est le flux d’idées qui est contraint. J’aurai donc même tendance à penser l’inverse : un flux de besoin faible nécessitera une faible capacité de production, on pourra donc facilement arriver à une adéquation (solution 1). Par contre l’absence de maturité de l’équipe de développement est définitivement un frein à l’Agilité puisqu’on diminue la capacité de production, on rejoint le problème de confiance (solution 2).

Enfin, des sources de données de faible qualité sont un frein majeur à la capacité de production. Si vous savez que les auteurs des sources sont réactifs : privilégiez l’Agilité, dans tous les autres cas, commencez à spécifier…

D’une manière générale, chaque contrainte de votre projet doit être classée entre « frein à l’innovation » ou « frein à la capacité de production ». En fonction de l’équilibre vous saurez quelle méthode choisir.

Wow, j’écris sans trop regarder et je me rends compte que c’est déjà beaucoup trop long… Je coupe donc cet article ici, il me restera quelques points à traiter sur l’Agilité (les valeurs, comment découper son datawarehouse en fonctionnalités unitaires) et le cycle en V (positionnement MOA vs MOE), et on pourra passer aux questions suivantes :

  • Faire ou faire faire, faut-il appeler les consultants ?
  • Forfait ou régie, quel type de garantie fournir?

En attendant j’espère vous avoir donné une clef de lecture actionnable pour que vous puissiez répondre à la question : Cycle en V ou Méthodes Agiles pour mon projet décisionnel?

Gestion de projet décisionnel : gardez vos utilisateurs proches de vous!

Entendu par un camarade consultant la semaine dernière dans l’open-space chez son client, c’est le directeur des études qui s’adresse à la chef de projet MOA : « Il faut arrêter de mettre tout le monde dans vos mails! Si vous parlez au métier, ne mettez pas la MOE en copie et inversement. Il ne faut pas qu’ils communiquent directement! ».

Mes dents grincent…

J’insiste lourdement sur ce point dans ma session sur la modélisation dimensionnelle, construire un datawarehouse sans les utilisateurs, sans les métiers, c’est le chemin direct vers les projets les plus frustrants qu’il soit.

Mais d’abord un peu de vocabulaire. Notez que ce ne sont pas des définitions absolues: c’est ma vision de la chose, et cela nous permettra juste de ne pas discuter pendant 3h pour se rendre compte à la fin qu’on était d’accord depuis le début:

  •  Côté Cycle en V (on spécifie un sujet de bout en bout, on développe tout d’un coup, on livre tout d’un coup – échelle temporelle : le mois)
  • Métier / Utilisateur : Au sens strict, les gens qui utiliseront le système. Donc ça exclut les sponsors, les acheteurs, et tous les gens qui passent leur temps en réunion mais qui ne produisent rien.
  • MOA : Maîtrise d’Ouvrage. Les métiers passent commande auprès de la MOA d’une solution à un de leurs problèmes. La MOA va écrire un cahier des charges qui décrit la solution le problème et les attributs essentiels de la solution (MàJ 26/12/11 – précision). Ils connaissent bien les problèmes que les métiers ont l’habitude de rencontrer et les solutions usuelles qui y répondent. Ils savent quelle(s) MOE impliquer pour chaque solution.
  • MOE : Maîtrise d’Œuvre. Réalise les solutions. Plusieurs MOE aux capacités distinctes peuvent intervenir sur une même solution.
  • AMOA : Assistance à la MOA. En informatique, unité spéciale de la MOE qui à force de réaliser des solutions commence à bien connaître les problèmes. Va filer un coup de main à la MOA quand les sujets deviennent complexes.
  • PMO : Projet Management Office. Les gens qui suivent les plannings et les budgets au niveau global. Ils ne produisent rien au niveau projet.
  • Côté Agile (on définit un besoin unitaire, on le développe, on livre uniquement la solution locale, on itère – échelle temporelle : la semaine), les termes correspondent ici à la méthodologie SCRUM:
  • Product Owner : Son nom est écrit sur le produit. Son activité principale c’est la bonne tenue du backlog au niveau produit – la liste ordonnée par priorité des fonctionnalités qu’on veut voir apparaître. Notez qu’il ne doit pas forcément écrire lui-même toutes les users stories (la description des fonctionnalités), mais il doit travailler à ce qu’elles soient le plus clair possible et que leur ordre corresponde effectivement à la valeur métier qu’elles apportent.
  • SCRUM Master (ou équivalent) : Garant de la bonne application de la méthodologie. Son but à terme c’est de ne plus avoir de boulot! En effet si tout le monde joue bien le jeu, plus besoin de lui 😉
  • Equipe de développement : Tous les contributeurs qui permettent la livraison des besoins unitaires.

Maintenant que c’est clair, on peut revenir au sujet du jour. L’étape n°0 pour la modélisation de son datawarehouse c’est identifier ses utilisateurs clefs, et se garantir un accès direct à leur calendrier. Pour moi c’est juste indispensable. C’est la raison pour laquelle j’aime beaucoup la philosophie Agile. Peu importe la méthodologie Agile choisie (la plupart du temps je n’utilise qu’un mini SCRUM à ma sauce), ce qui compte c’est de délivrer de la valeur, rapidement. Certes ça a un coût sur l’emploi du temps du Product Owner, mais on obtient des solutions qui répondent beaucoup mieux aux besoins des utilisateurs.

Mais quand on est en cycle en V, on n’accède pas directement aux utilisateurs, on doit passer par la MOA. Et là il faut que les rôles de chacun soient clairs : la MOA n’est pas là pour faire écran entre les métiers et la MOE.

Dans un premier temps, la MOA est là pour comprendre le besoin métier et choisir la MOE qui saura réaliser la solution.

Une fois ce choix fait, elle est là pour faciliter les échanges entre les métiers et la MOE. C’est un rôle d’interprète et de diplomate. Interprète pour que tout le monde se comprenne – expliquer le métier aux techniques et les contraintes techniques aux métiers. Diplomate pour faire coïncider les objectifs de tout le monde: un besoin théorique parfait pour les utilisateurs VS la dure réalité technique imparfaite de la MOE.

De la même manière qu’un interprète ne remplace pas un interlocuteur dans un dialogue, la MOA ne doit pas occulter la MOE. D’où mes dents qui grincent quand j’entends un directeur des études dire l’inverse…

En tant qu’architecte j’ai un problème supplémentaire pendant les cycles en V (en plus des problèmes habituels des architectes). Je m’occupe de l’architecture technique, activité clairement MOE, mais également de l’architecture fonctionnelle, à savoir la modélisation dimensionnelle à proprement parler. Je réponds entre autres aux questions suivantes:

  • Quelles sont mes dimensions?
  • Quelles sont mes mesures?
  • Quel processus métier modéliser dans la table de fait?

Et ça ce sont des questions qui ont souvent déjà des réponses dans le cahier des charges rédigé par la MOA. Si les MOA sont éclairées, les réponses sont bonnes, ou au minimum elles ne sont pas figées dans le marbre. Le problème survient quand les réponses ne sont pas optimales et qu’elles ont déjà été promises à l’utilisateur. Là pas de remède miracle à part une bonne dose de diplomatie et pédagogie.

L’autre problème c’est quand une technologie est choisie par la MOA: « Mon utilisateur veut un cube pour faire des tableaux croisés dynamiques sur les 500’000 clients dans les 100’000 portefeuilles et afficher le détail »… Pour ceux qui ne connaissent pas les technos, c’est l’équivalent de choisir un semi-remorque pour rouler en ville parce qu’on aime bien la taille du coffre. Le choix d’une technologie pour un projet décisionnel n’est pas une décision anodine. Inclure la MOE dans ce choix est une évidence qu’il faut malheureusement souvent rappeler.

Désolé pour le pavé, mais il fallait que ça sorte 😉

Prochains sujets : choisir la bonne gestion de projet pour son projet décisionnel (Agile vs Cycle en V), et choisir la bonne technologie dans l’écosystème Microsoft.