Les Journées SQL Server 2013 : à ne surtout pas rater!

Alors ok, vous connaissez la rengaine, on est reparti pour la promotion du prochain événement du Groupe des Utilisateurs SQL Server, le GUSS, ALORS OUI MAIS NON !

Parce que pardonnez-moi le ton mais… honnêtement cette année on déchire comme jamais au niveau du contenu!

Les JSS2013 ça déchire

Jugez vous-même :

Agenda des JSS2013PS : Oui vous pouvez cliquer dessus si c’est trop petit 🙂

Sur chacune des 2 journées vous retrouverez 2 thèmes, qui sont instanciés côté moteur (dba/SQL) et côté BI :

  • Jour 1, le lundi 2 décembre, on causera des nouveautés SQL 2014 d’une part, et de l’infrastructure et du cloud de l’autre, avec par exemple :
    • Un deep dive sur Hekaton, le in-memory OLTP de SQL Server
    • Une présentation sur PDW v2, la nouvelle solution pour les méga DataWarehouse de Microsoft (miam miam des PetaBytes !)
    • Une bonne grosse tranche de Power BI, pour être certain d’être bien à jour sur la nouvelle vague d’outils BI de notre éditeur favori
    • Un retour sur l’infrastructure, avec comment bien monter son hard pour SQL Server, que ce soit par la BI ou plus globalement avec une vision datacenter
  • Jour 2, le mardi 3 décembre, on causera Usages et Outils d’une part, et on creusera les sujets en mode Perfectionnement de l’autre, avec entre autres :
    • Un panorama exhaustif de tous les sujets à maîtriser pour un dba SQL Server : les stats, les locks, la haute dispo…
    • Toujours pour les dba et aussi pour les développeurs SQL, des choses un peu plus originales comme une session dédiée à vous expliquer les langages bizarres du décisionnel, des astuces pour bien gérer SQL Server pour SharePoint, ou encore un focus sur l’Agilité et son impact sur les bases de données
    • Côté BI on a MARCO RUSSO !!!!! Est-ce que j’ai besoin d’en dire plus ? Bon ok : du SSAS et du SSIS côté perfectionnement, et côté usages et outils, une matinée Big Data et une après-midi BI Agile. Je vais revenir sur la BI Agile parce que je fais partie de la track, mais honnêtement ça me fait rêver : TDD, Tests automatiques, BIML… On s’équipe enfin côté BI !

Ajoutez à ça des tables rondes sur la gestion de carrière, sur l’agilité, et surtout avec les Girls in Tech, ça va bien le faire.

Et puis niveau sponsor on a du lourd cette année, ils seront tous présents dans la zone d’exposition, donc que vous cherchiez un prestataire ou un futur employeur, vous êtes obligé de trouver !

Comme d’habitude les inscriptions sont gratuites, ce sera les lundi 2 et mardi 3 décembre, dans le centre de conférence de Microsoft à Issy-Les-Moulineaux (Paris), alors venez – et faîtes passer le mot 😉

Journées SQL Server 2013

Commencer la gestion de projet en décisionnel

Je profite d’avoir rédigé cette petite liste pour un consultant de mon équipe pour la publier ici. Rien de mystique, juste une liste de lecture pour se lancer dans la gestion de projet en décisionnel.

La base, c’est évidement de Joel Spolsky sur son blog Joel On Software :

Puis pour s’y mettre pour de vrai :

  • En mode pratique, c’est évidemment Kimball et Ross avec The Datawarehouse Lifecycle Toolkit (2nd edition – à ne pas confondre avec le DWH Toolkit). Non seulement ils sont forts en modélisation, mais ils font aussi la gestion du projet décisionnel. Malheureusement non traduit en français. Notez pour ceux qui l’ont qu’on peut trouver un avant-gout sur le sujet dans le Datawarehouse Toolkit (3rd edition).
  • En mode théorique, c’est Scott Berkun avec Making Things Happen, il définit bien l’idéologie du chef de projet orienté facilitateur. Mais c’est déjà plutôt du niveau 2. Le niveau 3 étant le Mythical Man-Month de Brooks.

En terme d’approche, le Kimball Group est plutôt orienté itératif, et les théoriciens sont plus classiques (V, waterfall). Si vous voulez creuser le côté Agile appliqué au décisionnel, je vous renvoie aux articles que j’avais écrit tantôt.

Et voilà, avec les bons outils, rien d’impossible !

Avec les bons outils...

N’hésitez pas si vous en avez d’autres (des bonnes ressources pour débuter, pas de gifs hein…) 😉

BI.Quality : tests automatisés pour comparer des données entre SSAS et SQL Server

Comme je vous le disais tantôt, l’amélioration continue des équipes et des solutions passent par une automatisation des activités qui peuvent l’être. Ce n’est pas moi qui l’invente, c’est à la base de l’Agilité et du Lean. Notez que ce n’est pas une fin en soi, mais plutôt dans l’objectif de tendre vers un temps de production le plus court possible, toujours en qualité optimale.

Et une des principales manières d’avancer sur sujet c’est bien par l’automatisation des tests. C’est la raison pour laquelle je teste depuis peu BI.Quality, l’outil de test automatique gratuit développé par ORAYLIS et disponible sur le CodePlex.

BI.Quality

Ce qui est particulièrement intéressant avec cet outil c’est la possibilité de comparer des datasets en provenance de SSAS, de SQL Server, ou d’un fichier CSV. Vous comprenez l’intérêt immédiatement : avec ça on va pouvoir comparer de manière automatique son cube (via requêtes MDX) avec son DWH et/ou son ODS (via requêtes SQL). On pourra également comparer le résultat d’une même requête contre plusieurs environnements (production, intégration, développement…) pour valider que tout est bien synchro une fois la livraison terminée.

Joie !

Alors ok, l’interface ne fait pas rêver, et quasiment toute la « programmation » se fait dans des fichiers XML, donc à la main dans NotePad++. Mais la fonction rendue est tellement excellente qu’on apprend à vivre avec.

NUnit_1

Je vous fais un guide de démarrage rapide, vous allez voir c’est assez simple :

  1. Télécharger et installer NotePad++, si ce n’est pas déjà fait !
  2. Télécharger et installer NUnit (framework de test, c’est lui qui exécutera les tests créés dans BI.Quality), la version courante c’est la NUnit-2.6.2.msi
  3. Télécharger et installer BI.Quality (pas de panique, il termine sans prévenir, c’est un peu artisanal)
  4. Télécharger et lire la documentation :p
  5. Suite à ça, on dispose dans le menu démarrer :
    1. D’un répertoire BI.Quality, qui contient principalement un ZIP contenant la solution template, qui sera le modèle de départ pour tous les projets de tests. A dézipper là où vous le souhaitez pour chaque nouveau projet.
    2. D’un répertoire NUnit, qu’il va falloir associer avec votre projet de test (le répertoire dézippé), dans NUnit : File> Open Project > …\Lib\BI.Quality.dll

Une solution de test BI.Quality c’est donc un dossier composé de 4 sous-répertoires (le contenu du ZIP) :

  • \Bin\ et \Lib\ : on ne touche pas
  • \Connections\ : on va définir nos connexions là-dedans, un fichier XML correspondant à une connexion. On ne peut y utiliser que des belles chaînes de connexions OLE DB (SSAS, SQL Server < 2008R2, SQL Server 2012, à tester sur Excel, Access et SharePoint) :

BI.Quality_Connections

  • \Queries\ : on va définir nos tests là-dedans, un sous-répertoire correspondant à un test, avec :
    • des fichiers SQL, MDX ou CSV qui définissent les requêtes à utiliser dans le test
    • un fichier XML qui définit le test en lui-même

BI.Quality_Query

Franchement c’est pas sauvage non ? Je définis 2 sets de données, les <Query/>, que je compare dans un test <AssertTable/>.

Alors il existe plein de tests possibles, avec plein d’options, à voir dans le PDF de documentation ainsi que dans l’ensemble de tests livrés dans le template (1-Tutorial, 2-TechnicalTests, 3-BestPractices) que vous pouvez d’ailleurs enlever de votre projet si vous voulez avoir une solution bien propre.

Une fois que c’est fait, on retourne dans NUnit (on charge le projet si ce n’est pas déjà fait : File> Open Project > …\Lib\BI.Quality.dll), et on peut exécuter ses tests d’un simple RUN :

NUnit_2

Si la partie « Configuration Test » est gérée toute seule, NUnit va parser les XMLs de définition des connexions et des tests pour valider leur format, la partie « Query Test » est bien celle pilotée par vos tests du répertoires \Queries\ . Notez que si vous ne passez pas le « Configuration Test », c’est que vos XMLs sont mal montés : direction NotePad++ pour corriger tout ça. Si tout va bien, c’est parti pour vos tests à vous 🙂

Juste une petite remarque en passant : je n’ai définitivement pas réussi à ajouter un Delta sur un AssertTable, n’hésitez donc pas à faire plutôt des ROUNDs dans vos requêtes SQL ou MDX, si par exemple vous changez de précision entre les 2 sources. [MàJ 2013-08-19] En fait il est possible de définir un Delta dans un AssertTable, mais en utilisant une virgule plutôt qu’un point dans la valeur: delta=« 0,1%« . Trop bien 🙂

Et une deuxième petite remarque : pensez bien à recharger vos tests si vous les modifiez (File> Reload Project ou Reload Test) sinon ce ne sera pas pris en compte par NUnit.

D’un point de vue stratégie de tests, je suis partie sur les éléments suivants :

  • D’abord des agrégations de haut niveau (mon CA par an sur les 5 grands pôles d’activité), qui valident que le total général est le même partout
  • Des tests sur chaque dimension, indépendamment des faits, pour valider qu’on n’oublie personne en route et que les hiérarchies tiennent la route
  • Des tests portant sur les valeurs des mesures clefs pour chaque code atomique de chaque dimension (autant de tests que de dimensions). On a vérifié les hiérarchies dans l’étape précédente, il suffit donc de valider que chaque code dispose des bons montants unitairement pour chaque dimension pour valider quasiment tout
  • Des scénarios de référence (SQL/MDX vs valeurs en dur dans des CSV). Si les valeurs historiques (2009,2010…) n’évoluent plus, on peut se faire quelques extraits, les stocker en CSV, et les comparer régulièrement contre le cube ou le DWH. Histoire de prendre en flagrant délit la régression sur l’historique
  • Les requêtes des rapports SSRS, qu’on peut valider contre des valeurs de références ou entre plusieurs environnements
  • Enfin, toutes les requêtes issues des analyses d’anomalie, écrites pour renvoyer du vide si tout va bien

Si on maintient bien à jour sa base de tests, et qu’on exécute le projet régulièrement, il va devenir vraiment difficile de livrer du code défectueux !

Je conclue en vous livrant l’avis de Chris Webb sur l’outil, et en vous recommandant chaudement de l’essayer sur votre prochain projet ou prochaine recette. C’est simpliste, certes, mais ça fait le job, et pouvoir tous les jours exécuter toute sa batterie de test en 1 clic c’est juste magique ! Seul petit bémol: la dernière mise à jour du projet date de fin 2010, le dernier commentaire des admins de fin 2012… Alors allez le télécharger, histoire de bien montrer qu’on a besoin d’eux 😉

Le retour des spécifications dans un projet décisionnel lean

Au risque de me faire encore conspuer par nos camarades agilistes militants, je vais vous raconter comment j’ai contribué à la sortie d’un des projets auxquels je participe du mode Agile/Lean. Car oui, je l’avoue, j’ai fait du lobbying pour le retour du cycle en V…

Tout commence par un projet de migration Cognos vers SQL Server, avec une petite équipe de développeurs experts et un client qui fait confiance. Aucun frein à la productivité, les résultats sont immédiats et visibles à travers les premiers états livrés après seulement quelques semaines de travail. Point de vue gestion de projet, l’équipe fonctionne alors en mode cowboy, juste quelques todo lists priorisées, une réunion de suivi hebdomadaire, et tout le monde est bien content.

Les choses s’accélèrent, la migration avance à bon rythme, et le succès rencontré par la production des premiers rapports déclenche la demande de nouveaux rapports. Le client trouve sa place en tant qu’évangéliste de la solution, il identifie des utilisateurs potentiels, vend sa solution en interne et génère encore plus de besoins.

On avance de 6 mois, et… la migration n’est toujours pas terminée. En effet la recette des rapports est décalée en permanence car chaque revue déclenche une flopée d’évolutions. Les nouvelles demandes s’entassent et parfois même disparaissent puisqu’elles ne sont pas suivie d’une manière centralisée (pas de réel backlog) et que la priorité est attribuée aux derniers utilisateurs venus se plaindre dans l’open-space. Il n’y a ni planning, ni suivi du consommé, ni documentation, et même l’architecture technique commence à en souffrir (effet de bord d’une autre décision qui n’est pas le sujet du jour).

Le problème est identifié et c’est à ce moment-là que je rentre en scène. Ma mission est évidemment de remettre de l’ordre dans tout ça. Je reprends donc la longue liste des demandes, je clarifie les items, génère un backlog unique et accroche au mur un beau Kanban tout neuf.

 Dilbert - Méthodes Agiles

Pourquoi un Kanban ?

  • L’équipe fonctionne en livraison continue, sans itération, point positif à conserver
  • On lui reproche un manque de visibilité sur son activité en cours, il faut y remédier
  • Les priorités changent tous les 2 jours, il faut pouvoir s’adapter
  • L’équipe travaille sur trop de sujets à la fois, il faut rationnaliser

On est donc dans le cadre d’application idéal pour cette technique.

Et hasard des réorganisations, c’est justement le moment où un des utilisateurs principaux de la solution, directement en provenance du métier, passe officiellement business owner à temps plein.

S’en suivent 2 mois plutôt positifs, où une fois les process mis en place, le business owner et les utilisateurs constatent une amélioration du delivery en terme de rythme, de réactivité et de visibilité sur l’activité (par ce que oui, un développeur qui ne fait pas de réunion et qui n’envoie pas de mail c’est bien un développeur qui travaille, et pas le contraire). Le reproche éternel de la capacité à s’engager sur des dates est évidemment toujours dans l’air, mais on atteint une visibilité à 3/4 semaines qui à mon sens est la seule période vraiment réaliste.

Et là, c’est le drame…

Devant le regain de productivité de l’équipe, les demandes explosent à nouveau. Les développeurs reçoivent plus de 5 mails par jour des utilisateurs, avec ou sans le business owner en copie. Les règles de gestion évoluent sans cesse, les couleurs dans les rapports aussi, les sources de données changent considérablement, et la mauvaise habitude de donner la priorité au dernier qui a parlé réapparaît. A nouveau l’équipe s’enlise et la satisfaction des utilisateurs sombre.

Pour moi le problème est clair : l’équipe est en sous-capacité. Si nous étions capables de dépiler plus vite les tickets, nous arriverions à retrouver un flux optimal. Mais dans notre cas, même avec l’ajout d’un développeur, la situation persiste. Le delta entre besoin et capacité de production est vraiment trop important. Pas possible d’ajouter plus de ressources, d’un point de vue budget et praticité, nous sommes au maximum.

 Dilbert - Product Owner vs Développeur

Alors j’ai pratiqué ce que je prêche, et j’ai demandé au business owner, qu’on considérera désormais comme un chef de projet MOA, de commencer à écrire des spécifications fonctionnelles. Chaque demande d’évolution doit mettre à jour la spécification correspondante, chaque nouveau besoin doit être pensé et écrit dans le dur.

Mon objectif est clairement d’introduire une contrainte au niveau métier, pour stabiliser la génération des besoins (le rythme est sincèrement démesuré) et ainsi faire basculer au niveau MOA le goulet d’étranglement du flux.

Car à être trop disponible et réactive, l’équipe de développement était devenue une extension du cerveau du business owner, et de certains utilisateurs trop exigeants. Chacune de leurs pensées à demi digérée était rapidement écrite dans un mail et transmise en priorité 1, trop souvent en totale contradiction avec l’info précédante. J’espère que le fait d’avoir à se poser pour penser et écrire concentrera leurs idées et diminuera les changements d’avis. Le travail de réconciliation et d’harmonisation fonctionnelle doit définitivement être réalisé par le business owner, pardon, le chef de projet MOA.

Evidemment c’est une étape temporaire, une astuce qui donnera également à l’équipe le temps de souffler un peu et traiter les vraies priorités. Je compte bien retourner à nouveau dans un mode plus lean une fois l’orage passé. Et je provoque en parlant du retour du cycle en V, puisqu’on conserve bien la livraison continue et le fonctionnement en mode pull. J’impose juste une contrainte de documentation plus lourde côté utilisateur avant d’accepter les activités dans le backlog.

On en reparle dans quelques mois, pour voir si l’expérience porte ses fruits !

PS : Evidemment toute cette histoire se vit dans un contexte d’entreprise plus global, sur fond de guerre politique entre services, de rachat de sociétés et d’avancement de carrière des internes, qui expliquent beaucoup plus mais que je ne peux évidemment pas raconter ici 😉

Afterwork Communauté SQL Server – Agilité décisionnelle

Le GUSS, Groupe des Utilisateurs SQL Server, organise un afterwork le 17 avril à 19h00 dans le 15ème à Paris.

Ce sera l’occasion de discuter de manière informelle sur les méthodes de gestions de projet et la philosophie agile, et l’outillage (ou absence d’outillage) qui va avec dans le monde SQL Server et Microsoft (tant côté ALM qu’outils de dév).

Ou juste boire une bière 😉

17 avril – 19h00
Charly-Birdy
1 place Etienne Pernet, Paris 15ème
Métro Commerce

Retour sur une partie de Kanbanzine, le jeu de découverte du Kanban

Hier soir, jeudi, j’étais chez Octo Technology pour assister à une partie de Kanbanzine.

Mon premier, Octo Technology, est un cabinet de conseil en IT à l’investissement fort dans les écosystèmes du développement et de la gestion de projet. Je leur tire d’ailleurs mon chapeau pour tout ce qui concerne le marketing. Je suis impressionné à la fois sur la qualité des messages et la qualité du design de leurs communications, c’est un bon exemple à suivre pour tous.

Mon second, Kanbanzine, est un jeu de société édité par l’association Métis émergence, dont l’objectif est la diffusion du Kanban en France. Pour faire très court, le Kanban c’est une méthode de gestion de projet appartenant à la mouvance Lean. Ses principaux attributs sont de représenter les tâches et le flux de production de manière visuelle (avec un board et des post-its), de limiter le travail en cours (WIP, « work in progress ») et de fonctionner en pull – plutôt que de pousser les tâches sur un planning, on les tire à l’instant t selon les besoins en cours.

Mon petit Kanban à moi!

Mon petit Kanban à moi! Oui, le « Done » est un peu vide…

Comme vous le savez, j’apprécie beaucoup la philosophie sous-jacente au lean, comme celle de l’agilité par ailleurs, et j’essaye de m’y exposer au maximum à travers plusieurs auteurs et ouvrages dont je vous parle de temps en temps.

Le dernier en date était d’ailleurs Personal Kanban, un bouquin décrivant l’application de ces méthodes à l’organisation personnelle. Vous comprendrez donc que je ne pouvais pas rater cette soirée de découverte du Kanban complet, surtout organisée autour d’un jeu de plateau.

Twilight Imperium

TWI : Un jeu de plateau pour gérer un projet, ou un projet pour gérer un jeu de plateau?

Après une rapide présentation de l’événement par l’organisateur, Cyrille Deruel, puis de l’association et du jeu par Alexis Nicolas et David Littel, nous voilà partis pour une partie de 3h (oui, on est passionné ou on ne l’est pas !). D’ailleurs au-delà de l’apprentissage du Kanban, Kanbanzine est également présenté comme un support de team-building, et plus globalement de découverte de ses équipes et de ses collaborateurs.

Je ne vais pas faire le compte-rendu détaillé de la partie, je vais plutôt vous faire directement mes retours :

  • Points positifs
    • C’est définitivement ludique
    • Le jeu est collaboratif, il est organisé autour d’un facilitateur, sorte de maître du jeu ou chef d’orchestre. Si ce dernier fait bien son job, c’est rythmé et sans temps morts
    • On est exposé aux éléments de base du Kanban de manière assez transparente
    • Le contexte (édition d’un magazine) n’est pas orienté autour du développement logiciel, on peut donc inviter des fonctionnels sans les effrayer
    • Le jeu propose des scénarios qui simulent des incidents, des situations réelles que l’on rencontre souvent dans la vraie vie et pour lesquels on apprend à réagir en adaptant la gestion de projet
    • Il y a suffisamment d’aléatoire pour rendre la partie intéressante, sans non plus risquer de tout perdre sur un jet de dés malheureux
  • Points négatifs
    • Pendant de l’aspect ludique et de la transparence de l’apprentissage : si le facilitateur ne met pas avant les mécaniques du Kanban aux bons moments, on risque de complétement rater le côté apprentissage
    • Si on arrive à comprendre l’intérêt de l’aspect visuel, du flux et du pull par le simple fait de jouer au jeu, on subit la limite du WIP sans comprendre l’intérêt positif de cette contrainte

Globalement je suis donc satisfait de l’expérience, et je trouve que le jeu répond bien à ses objectifs de team building et de découverte du Kanban. Par contre, vous l’aurez compris, ce n’est pas un outil d’apprentissage du Kanban ni de découverte de la philosophie du Lean à proprement parler.

Kanbanzine chez Octo

Un moment douloureux : annonce de la dernière décision de Philippe…

Merci beaucoup aux organisateurs, j’ai passé une soirée amusante en compagnie de gens sympathiques et pointus sur le Lean, l’Agilité et le 6 Sigma.

De mon côté j’ai noté qu’il fallait que je me renseigne sur David Anderson et l’autre jeu de découverte du Kanban. Et maintenant que par ici on maîtrise le décisionnel agile, voir comment on peut intégrer ces nouvelles méthodes d’organisation dans nos projets. On en reparle plus tard 🙂