Revue : Peopleware (3rd Edition) par Tom DeMarco et Timothy Lister

Couverture Peopleware 3rd editionPeopleware, Productive Projects and Teams (3rd Edition) – (Amazon.fr) par Tom DeMarco (Wikipedia) et Timothy Lister (Wikipedia)

Je continue dans la série des revues pour vous parler d’une référence dans le domaine du management d’équipe et de projet : il s’agit bien entendu de Peopleware. Ecrits par 2 consultants légendaires en gestion de projets et organisation d’équipes, c’est un condensé de ce qu’il faut faire pour motiver sa troupe et réussir ses projets informatiques.

Je vais faire court : si vous êtes ou voulez devenir manager IT, quel que soit le domaine, c’est un incontournable. Dedans une grosse dose de bon sens délivrée en courts chapitres de quelques pages, un vrai plaisir à lire. Ça parle RH, vie de bureaux, relations interpersonnelles, construction d’équipe, mise en place d’organisations inscrites dans des cercles vertueux…

Morceaux choisis :

  • Il faut arrêter de croire que nos métiers sont centrés autour des technologies. Les chercheurs qui font les découvertes fondamentales de nos domaines sont ceux qui travaillent effectivement sur les technologies. Nous, nous ne sommes que les utilisateurs des technologies qu’eux développent. Et à ce titre nos métiers sont donc plus centrés autour des relations humaines qu’autre chose. (p5 )
  • Les statistiques sur la lecture sont particulièrement décourageantes. Le développeur moyen ne possède aucun livre sur son domaine d’expertise, et n’en a même jamais lu un. (p11, Vous en êtes où du DWH Toolkit? ;))
  • La qualité, bien au-delà d’un simple prérequis de l’utilisateur, est une mesure de haute productivité. (p21, cf le Lean)
  • La fonction d’un manager n’est pas de faire que les gens travaillent, mais de faire qu’il soit possible qu’ils travaillent. (p34, on ne doit pas motiver, mais plutôt limiter la démotivation…)
  • Loi de Gilb : tout ce qui doit être quantifié peut être mesuré d’une manière qui est meilleure que de ne pas le mesurer du tout. (p58, on parle qualité, satisfaction… à prendre en compte dans les ROI et décisions stratégiques en plus du numéraire)
  • Par exemple : le « E-Factor » = Nb heure de travail ininterrompu / Nb heure de présence physique. (p64, à utiliser pour vérifier qu’un environnement n’est pas trop toxique au travail)
  • L’effet pervers d’un taux de turnover élevé (cycle des démissions/recrutements) et qu’il s’auto-entretient. Les collaborateurs partent vite donc il n’y a pas d’intérêt pour l’entreprise à investir sur eux. Mais s’il n’y a pas d’investissement, les collaborateurs démissionnent rapidement. (p120)
  • Le but de la constitution d’une équipe n’est pas d’atteindre un objectif, mais de définir et travailler vers un objectif commun. (p136)
  • La short-liste des techniques pour détruire une équipe : management défensif, bureaucratie, séparation physique, fragmentation du temps de travail sur des projets multiples, réduction de la qualité du produit, fausses deadlines, micro-management. (p144, avec du détail sur chacun des points)
  • La liste étendue des techniques pour détruire une équipe : primes annuelles sur objectifs, management par objectif, récompenses individuelles, et plus globalement tout ce qui tourne autour de la mesure et la gratification des performances. (p157, toujours avec le détail sur place)
  • A l’inverse, la liste des activités qui contribuent à l’équipe: faire de la qualité un culte, permettre à tous de comprendre le pourquoi de chaque décision, construire un sens de l’élitisme, encourager l’hétérogénéité, préserver et protéger les équipes qui gagnent, apporter une vision stratégique mais laisser le champ libre au niveau tactique (p168, toujours avec le détail sur place)
  • Les bonnes méthodes pour atteindre une convergence sur les pratiques sont : les formations, les outils d’automatisation, les revues par ses pairs. (p180)
  • Le péché ultime du management c’est de faire perdre son temps à quelqu’un. (p193)
  • Le changement ne peut se produire que si les collaborateurs se sentent en sécurité. (p208)
  • Une organisation peut apprendre de 2 façons : elle instille des nouvelles compétences et approches à ses membres, ou elle se redessine pour opérer d’une manière différente. (p212)
  • Dans tous les cas, la maturation d’une organisation est limitée par sa capacité à conserver ses membres. (p212)

Je recommande chaudement !

Peopleware, Productive Projects and Teams (3rd Edition) – (Amazon.fr)

4 liens rapides pour la semaine (2012-28)

J’enchaine 🙂

  1. Un très bon article de Vanity Fair sur la culture d’entreprise qui a fait perdre ses 10 ans d’avance technologique à Microsoft. A illuster avec ces graphiques d’Asymco.
  2. Une excellente idée d’un des derniers prix Nobel d’économie : mettre les banquiers en prison! Judicieux quand on voit ce que donne le pouvoir sans responsabilité.
  3. Une petite citation rapide de Steve Jobs. Ça fait pas de mal.
  4. Un article intéressant de DHH (corrigé @14h19) de 37 Signals. Il parle des niveaux d’inspiration lorsqu’on travaille sur une solution technique. Son message: il faut que tous les acteurs autour de la table soient au même niveau d’attente, qu’ils aspirent tous au même résultat, pour que le tout fonctionne. Je reprends son dessin ci-dessous:

C’est définitivement un axe d’analyse intéressant pour classer ses différentes équipes projet, autant en terme de compétence (le niveau maximal qu’elles sont capables d’atteindre) que d’investissement à l’instant t (le niveau auquel elles opèrent sur chacun de leurs projets en cours)!

______________________

<< Semaine Précédente – Semaine Suivante >>

The Mythical Man-Month – Frederick P. Brooks, Jr.

J’ai profité de mes dernières vacances pour lire « The Mythical Man-Month » (Amazon) de Frederick P. Brooks, Jr. (un des ténors du génie logiciel).

C’est LE livre qui apparaît systématiquement dans les tops 10 des livres à lire pour les ingénieurs logiciels, chefs de projet, développeurs ou encore manageurs de développeurs.

Même si l’édition originale date de 1975, et l’édition anniversaire de 1995, la plupart du contenu reste entièrement d’actualité, puisqu’il s’agit principalement de bon sens. Enfin surement qu’à l’époque beaucoup des choses qu’il raconte étaient nouvelles. Aujourd’hui elles font partie – ou devraient faire partie – de la culture de base de l’informaticien au sens large

Je vous livre quelques idées du bouquin histoire de bien cerner l’ouvrage :

  • (p5,6) On peut étendre un programme en travaillant sur son industrialisation (généralisation, documentation, tests, maintenance…) ou sur son intégration (interfaçages à d’autres systèmes, intégration dans l’écosystème de l’IT), mais pas les 2 en même temps.
  • (p16-19) Ajouter des développeurs à un projet en retard le retardera encore plus, aussi connu sous « 9 femmes enceintes ne font pas un bébé en un mois ».
  • (p32-36) Il propose une méthode d’organisation pour les très gros projets : mettre en place N équipes de 10 personnes chacune centrées autour d’un lead programmer (le chirurgien, un mec ultra talentueux), son copilote (le même en un peu plus junior, qui apprend et vérifie), les 2 seuls à développer et une équipe de support.
  • (p45,46) Définition de l’architecte (il le sous-entend fonctionnel – la MOA quoi) : qui représente l’intérêt de l’utilisateur, qui doit indiquer quel est le résultat attendu mais pas comment cela doit être fait. Par opposition au constructeur (la MOE), qui lui prend en compte les contraintes et le ratio coût/performance, et conçoit  la solution. Ce qui amène un cycle de développement : Architecture (MOA – On définit la fonction d’une boîte noire) > Implémentation (MOE –  On établit le contenu de la boîte) > Réalisation (MOE – On fabrique la boîte). Ne vous offusquez pas sur son choix de vocabulaire, qui diffère de ce qu’on a l’habitude d’employer en France, l’important c’est le découpage des tâches et des responsabilités.
  • (p62) Les spécifications sont le manuel utilisateur.
  • (p116) Le mieux est de toujours commencer par un prototype, jetable ci-besoin, plutôt que de vouloir y arriver du premier coup, puisque la plupart du temps on recommencera plusieurs fois du début.
  • (p117) Tous les besoins utilisateurs ne doivent pas être pris en compte dans le design. Et plus on avance dans le projet, plus c’est vrai.
  • (p142) Il faut tester les spécifications : faire des maquettes, tester les règles de gestion, avant même de commencer le développement.
  • (p143) Le mieux est de faire des programmes modulaires, afin d’augmenter la capacité d’adaptation du système (En 1975 manifestement ce n’était pas évident ;)).
  • (p155) Les jalons sur le planning doivent être clairement identifiés (périmètre et date), afin de ne pas pouvoir se mentir à soi-même par rapport à l’avancement.
  • (p157) Un directeur de projet ne doit pas intervenir dès le premier retard d’un de ses chefs de projet, sans quoi ils arrêteront de rapporter les glissements pour fuir le micromanagement.
  • (p201) Le développement itératif c’est le top (En 1975 ! C’était révolutionnaire !)

Évidemment il y a plein d’autres choses très intéressantes, et à chaque fois il développe et justifie ses idées, mais pour moi le top est dans cette liste.

Vous faut-il le lire ?  Je dirais oui si :

  • Vous vous devez d’avoir de la crédibilité en tant que bloggeur qui ramène sa fraise sur la gestion de projet (mon cas ;)).
  • Vous êtes ou aspirez à devenir chef de projet et que vous voulez comprendre le pourquoi de ce que vous appliquez.

Dans le cas contraire, votre bon sens, l’expérience personnelle et suivre la « BI ça vous gagne » suffiront largement à faire votre culture 🙂

4 liens rapides pour la semaine (2012-05)

Je triche et j’en rajoute 2 pour rattraper la semaine dernière 😉

  1. Kevin Meyer d’Evolving Excellence sur Apple et sa chaîne de production. C’est très intéressant de voir le problème du côté des experts du Lean, ça remet les choses en perspectives.
  2. Via Marco Arment, une excellente réponse de Michael Wolfe à pourquoi les estimations et plannings de développement sont toujours à la ramasse.
  3. Mike Masnick de Techdirt sur les problèmes de corruption du gouvernement américain à travers le lobbying.
  4. Derek Edwards sur son blog Progressive Transit qui démontre que ce sont les voitures qui tuent les villes.
  5. Patrick McKenzie de Kalzumeus avec un très bon article sur la négociation salariale. A lire avant vos prochains entretiens!
  6. Enfin, Colin Percival qui repart de l’incident cat.jpg chez 37 Signals pour nous donner un excellent conseil sur comment designer ses systèmes. J’en reparlerai surement plus tard.

______________________

<< Semaine PrécédenteSemaine Suivante >>

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.