L’effet tunnel

Toutes les personnes qui ont géré une équipe connaissent l’effet tunnel. C’est lorsqu’il vous est impossible de connaître l’état d’avancement d’une tâche ou d’un projet et que vous n’avez pas d’autre solution que d’attendre que le travail soit terminé pour pouvoir l’évaluer.
Avant d’étudier les origines de ce mal et comment le prévenir, voyons pourquoi l’effet tunnel est très mauvais :

  • Vous n’avez aucune visibilité sur le planning. Comme il est impossible de savoir si la tâche sera terminée demain ou dans 2 semaines, il est tout aussi impossible de prévoir les retards sur l’ensemble du projet. Comment répartir les tâches et affecter les ressources lorsque vous ne maîtrisez pas la réalisation du travail ?
  • Vous ne pouvez pas redresser le tir si le projet part dans une mauvaise direction. Vous pourrez évaluer les dégâts qu’une fois que tout sera terminé. Et bien souvent, vous aurez alors le choix entre vous satisfaire d’une réalisation bancale (travail incomplet, qui ne répond pas aux spécifications, insensé à maintenir) ou tout recommencer à zéro.

L’effet tunnel a toujours pour origine les choix des individus à qui vous confiez les tâches, et la manière dont ils les abordent. Dans tous les cas, vous pouvez l’éviter avec de la diplomatie et de la méthode.

Le glandeur naturel

La plupart du temps, l’effet tunnel est le fait d’une personne à qui vous avez laissé la possibilité de glandouiller tranquillement. Laissez 5 jours à un développeur pour créer un nouveau module, et vous pouvez être certain qu’il va passer 3 jours à faire autre chose, puis 1 journée à se demander ce qu’il va faire et à se motiver pour le faire, puis passer 3 jours à coder comme un fou. Résultat, il sera en retard et aura oublié qu’il devait faire une documentation succincte.

Lorsque vous demandez à un glandeur naturel ce qu’il est en train de faire, il ne va pas vous répondre « Je surfe sur des sites de foot parce que le nouveau championnat commence bientôt », même si c’est ce qu’il a fait pendant les 3 dernières heures. Il va plutôt prendre un air très affairé, peut-être même semblera-t-il agacé que vous lui fassiez perdre son temps, pour vous faire comprendre qu’il est vraiment plongé dans le boulot jusqu’au cou. Vous repartirez avec pour seule information « Je suis en plein dedans, c’est bientôt fini, je te préviendrai quand ce sera bon« , et une indéfinissable impression de vous être fait bananer.

Livre : Managing Humans

Je vais vous parler un peu d’un très bon livre, nommé Managing Humans, écrit par Michael Lopp et publié par Apress en 2007. Depuis 2002, il tient sous le pseudonyme de Rands le blog Rands in repose, dans lequel il parle de ses expériences en tant que manager d’équipes techniques. Et il en a des choses à dire, le bougre, après avoir travaillé pour Symantec et Netscape, entre autres.

Managing Humans - couverture

Le sous-titre du livre est assez explicite : « Biting and humorous tales of a software engineering manager ». Le livre est truffé d’anecdotes amusantes, de mises en situation réelles ou imaginaires, qui en font un ouvrage à part dans l’univers très fourni des livres dédiés à la gestion de projet et au management.
Personnellement, j’ai une affection particulière pour ce livre. Je l’ai acheté à sa sortie en 2007, alors que j’étais en train de créer mon entreprise. Je n’y ai pas trouvé de recette miracle, mais plein d’exemples de choses à faire ou ne pas faire ; je pense avoir évité plusieurs pièges dans la création de mon équipe grâce à ce livre.

Ne pas être un con

Le premier chapitre du livre se nomme « Don’t be a prick ». L’ensemble des 209 pages pourrait être résumé dans cette simple phrase. Ça paraît débile tellement c’est simple. Mais au cours de ma carrière, j’ai franchement rencontré tellement de personnes qui agissaient comme des gros cons, que ça mérite d’être souligné. Que ce soit par bêtise, inexpérience, indélicatesse, fainéantise, vanité ou parce qu’ils n’avaient rien à faire à ce poste, il est sidérant de voir combien de dirigeants sont inaptes à gérer les hommes et les femmes qui composent leurs équipes.

Le carquois du management

Rands utilise une métaphore assez intéressante. Il dit que nos compétences en management sont comme des flèches dans un carquois. Quand on rencontre un problème, on peut prendre la flèche appropriée, prendre un peu de recul, viser et tirer. C’est le titre qu’il a donné à la première partie du livre.

Les méthodes agiles

Cet article fait suite à ceux consacrés au cycle en V et au cycle itératif. Dans l’histoire des méthodes de gestion de projets informatiques, les méthodes agiles sont une évolution relativement récente qui tente de résoudre certains défauts des pratiques qui étaient en usage jusque-là.

Le manifeste agile

La définition de toutes les méthodes agiles est synthétisée par le Manifeste agile, qui a été rédigé en 2001 par plusieurs acteurs de ce domaine. Il distingue 4 valeurs fondamentales et 12 principes.

Les 4 valeurs

(traduction © Wikipedia et al)

  • L’interaction avec les personnes plutôt que les processus et les outils.
  • Un produit opérationnel plutôt qu’une documentation pléthorique.
  • La collaboration avec le client plutôt que la négociation de contrat.
  • La réactivité face au changement plutôt que le suivi d’un plan.
Les 12 principes

(traduction © Wikipedia et al)

  • Notre première priorité est de satisfaire le client en livrant tôt et régulièrement des logiciels utiles.
  • Le changement est accepté, même tardivement dans le développement. Les processus agiles exploitent le changement comme avantage compétitif pour le client.
  • Livrer fréquemment une application fonctionnelle, toutes les deux semaines à deux mois, avec une tendance pour la période la plus courte.
  • Les gens de l’art et les développeurs doivent collaborer quotidiennement au projet.
  • Bâtissez le projet autour de personnes motivées. Donnez leur l’environnement et le soutien dont elles ont besoin, et croyez en leur capacité à faire le travail.
  • La méthode la plus efficace de transmettre l’information est une conversation en face à face.
  • Un logiciel fonctionnel est la meilleure unité de mesure de la progression du projet.
  • Les processus agiles promeuvent un rythme de développement soutenable. Commanditaires, développeurs et utilisateurs devraient pouvoir maintenir le rythme indéfiniment.
  • Une attention continue à l’excellence technique et à la qualité de la conception améliore l’agilité.
  • La simplicité – l’art de maximiser la quantité de travail à ne pas faire – est essentielle.
  • Les meilleures architectures, spécifications et conceptions sont issues d’équipes qui s’auto-organisent.
  • À intervalle régulier, l’équipe réfléchit aux moyens de devenir plus efficace, puis accorde et ajuste son comportement dans ce sens.

Application concrète

Il existe plusieurs méthodes qui suivent l’esprit du manifeste. Elles ont chacune leurs spécificités, mais de manière globale elles œuvrent toutes dans les mêmes voies.

L’affectif

Pour bien gérer les rapports entre les intervenants d’un projet, il est nécessaire de comprendre comment chaque personne fonctionne. Je vais ainsi vous brosser plusieurs portraits types. Évidemment, les collaborateurs avec qui vous devrez travailler ne colleront jamais complètement à ces portraits ; ou plutôt, chaque personne présente des aspects qui peuvent être assimilés à tel ou tel type. À vous de les comprendre et de vous adapter en conséquence.

L’affectif

Si j’ai choisi de commencer par ce profil, c’est parce que nous avons tous une part d’affectif en nous. C’est quelque chose que nous connaissons bien, mais que nous avons parfois du mal à reconnaître ou à accepter chez les autres.

Un « affectif » a tendance à réagir à l’instinct. Quand il a un bon moral, que tout semble se mettre en place favorablement autour de lui, il devient un travailleur efficace et très impliqué. Malheureusement, il suffit d’un petit grain de sable pour stopper la machine.
Un des facteurs les plus importants pour ce genre de personne, c’est la reconnaissance de sa valeur, et donc de son travail. Un affectif pourra se donner à fond, même pendant de longues périodes, tant qu’il sent que ses supérieurs lui en sont reconnaissants et qu’ils apprécient son travail. C’est souvent quelqu’un qui doit être motivé de manière positive continuellement.

À l’inverse, il suffit parfois d’une remarque pour que l’affectif se démotive complètement. Cela peut être juste une question légitime, au sujet d’un bout de code que vous ne comprenez pas ; il aura quand même l’impression que vous pensez qu’il a fait du mauvais boulot. Il existe alors 2 versions, qui aboutissent au même résultat :

  • L’affectif « combatif » décidera que vous avez tort, et travaillera moins ou moins bien par choix. C’est une manière de revendiquer.
  • L’affectif « démoralisé » se mettra à douter de ses capacités et commencera à cogiter, jusqu’à ne plus pouvoir travailler parce que son cerveau est trop occupé.

Approche globale ou pas-à-pas

Il y a plusieurs manières de mener une équipe. Je vais m’intéresser ici à la manière dont on communique pour suivre l’avancement des projets. Cette question est assez intéressante et complexe, car elle a des impacts sur la méthode de gestion de projet.

En fait, les gens peuvent être placés dans 2 grandes catégories :

  • Ceux qui veulent voir leurs projets de manière globale.
  • Ceux qui privilégient les petites avancées.

Je ne parle pas de la manière dont on choisit d’aborder les projets, mais plutôt comment on a tendance à réagir naturellement, comment on se sent mieux de travailler. Il y a des avantages et des inconvénients aux deux. Il est bon de savoir dans quelle mouvance on se situe et comment sont nos collègues, pour améliorer le travail d’équipe.

L’approche globale

Certaines personnes éprouvent le besoin vital de comprendre les projets dans leur globalité pour pouvoir travailler dessus. Ils ont souvent une bonne vision de l’ensemble des forces et des faiblesses d’un programme en cours de conception. Pour eux, le seul moyen raisonnable d’exécuter une tâche est de le faire de la bonne façon (ce qui pour eux signifie souvent d’y réfléchir pendant des mois pour être certain de prendre en compte tous les cas imaginables et inimaginables).

Le problème avec ces personnes, c’est qu’elles peuvent tomber dans l’immobilisme. Elles considèrent souvent qu’une réalisation incomplète ou imparfaite est pire que de ne rien faire. Et les tergiversations peuvent durer longtemps avant de définir la manière dont une tâche peut être effectuée suffisamment bien pour les satisfaire.

Le pas-à-pas

D’autres personnes, au contraire, sont capables de démarrer un projet très rapidement et de le faire avancer par évolutions successives. Ils ont une bonne idée du travail qui peut être réalisé en fonction des ressources disponibles à un instant donné, et connaissent souvent tous les petits détails techniques de leurs projets.

Par contre, ces personnes ont besoin d’être encadrées de près, car elles peuvent faire prendre à leurs projets des directions non souhaitables. Le souci, c’est que chaque petite amélioration peut sembler à la fois sensée et peu coûteuse.

Le cycle itératif

Si vous avez lu mon billet sur le Cycle en V, vous savez pourquoi ce type de méthode de travail n’est pas adapté à la plupart des projets informatiques, qui réclament une plus grande souplesse. En l’appliquant de manière rigide, on finit par obtenir des logiciels mal adaptés (fonctionnalités sans priorités), livrés en retard (chaque étape bloque les suivantes) et souvent buggués (la technique se plie au fonctionnel).
C’est ainsi qu’est née la méthode du cycle itératif (ou incrémental), qui tente de formaliser une approche plus pragmatique et maniable.

Cycle itératif

Définition

Cette méthode se décompose en 6 étapes, dont 4 qui en constituent le « coeur » :

  • L’expression de besoin : Le client explique ce qu’il veut obtenir. On peut faire un parallèle avec l’étape de faisabilité du cycle en V, et dans une moindre mesure avec les spécifications fonctionnelles. L’idée reste que les informations en entrée peuvent être modifiées par la suite du processus.
  • Le coeur du processus itératif :
    • Spécification : C’est la traduction en langage technique des besoins fournis en entrée. C’est la réponse aux questions « qu’est-ce qu’on fait ? » et « comment on va le faire ? ».
    • Développement : Il s’agit de la réalisation concrète de ce qui a été défini.
    • Validation : C’est l’ensemble des tests qui permettent de s’assurer que le développement effectué correspond bien à ce qui était attendu.
    • Évaluation : Cette étape sert à effectuer un retour sur les écueils rencontrés et les fonctionnalités abandonnées pendant les 3 étapes précédentes, et l’utiliser comme informations d’entrée pour un nouveau cycle.
  • Déploiement : Les livrables qui ont été validés sont déployés pour que le client y ait accès.

Le cycle en V

Le cycle en V est une méthode d’organisation très connue dont l’origine remonte à l’industrie et qui a été adaptée à l’informatique dans les années 80. C’est l’une des premières méthodes qu’on apprend à l’école, et elle reste toujours d’actualité.

La grande force du cycle en V, c’est qu’il définit assez précisément la manière dont les choses devraient se passer.

Cycle en V - théorie

On peut y distinguer 3 grandes parties : La phase de conception, la phase de réalisation (codage) et la phase de validation. Les phases de conception et de validation se découpent en plusieurs parties. Chaque étape ne peut être réalisée qu’une fois que l’étape précédente est terminée, ce qui diminue les prises de risque sur le projet.
Ce qui est bien visible sur le diagramme, c’est que chaque étape de conception possède son alter ego de validation. Il devient alors assez aisé de valider un projet, car le référentiel de test est connu très précisément.

Les différentes étapes

Le cycle en V est constitué de 9 étapes qui ont toutes leur importance.

Les réunions

Ah, les réunions… Suivant l’entreprise dans laquelle vous êtes, vous avez l’impression de ne pas en faire suffisamment ou au contraire d’en faire trop. J’ai connu les deux.

La recette

Voici les éléments-clés d’une réunion :

  • Un ordre du jour. Tous les participants à une réunion doivent savoir quel va en être le sujet. Cela peut être formalisé dans un email, ou être implicite si c’est une réunion qui se répète régulièrement. Mais si quelqu’un ne sait pas quel est le thème de la réunion à laquelle il se rend, pour pouvez vous attendre à une belle perte de temps.
  • Des participants. Oui, ça semble un peu bête. Mais pensez bien que toutes les personnes nécessaires aux prises de décisions doivent être présentes, sinon vous serez bon pour refaire une autre réunion par la suite. Évitez aussi les réunions où est conviée la moitié de l’entreprise « au cas où on aurait besoin d’eux » ; vous risquez surtout d’avoir des discussions sans fin qui s’éloignent du sujet, et des personnes qui perdent leur temps à se demander ce qu’elles font là. Si à un moment donné vous vous rendez compte que vous avez besoin de la présence d’une personne qui n’a pas été conviée, interrompez immédiatement la réunion pour aller chercher cette personne.
  • Des décisions claires. Trop souvent, les gens quittent une réunion parce qu’ils ont l’impression d’avoir fait le tour d’un sujet, ou par épuisement personnel. Il faut que les décisions prises à la fin de la réunion soient claires pour tous les participants. Si certains avis n’ont pas été tranchés, soyez clairs aussi sur cet état de fait, en notant éventuellement les impacts que cela peu avoir, et surtout en vous accordant sur les éléments qui empêchent de prendre la décision. S’il manque une analyse, notez à quelle date elle doit être terminée, et qui en est le responsable ; si la personne qui peut prendre la décision n’était pas présente ou n’a pas pu se décider, prévoyez immédiatement une prochaine réunion.
  • Un compte-rendu. Les décisions peuvent sembler claires en sortant de réunion, il n’en reste pas moins que chacun en gardera les souvenirs qu’il aura bien voulu mémoriser (ou qu’il aura daigné noter sur son cahier). Le seul moyen de s’assurer que la réunion sera suivie des effets prévus, c’est d’en rédiger un bilan qui sera envoyé à tous les participants. Impossible alors de se rétracter derrière le « Ah ? Je ne me souviens pas qu’on ait dit ça en réunion… ».

Choisir ou être choisi

Quand on a un poste de manager, que l’on doit gérer des personnes, il y a une notion qui peut parfois faire une grande différence : avoir été choisi pour occuper ce poste, ou choisir les personnes que l’on aura à gérer.

Choisir

C’est l’option la plus confortable. Vous arrivez au tout début d’un projet, à la création d’un service ou d’une entreprise. Saisissez cette grande opportunité ! Vous allez pouvoir faire les choses à votre manière.

Recrutement

Votre équipe est vide, il va falloir la constituer. Vous allez pouvoir choisir les personnes qui vont vous rejoindre. Même si je ne vais pas m’étendre sur le sujet pour le moment (il est trop vaste), il n’en reste pas moins que c’est le meilleur moyen d’entamer une collaboration. Vous allez choisir ces personnes ; dès l’embauche vous aurez commencé à tisser des liens privilégiés. Cela ne garantit pas le succès d’une collaboration, mais ça peut grandement la faciliter.

Méthodes de travail

Vous pouvez mettre en place les méthodes que vous voulez, soit parce que vous les avez déjà rodées, soit parce qu’elles vous semblent pertinentes. N’ayez pas peur ! Ce ne sont pas vos supérieurs qui s’y opposeront : ils seront très heureux de s’en remettre à vous, et plus vous montrerez votre dynamisme à ce niveau, plus ils vous feront confiance.