Atelier Management : Comprendre la complexité de l’expression du besoin (Lego Game)

Lego - 6177

Préambule

Dans la réalisation d’un projet, notamment informatique, plusieurs acteurs se rejoignent pour travailler ensemble. La communication n’est pas toujours évidente et simple, surtout s’ils arrivent tous avec une expérience et des méthodes différentes. La présentation par le jeu peut permettre de mettre en lumière ces différences et de montrer que des schémas d’organisation ou de méthodologies, apportés par chaque acteur, peut améliorer considérablement la communication dans l’équipe.

Objectifs

L’objectif de cet atelier est de présenter comment l’expression du besoin, notamment dans le développement logiciel, est complexe lorsqu’utilisateurs, chefs de projets et production ont une vision différente des concepts. Même lorsque le produit final est simple à construire. Mais l’objectif est surtout de montrer que des schémas d’amélioration sont possibles à tous les niveaux.

Pourquoi l’essayer avec vos équipes

Platon disait : « On peut en savoir plus sur quelqu’un en une heure de jeu qu’en une année de conversation. ». Cet atelier est un bon moyen pour vos équipes d’apprendre à se connaitre et surtout d’apprendre à fonctionner ensemble. Elles constateront, que même avec des méthodes différentes, il est possible d’arriver à des résultats probants.

Durée

Cet atelier nécessite entre 1h et 1h30.

Matériel

  • Une table par groupe de 3 personnes. Prévoir des nombres de tables de préférence.
  • Une boite de Lego de 600 à 700 pièces environ. Idéalement les boites 6177 ou 5508 que l’on peut trouver pour moins de 50 euros.

Lego - 5508

Démarrage

L’atelier est construit sur 3 exercices.

Exercice 1 : Construction d’une tour Lego

L’objectif de cet exercice est surtout de désinhiber les joueurs des Lego en leur laissant le temps les manipuler et appréhender les différents types de pièces, couleurs, et nombres.

Objectif

  • Construire une tour stable (elle ne doit pas s’écrouler si l’on secoue légèrement la table), la plus haute possible, avec 25 pièces.
  • Durée : 10 minutes maximum.

Déroulement

  • Dans un premier temps, vous allez voir les joueurs construire un socle, puis leur tour.
  • Ils vont ensuite s’apercevoir que celle-ci est très rapidement réalisée et que le socle n’est pas nécessaire.
  • La majorité va comprendre également que la tour ne peut qu’avoir une hauteur maximum du nombre de pièces qu’ils empilent.
  • Et certains vont d’ailleurs le comprendre plus vite que d’autres et souhaiteront expérimenter d’autres alternatives avec plus ou moins de succès.

Débriefing

  • Demandez aux joueurs leurs impressions sur ce premier exercice.
  • Attardez-vous sur les joueurs ayant souhaité explorer des alternatives différents.
  • Les joueurs devraient maintenant être décomplés des Lego. Vous pouvez attaquer l’exercice suivant.

Exercice 2 : Création d’un robot dos à dos

L’objectif est de montrer que le passage d’ordre par la parole pour la construction d’éléments n’est pas chose aisée et qu’elle nécessite vite une organisation.

Objectif

  • Construire un robot simple (choisir entre les robots S1, S2 ou S3 du powerpoint fourni).
  • Les couleurs, les pièces et l’empilement doivent être fidèles à la photo fournie.
  • Durée : 10 minutes

Robot Lego Simple

Démarrage

  • Placer 2 joueurs assis dos à dos. L’un sera en charge de l’explication de la description, l’autre de la construction du robot.
  • Ils ont instruction de ne pas se regarder.
  • Fournir une photo d’un robot simple, face cachée à celui qui va le décrire et qui ne touchera pas les Lego.
  • Au top, lancez le chrono, chaque joueur retourne sa photo, la partie commence.

Déroulement

  • En fonction des personnalités, certains commenceront par le haut ou le bas du robot. Par sélectionner les pièces ou non.
  • Ils feront ensuite un check étape par étape et/ou également à la fin pour s’assurer que le robot construit est conforme à la description.
  • Si une équipe indique avoir terminé, faites la vérification sans que ni l’un ni l’autre ne voit le résultat ou la photo. Si le résultat n’est pas conforme, dites leur de poursuivre.

Débriefing

  • Demandez aux joueurs leurs impressions sur cet exercice.
  • Déroulez les différents process mis en place, au démarrage, lors de la construction lors de la vérification finale du robot. → Méthodes d’organisation.
  • Mettez en évidence les méthodes différentes mises en place qui permettent d’aboutir malgré tout à un résultat → Organisations différentes, résultats identiques.
  • Mettez également en évidence les manques qui ont pu aboutir à un résultat différent de celui décrit → Manque dans les process, dans la rigueur de la réalisation.
  • Montrez les types d’erreurs qui ont pu être commis lors de la validation (couleurs, formes, emboîtements…) → A mettre en corrélation avec les erreurs qui peuvent être commises par vos équipes et l’impact que cela peut avoir sur le résultat.
  • Enfin faites la corrélation complète avec votre organisation, vos méthodes de travail et les étapes à renforcer sur l’existant.

Exercice 3 : Création d’un robot avec un intermédiaire

L’objectif est de montrer qu’avec des méthodes, même avec un intermédiaire, il est possible de réaliser des éléments complexes.

Objectif

  • Construire un robot complexe (choisir entre les robots C1 à C5 du powerpoint fourni).
  • Les couleurs, les pièces et l’empilement doivent être fidèles à la photo fournie.
  • Durée : 10 minutes

Robot Lego Complexe

Démarrage

  • Faire des équipes de 3 à 4 joueurs. Un joueur sera le client, un deuxième l’intermédiaire, le troisième sera le producteur. Pour les équipes de 4 personnes, laisser décider l’équipe sur le rôle du quatrième.
  • Le client va construire seul une première fois le robot et s’assurer que les pièces nécessaires à sa construction sont disponibles dans le tas de pièces utilisé par le producteur.
  • Ensuite le client va s’éloigner de quelques mètres, pour ne pas être en mesure de voir le robot construit. Il va devoir décrire le robot sans jamais le montrer à l’intermédiaire.
  • L’intermédiaire va réaliser le passage d’information entre le client et le producteur. Il ne peut ni voir le robot, ni toucher les Lego.
  • Le producteur va lui construire le robot, uniquement sur les ordres de l’intermédiaire.

Déroulement

Chaque acteur devrait appliquer les méthodes vues lors du second exercice.

Certains, notamment les producteurs, devraient même aller plus loin en préparant les Lego triés par type ou couleur.

Si une équipe indique avoir terminé, faites la vérification sans que ni l’un ni l’autre ne voit le résultat ou la photo. Si le résultat n’est pas conforme, dites leur de poursuivre.

Débriefing

  • Demandez aux joueurs leurs impressions sur cet exercice.
  • Déroulez les différents process mis en place, au démarrage, lors de la construction lors de la vérification finale du robot. → Méthodes d’organisation.
  • Montrez que les méthodes acquises et les erreurs commises lors de l’exercice 2 ont été appliquées ou corrigées permettant d’améliorer l’organisation, la communication et la production → Amélioration continue dans l’organisation, la communication et la production.
  • Mettez encore en évidence les manques qui ont pu aboutir à un résultat différent de celui décrit → Manque dans les process, dans la rigueur de la réalisation.
  • Enfin faites la corrélation complète avec votre organisation, vos méthodes de travail et les étapes à renforcer sur l’existant.

Notes

  • Les exercices seront plus pertinents avec les membres d’une même équipe, et notamment avec des personnes ayant des rôles différents sur les projets (conception fonctionnelle, technique, réalisation, recette, gestion de projets).
  • Fichier powerpoint contenant les robots : Scrum – Lego – Cynefin v0.5
  • Si vous souhaitez de l’aide dans la réalisation de cet atelier ou si vous souhaitez que je réalise cet atelier avec vos équipes, n’hésitez pas à me contacter.
Publicités

Dématérialisez !

L’heure du tout numérique est arrivée !

Les utilisateurs d’Internet, presque 30 millions en France, sont habitués à gérer des fichiers numériques, que ce soit de simples documents, des photos ou des vidéos. Ceux-ci gèrent leur recherche d’informations, achètent, vendent, louent, réservent, payent.

Les entreprise en avance

Les entreprises, elles, fonctionnent maintenant surtout avec Internet, elles communiquent avec les emails, les calendriers, les pièces jointes et la téléphonie IP en interne et avec leur site Web en externe. Bien souvent, même si ceci se caractérise principalement chez les plus grosses d’entre elles ou les plus baignées dans le contexte d’Internet, elles ont déjà commencé à dématérialiser. Les recherches de postes, la gestion des congés, les achats de transport, les conférences, les formations, la gestion des heures facturées… Certaines ont même déjà dématérialisé les salaires, factures et/ou contrats.

L’état fait bonne figure

L’état lui-même, bien souvent en retard dans les grandes transitions, s’est mis à l’heure du numérique. Car en effet, il y a vu tout son intérêt. Une disponibilité 24/7 de l’information et du service, une baisse des besoins en personnel, une plus grande rapidité de gestion et une baisse des coûts non négligeable. Ainsi tout un chacun peut maintenant communiquer avec l’état via email, s’informer sur l’ensemble des sites Internet proposés pour des horaires, des conseils, des procédures, des formulaires… Nous pouvons payer en ligne, réclamer, déclarer…

Le citoyen, maillon faible ?

Dans toute cette chaine numérique, il reste cependant un maillon faible, le citoyen, qui n’est pour l’instant qu’à la marge du numérique et qui ne le suit que parce qu’il y est poussé par les sociétés et l’état. Mais tout ceci doit changer, tout ceci va changer.

Citoyen, il te faut maintenant passer à l’heure du numérique dans son intégralité. Préférez les documents numériques aux documents papier, que ce soit pour vos factures, pour vos salaires, pour vos contrats, pour vos déclarations.

Prenez l’ensemble de vos documents importants existants et utilisez l’une des nombreuses super imprimantes 4 en 1, qui va vous permettre de tout numériser en un clic de bouton.

Ensuite, triez, classez, sauvegardez et archivez vos documents pour vous en servir le jour où vous en aurez besoin. Mais faites attention, certains documents peuvent être sensibles, ne les égarez pas.

Liste de documents importants

Dans cette revue de documents, nous pouvons citer :

  • Les factures : Telecom, Electricité, Gaz, services à la personne, gros paiements (voiture, maison)…
  • Les documents personnels : Carte d’identité, Passeport, Permis de conduire, Carte Vitale…
  • Les bulletins de salaire,
  • Les actes notarials,
  • Les documents émanants de l’état.

Comment gérer cette masse de données ?

Avec une masse d’informations si importante, il va falloir apprendre à tout gérer, selon certaines contraintes :

  • Une sécurisation optimale des données : pour ne pas les fournir au premier inconnu qui passe, mais également pour ne pas les perdre,
  • Un acces à tout instant de partout : car c’est également l’objectif de la dématérialisation,
  • Une mise à jour rapide et facile : car de nouveaux documents et besoins apparaissent chaque jour.

Internet ou clé USB ?

Si la clé USB possède des avantages non négligeables, elle a un gros inconvenient, elle a de grosses probabilites d’être perdue ou cassée. Ce qui peut s’avérer catastrophique.

Concernant Internet, il va vous falloir un site répondant à toutes les contraintes et ici la sécurite peut restreindre l’utilisation d’un grand nombre de sites. Il vous faut un gros espace de stockage, environ 1 Go, voire un peu plus (et peut-être beaucoup plus dans 5 ans). Un espace facile d’accès mais bien sécurisé, une sorte de coffre-fort, et surtout simple d’utilisation pour l’ajout de nouveaux documents. Et c’est ici que nous retrouvons les entreprises et plus particulierement les banques, qui ont déjà réfléchi à la question et qui commencent à proposer leurs offres.

Un coffre-fort numérique

Puisqu’elles savent que vous avez ce type de besoin (elles l’ont également) et que vous avez un accès Internet vers votre compte en ligne, celles-ci proposent des coffres-forts numériques pour y stocker toutes vos données. Un moyen simple et peu coûteux (pour elles) d’engranger plus d’argent en élargissant un peu leur business.

Vous pourrez ainsi, de partout dans le monde, récupérer une photocopie de votre passeport ou de votre permis de conduire si vous l’avez perdu (ce qui n’est pas une preuve suffisante, mais peu vous aider dans de nombreux cas). Vous pourrez aussi envoyer une copie de votre diplôme a votre nouvel employeur, même si vous êtes au bord de la plage pour les vacances.

Notre vie numérique n’est qu’à son commencement, préparez-vous à entrer dans un autre monde.

La qualité est un voyage

pas une destination.

C’est par ces mots que se termine la conférence Qualité du code source et l’intégration continue des collaborateurs de Xebia. Il est bon de rappeler que la qualité ne peut pas être quelque chose qui s’enclenche en un geste, ni même qu’elle se termine.

Au cours de ma carrière, j’ai souvent été surpris par le peu de qualité fournie sur les projets, tant au niveau du code source que de la documentation. Et ne parlons pas des tests ou de l’intégration continue, concepts encore trop souvent inconnus chez certains éditeurs.

Mais instaurer la qualité sur un projet existant ou dans une société n’est pas chose aisée. Xebia le détaille d’ailleurs très bien sur les dernières diapositives de son exposé.

Pour ma part, je dirais que la plus grosse difficulté n’est pas sur la technique, puisque qu’après tout, si d’autres sociétés le font, tout le monde peut le faire, mais sur les individus et la motivation.

En effet, si les participants au changement ne connaissent pas ces pratiques, ils peuvent douter de leurs biens fondés, de la facilité de mise en place, des gains de productivité et qualité et de l’impact direct sur leur travail.

Imaginez, vous demandez à des développeurs, souvent en place depuis plusieurs années de :

  • changer leur façon de développer, cela pourrait laisser penser qu’ils ne savent pas développer,
  • écrire des tests unitaires et d’intégration, ce qui va leur demander plus de temps, et donc faire baisser leur productivité,
  • suivre leur projet sur un serveur d’intégration et corriger toute erreur en priorité si le cas se présente, ce qui signifie que corriger un serveur de build est plus important qu’une fonctionnalité métier,

Il est clair que si l’on évoque ces trois points, la qualité du code source et l’intégration continue ne semblent pas apporter de productivité aux développements, bien au contraire.

Mais lorsqu’on connait les 3 points suivants, les premiers commentaires semblent bien négligeables, face aux avantages accumulés :

  • Un développeur passe 80% de son temps à lire du code et 20% à en écrire, il a donc tout intérêt à avoir un code lisible et rapidement compréhensible, pour diminuer son temps de lecture et augmenter son temps d’écriture,
  • Les tests permettent d’être informé de la moindre régression dans le code et de modifier à loisirs et sans doute du code existant afin de l’améliorer,
  • Le serveur de build informe, en temps quasi-réel, de l’état du projet et des tests pour l’ensemble des acteurs du projet, afin de corriger une erreur au plus tôt et de ne pas attendre d’être en production pour corriger une faille passée au travers des tests métiers,

Pour une société qui ne maitrise aucun des points cités précédemment, les gains de productivité peuvent atteindre 300%, voire plus si le code est réellement catastrophique ou si l’intégration de nouveaux développeurs est importante. Vous me direz alors, 300%, c’est énorme. En fait à y réfléchir, ces 300% ne sont pas très important, c’est principalement la productivité de départ qui est très faible. Car bien souvent, si vous n’avez pas de qualité du source code ou d’intégration continue, vous empilez les bugs, vous multipliez les copier-coller de peur de modifier l’existant, vous passez votre temps à lire et vérifier une implémentation…

Mais rappelez-vous, pour mettre en place les bons process de développements, le plus important n’est pas la technique, c’est l’accompagnement au changement. Soyez sur d’avoir les bonnes personnes pour vous aider.

Plugin Firefox : Greasefire et Google Fx

Et oui, encore 2 petits plugin firefox. Enfin pas tout à fait. Le premier est un plugin firefox, le second un script greasemonkey. Dans tous les cas cependant, il vous faudra firefox.

Greasefire : Découvrez les scripts GreaseMonkey

Greasefire est un plugin firefox qui permet au fil des sites sur lesquels vous surfez, de vous informer des scripts disponibles pour ceux-ci. Vous pouvez donc surfer normalement et si le site sur lequel vous vous trouvez permet d’utiliser des scripts GreaseMonkey, greasefire vous l’indiquera et vous fournira directement dans Firefox une petite interface pour découvrir le script et l’installer. Un must lorsqu’on souhaite personnaliser son surf.

Affichage des scripts disponibles sur le site courant

Affichage des scripts disponibles sur le site courant

Google Fx : Personnaliser votre recherche Google

Google Fx quant à lui est un script GreaseMonkey, qui vous permet de personnaliser la page de résultat Google afin d’afficher plus que la simple recherche de site proposée par Google. Vous y retrouverez Wikipedia, Google Images, Google Video, des liens vers d’autres moteurs de recherche, triés par catégorie, filtrable sur le titre, le contenu, la date… Un vrai bonheur pour celui qui souhaite voir organiser ses résultats. Mais attention cependant, ce petit script ralentira légèrement l’affichage des résultats. C’est perceptible mais pas réellement gênant.

Affichage de la page de résultat Google avec le script Google Fx

Affichage de la page de résultat Google avec le script Google Fx

Pour la forme, je vous rappelle mes propres scripts GreaseMonkey :

Scrum, XP : A qui profite l’agilité ?

Il y a un très bon article dans le magazine Programmez du mois de Juin 2009 qui décrit Scrum, XP et la journée d’un développeur agile.

Formé à l’ancienne sur des méthodes de cycle en V, et ayant appliqué XP de manière intensive, j’étais dubitatif mais enthousiaste et intéressé par les nouvelles méthodes agiles, Scrum plus particulièrement. Je ne pensais cependant pas que la nature des concepts était si révolutionnaire que cela.

Pratiquant Scrum depuis maintenant 6 mois dans ma nouvelle entreprise, je dois dire que l’ensemble de mes concepts a été remis à zéro, sur de nouvelles bases, et de nouvelles méthodes. Et après ces 6 mois, je peux dire que mon opinion est faite. Scrum est une des meilleures méthodes de développement logiciel actuelles. Il était temps que l’informatique innove pour s’améliorer. Maintenant les entreprises vont devoir intégrer les méthodes, c’est un point plus difficile.

Mais revenons au titre de mon sujet. A qui profite l’agilité ?

Vraisemblablement, pour Programmez, la personne bénéficiaire est le développeur, et puisqu’il est plus productif, par conséquent, son employeur l’est également. Mais commençons avec le développeur.

Le développeur

Par un développement progressif, auxquels se succèdent tests unitaires, tests d’intégration et couverture de code, puis compilation sur un serveur de référence, le développeur gagne en retour, positif ou négatif, sur son travail. Il est alors mieux à même de connaître les impacts de ses nouveaux développements sur le code existant. Il est plus sûr de lui, plus confiant et donc plus à même de modifier, d’améliorer et progresser dans son travail. Le gain de productivité est très important. Avec la démonstration de son travail à la fin de chaque itération, les progrès sont concrets et perceptibles immédiatement par le métier, une relation de confiance s’instaure, la compréhension des partenaires métier et technique s’intensifie. La qualité des développement s’améliore.

L’architecte

L’architecte n’ayant « qu’à » dessiner les bases de l’application sur des besoins réels immédiats, en préservant tout de même des choix en cas de modifications ou d’améliorations importantes, il évite un travail d’approfondissement contraignant, souvent inutile et trop abstrait, et couteux en temps. Cette agilité lui permet donc de s’économiser pour travailler sur des tâches réellement importantes et à retour sur investissement court. Il gagne beaucoup en productivité. Le logiciel perd en complexité inutile et préméditée.

Le chef de projet

Il est difficile de définir un chef de projet en utilisant des méthodes agiles comme Scrum. On peut le confondre avec un ScrumMaster et/ou un chef d’équipe. Il peut également être assimilé à l’architecte. Cependant en faisant interagir les membres de son équipe comme un tout, directement avec le métier, la transmission de la connaissance et la fluidité de la communication lui permettent de diminuer les risques d’erreur ou d’incompréhension métier et/ou technique. Toutes questions étant posées lors des réunions quotidiennes et/ou lors des réunions de planning. Les temps morts, retours en arrière, frustation sont diminués, l’équipe gagne en productivité et connaissance métier, le chef de projet gagne en sérénité.

Le chef de produit

Celui-ci s’exprime directement avec les développeurs lors des plannings et démonstrations. Il est a même d’expliquer ce qu’il attend, ce qui va et ce qui ne va pas dans ce qui a été produit. Il fournit ainsi un dialogue direct qui permet aux développeurs de comprendre plus facilement ce qui doit être fait et comment. Avec des déploiement fréquent, il reçoit également son logiciel dans des délais plus courts et en fonction de besoins réels immédiat. Son équipe gagne en productivité, par l’utilisation de fonctions développées en priorité, selon ses propres recommandations. Il gère mieux son travail, celui de son équipe et le futur de son organisation. La productivité métier est accrue.

Les décideurs

Le premier objectif des décideurs dans l’application des méthodes agiles est d’augmenter la productivité des développeurs pour que ceux-ci augmentent la productivité du métier, et afin que ces derniers augmentent le chiffre d’affaire et surtout le bénéfice de l’entreprise. Si la productivité des développeurs est assurée, celle du métier sera alors encore plus importante, le pari est donc gagné.

Mais revenons sur le terme de l’agilité. Le fait que le retour sur investissement (ROI) avec les méthodes agiles soit court, 2 à 3 semaines, va permettre aux décideurs de pouvoir décider (c’est leur métier après tout) et faire appliquer leur décision sur des cycles plus courts, vraisemblablement une à deux itérations. Ils pourront ainsi s’adapter plus rapidement aux marchés et emprunter des chemins aujourd’hui impossibles sur des méthodes traditionnelles, type cycle en V.

Reprenons le schéma que j’avais fourni lors d’un précédent post : Scrum : De l’intérêt des méthodes agiles

Comparaison des coûts de production et productivité entre Scrum et méthode standard

Comparaison des coûts de production et productivité entre Scrum et méthode standard

Ce schéma montre les coûts de production logiciel et la productivité du métier.

Dans le cas de développement avec la méthode de cycle en V (ligne verte), le décideur n’a d’autres choix que d’attendre le déploiement du logiciel en production avant de placer ses équipes sur un autre développement, plus stratégique (sauf à retirer quelques ressources, mais en impactant le planning de déploiement de son logiciel en cours).

Avec les méthodes agiles, le métier est plus productif dès la seconde itération (ligne rouge). Si le décideur choisit d’interrompre les développements logiciels, il peut le faire, premier point, mais il peut également calculer le gap entre la productivité actuelle et maximum du métier avec les développements restants et choisir de réorienter une partie ou l’ensemble de son équipe sur des points plus stratégiques.

En définitive, s’il est un acteur de l’entreprise qui gagne en agilité avec les méthodes agiles, c’est le décideur. Des décisions en connaissance de cause, moins pénalisante, plus stratégique, plus rapide et plus efficace.

L’agilité est aux décideurs. A eux de faire les bons choix.

Dette technique, capacité et volonté de la réduire

J’ai lu dernièrement un article très intéressant parlant de la dette technique d’une application sur le blog de Claude Aubry :

Ces deux liens donnent une définition plutôt claire de la dette technique et des moyens de la reconnaitre.

Je me permets cependant de compléter ces articles, puisque je suis actuellement dans un cas similaire où j’ai pour mission d’améliorer la qualité et la productivité d’un projet qui supporte une dette technique particulièrement importante.

S’il y a dette technique sur un projet, l’équipe projet ne sera pas à même de la reconnaitre, sinon celle-ci n’aurait pas de dette technique (ou alors minime) à moins d’avoir un éclair de génie et de se dire, « Mais nous avons une grosse dette technique !!! ». Sur le projet que j’encadre actuellement, les développeurs n’ont absolument aucune conscience de la mauvaise qualité des développements et considèrent que les difficultés qu’ils rencontrent sont essentiellement dû à l’environnement particulier de développement (du javascript sur un serveur NetSuite). Le code n’est pas formaté, n’a aucune convention de nommage, ne réutilise pas ces composants, et pire les développeurs font du copier-coller de code à outrance, car ils ne veulent pas casser du code existant de peur d’engendrer des bugs en série. Et bien évidemment, ils ne connaissent pas les tests unitaires et d’intégration. Dans ces conditions, comment voulez-vous que cette équipe soit à même de reconnaitre la dette technique de son projet ?

Capacité à voir la dette technique

Pour reconnaitre la dette technique d’un projet, il est nécessaire de faire appel à une personne extérieure au projet. Cette personne peut être de la même entreprise, mais si tous les projets sont fondés sur les mêmes principes (pas de formatage, pas de convention de nommage, pas de réutilisation de code et pas de tests unitaires), alors il est préférable de faire appel à une personne extérieure, nouvellement embauchée ou intervenant extérieur.

Cette personne devra avoir les capacités techniques et fonctionnelles nécessaires à l’acquisition des bases d’un projet mal ficelé (autant dire de très bonnes compétences) et comprendre ce qui a amené les développeurs à se retrouver dans une telle situation. Compétences et/ou connaissances techniques insuffisantes, pression du business pour avancer toujours plus vite sans réfléchir sur ses actes pour réorganiser le projet au fur et à mesure de son accroissement… Cette personne devra également avoir de gros talents de persuasion et de négociation pour que les développeurs eux-mêmes reconnaissent que quelque chose doit être fait. En effet une personne extérieure au projet et plus spécialement extérieure à l’entreprise aura toujours plus de mal à convaincre, surtout si elle doit faire les preuves de ses capacités.

Mais le plus important n’est pas de reconnaitre cette dette technique, de la faire reconnaitre aux développeurs ou de trouver une solution afin de la réduire.

Volonté à réduire la dette technique

En effet, une fois les premiers acteurs du projet acquis, il va vous falloir convaincre les décideurs, c’est à dire le métier, qu’il y a une grosse dette technique (qu’ils n’ont jamais vu d’ailleurs) que celle-ci est pénalisante pour le projet et que réduire cette dette technique va permettre d’accroitre la productivité par 2 voire 3 fois.

Mais surtout il va falloir leur expliquer que pour combler cette dette technique, vous allez devoir pénaliser la production pendant une période plus ou moins courte (3 mois dans mon cas, mais la dette technique est vraiment très importante) afin de mettre en place un process de développement et/ou une architecture digne de ce nom. Et c’est sur ce dernier point que vous allez rencontrer les plus grosses difficultés.

Rien ne garantit en effet que vous aurez les gains de productivité attendus, qui paraissent tout de même extraordinaire. Le business est bien évidemment dans une phase critique et réduire les développements est inimaginable. Alors vous allez expliquer et négocier, mais si le business a réellement besoin de ces développements, vous pouvez être sur que le planning de votre refactoring va s’allonger dans le temps ou être décalé jusqu’à des temps plus sereins (ce qui d’après mon expérience existe rarement).

Bonne chance pour réussir sur ce dernier point.

PS : La décision de mon example sera prise dans les jours prochains, nous verrons ce qu’en aura décidé le business. (Je crains le pire).

Conseils d’architectes à architectes

L’architecture et la gestion de projet informatique ont en commun de prendre tous les blâmes lorsqu’un projet ou une architecture échoue et de partager le succès avec l’ensemble de l’équipe lorsqu’ils réussissent. Si ceci est vrai pour beaucoup de métiers, cette réalité doit bien nous rappeler à quel point nous sommes tributaires d’une équipe et que nous en faisons donc partie.

J’ai eu l’occasion il y a quelques mois de parcourir quelques vérités sur le métier d’architecte dont je me permets de retranscrire quelques pages. Réfléchissez sur ces quelques points.

Lorsque vous travaillez sur une architecture :

Ne placez votre CV dans le top des priorités : Une architecture n’est pas faite pour élargir vos connaissances, vous faire découvrir de nouvelles technologies ou faire des expériences. Il s’agit de répondre à un problème et une demande par une infrastructure et une organisation.

Simplifiez la complexité, limitez la complexité accidentelle : Pensez simple, vérifiez ce qui est fait, prévenez ce qui va être fait pour que ce soit fait simplement.

La communication est reine, la clareté et le Leadership sont ses serviteurs : La communication est le point le plus important d’un projet. Sans communication, vous courez à votre perte. Et restez simple dans votre communication et investissez-vous dans les tâches que vous confiez.

Recherchez la valeur dans ce que vous dessinez : Si ce que vous proposez n’a pas de valeur, alors il ne sert à rien de l’implémenter. Et il est fort probable que ceci sera refusé, mis de côté ou pénalisera votre planning. Oubliez ce qui n’a pas de valeur ou pas assez dans vos architectures.

Restez debout : Lorsque vous présentez votre architecture, restez debout. Ceci montre votre motivation, votre implication dans votre travail. Ceci rend votre message plus efficace. Vous mettez alors toutes les chances de votre côté pour valider votre conception.

Visualisez l’échaffaudage de votre architecture lorsque vous en parlez : Lorsque vous discutez du design de votre architecture, vous devez être à même de discuter de chaque partie, même si vous n’avez pas encore tous les détails en tête et surtout de combler les lacunes qui pourraient apparaitre dans vos premiers dessins.

Vous négociez plus que vous ne réfléchissez : Eh oui, une fois une architecture dessinée, il vous faut la discuter, l’expliquer et surtout la négocier, pour bien faire comprendre les points importants, ceux que l’on peut adapter et le timing de mise en place. Un vrai travail de négociateur.

Quantifiez : Pour votre architecture, il vous faut quantifier la charge, le planning, les impacts, les risques… Un vrai travail de fourmi.

Une ligne de code a plus de valeur que 500 lignes de spécifications : Effectivement, dans la grande majorité des cas, cette ligne de code sera exécutée plusieurs milliers de fois lorsque votre application sera en à être production. Et elle aura valeur de preuve lorsqu’il va s’agir de savoir ce que fait réellement votre programme. Elle a donc intérêt à être juste, bien écrite et compréhensible. Cette ligne est bien plus importante que vos spécifications. Et c’est d’autant plus vrai avec des méthodologies agiles type Scrum.

Il n’y a pas de solution miracle : Il n’est pas possible d’appliquer les mêmes recettes sur deux projets différents. Chaque projet, chaque application a ses spécificités. Le secteur, les technologies, l’équipe, les connaissances. Il vous faut adapter votre architecture.

Il n’est jamais trop tôt pour parler performances : Si les performances ne sont pas la première priorité dans la construction d’une architecture, elles ne doivent pas être mises de côté, puisque tôt au tard, il y aura des questions de performances auxquelles il faudra répondre. Il vous mieux y avoir réfléchi lors des premières phases de design.

L’architecture de l’application détermine les performances de l’application : Lorsque vous contruisez votre architecture, réfléchissez bien aux performances de votre application. En effet, de mauvais choix d’architecture peuvent avoir des impacts forts sur des performances attendues comme des prérequis à l’application.

Il n’y a pas qu’une seule solution à un problème : La solution unique sans autre alternative n’existe pas. N’essayez donc même pas de le faire croire à vos interlocuteurs.

C’est le business qui décide : Pensez bien que tout ce que vous faites est conduit par le business pour le business. C’est lui qu’il faut séduire, c’est lui qu’il faut satisfaire.

La simplicité avant la généricité; L’utilisation avant la réutilisation : Avant de penser générique, pensez d’abord simple et voyez ensuite si vous pouvez appliquer un modèle générique. Avant de penser réutilisation, pensez déjà à utiliser et vous verrez ensuite si vous pouvez réutiliser.

Mettez les mains dans le camboui : Si vous voulez être crédibles auprès de vos développeurs et de vos managers, il va falloir vous investir sur le plan technique. Supportez vos développeurs lorsqu’ils ont un problème, le résoudre vous-même si besoin.

Intégrez en continu : L’ensemble du travail de l’équipe et le votre doivent être intégré en continu. N’imaginez pas pouvoir assembler toutes les pièces en fin de parcours comme si de rien n’était si vous n’avez pas tout testé ensemble au fur et à mesure des développements du projet. Les méthodes XP d’intégration continue fournissent tous les outils dont vous avez besoin et vous assurent une qualité continue et un risque minimum sur votre projet.

La base de données est une forteresse : une fois le schéma de la base de données défini et les premières lignes de code intégrées, comprenez bien que tout changement sur la base de données aura des impacts forts sur le projet. Cette base de données devrait donc être considérée comme inviolable, sauf quelques mineures, au risque d’impacter la qualité de votre projet et surtout votre planning.

Utilisez l’incertain pour vous guider : Lorsque vous discutez de votre conception, réfléchissez toujours à ce que vous ne savez pas ou ne comprenez pas. Ceci doit vous guider pour définir les bases de votre architecture. Ce que vous ne savez pas présente un risque. Il vous incombe donc de savoir pour diminuer ce risque. Si vous vous apercevez durant votre projet qu’il y a quelque chose que vous ne connaissez pas, vous avez pour tâche de le découvrir afin de limiter ou d’annuler le risque que cette non-connaissance a sur votre projet.

Une vue trop long terme est l’ennemi du succès : Lorsque vous travaillez sur votre architecture, ne pensez pas trop au long terme, ceci pourrait avoir un impact négatif sur le succès de votre projet. Vous empêchant de voir les besoins immédiats et de choisir ce qui est bon.

La réutilisation est une question de personne et d’éducation, pas d’architecture : Il ne suffit pas d’avoir une architecture qui permet la réutilisation de composants, encore faut-il avoir les bonnes personnes avec les bonnes connaissances pour permettre cette réutilisation. Et il faut expliquer la réutilisation pour qu’elle soit effective.

Il n’y a pas de « Je » en architecture : Vous ne pouvez pas vous permettre de dire « je » en tant qu’architecte. Car si certes vous dessinez l’architecture, c’est avec l’aide de beaucoup de collègues de votre entourage, avec des négociations et surtout ce sont les développeurs qui vont l’implémenter.

Prenez du recul : Il est bon de prendre du recul lorsqu’on travaille sur une architecture. Ne pas toujours être « dedans ». Mais attention, il faut savoir ajuster ce recul. Prendre la vue des développeurs, des utilisateurs, managers, sur du court, moyen et long terme.

Essayez avant de choisir : Les choix d’architecture ou de technologie ne doivent jamais être fait sans en avoir fait des essais de ceux-ci. Les risques encourus sont beaucoup trop importants. Et plus les choix sont importants, plus les essais doivent être faits avec soin.

Comprendre le métier : Un architecte se doit de comprendre le métier s’il veut faire une architecture réussie. Et plus l’architecture est importante et plus la connaissance du métier doit être approfondie. Ne négligez jamais cette étape.

Le temps change tout : Dans un projet tout est une question de timing. Il faut laisser le temps au temps et savoir lorsqu’il est temps d’intervenir. Laisser le temps aux managers d’assimiler vos choix et ses impacts, laisser aux développeurs le temps d’intégrer vos concepts et leurs avantages… Et ce qui était vrai hier, n’est pas forcément vrai aujourd’hui et ce qui est vrai aujourd’hui ne le sera pas forcément demain.

Donnez de l’autonomie aux développeurs : Avec l’expérience l’architecte sait que son architecture ne peut être parfaite et qu’elle est sujette à modifications. Celui qui ne l’accepte pas et se veut rigide avec ses développeurs court à sa perte. Ceux-ci n’accepteront pas l’architecture ou l’architecte ou les deux, et soit le projet, soit l’architecture, soit les deux vont échouer. Laisser les développeurs proposer des solutions, discuter avec eux de ce qu’il est envisageable de faire lorsqu’ils se retrouvent confronter à des problèmes que votre architecture ne peut résoudre d’elle-même et adapter.

Le contexte est Roi : Des règles d’architecture qui s’appliquent dans un contexte ne s’appliqueront pas dans un autre. Tout est fonction du contexte. Vous ne pouvez pas créer une architecture ultra-performante et complexe si vous n’avez de développeurs aptes pour la comprendre par exemple. Prenez en compte le contexte lorsque vous dessinez votre architecture.

%d blogueurs aiment cette page :