En gros, un développeur est un genre assez particulier d’humain qui a besoin de se concentrer pendant de longues périodes. Il se comporte comme un microprocesseur quand on lui demande de changer de tâche régulièrement. Le changement de contexte est une opération lourde qui ne doit pas être répétée trop souvent ; dans le cas extrême le processeur passe son temps à passer d’une tâche à l’autre, à se reconcentrer sur ce qu’il fait, et ne fournit plus de travail utile.

À un moment, ce phénomène a constitué un gros problème dans mon boulot, au moment où je prestais[1] chez un client, à gérer dix micro-projets à la fois avec un bon paquet d’interlocuteurs. Le client désirait une sous-traitance à fond, avec moi et un collègue dans le rôle de l’« interface » avec le centre de développement de notre SSII à plusieurs centaines de kilomètres. Impossible de se plonger une demi-heure sur un problème quelconque sans être interrompu par un coup de fil à tel ou tel sujet.

Mon boulot actuel comporte à nouveau ce genre de pépin, mais sur une autre échelle : je me retrouve sur trois missions à la fois (du genre deux jours sur l’une, deux sur la deuxième, une journée sur la troisième) et, à chaque fois, me « replonger dans le contexte » de chacune va me faire perdre quelques cycles cérébraux, de la même manière qu’en rentrant de vacances je ne suis pas à 100% immédiatement. J’ai observé le phénomène dans le cas extrême d’un collègue obligé de « caser » des jours de réalisation de rapports complexes dans les trous d’une autre mission : il redécouvrait les spécifications et réanalysait ses propres réalisations quasiment d’un mois sur l’autre. Je l’observe sur moi-même sur une maintenance applicative à long terme qui tombe dans les « trous » des autres prestations (en gros une ou deux fois par mois…). Bref, ça n’avance pas.

Je l’observe sur un autre projet : je dois à nouveau sous-traiter la partie la plus fastidieuse de la réalisation à un collègue situé sur un autre site… d’où pas mal de temps perdu en explication de contexte, préparation de docs, CD, mise en place de spécifications bien plus précises que je ne l’aurais fait pour moi-même, bref tout un surcoût (overhead) identique à celui impliqué quand un programme sous-traite une partie du travail à un autre. Ajoutons des « effets tunnel » dus à des disponibilités épisodique de ma part (je preste ailleurs) et du client de ce projet, avec donc nécessité de nous poser des synchronisations. Ajoutons les besoins de recharger ma petite mémoire cache cérébrale avec les éléments dudit projet à la moindre question du sous-traitant.

L’informatique n’a jamais avancé que comme cela mais ma capacité de travail à moi ne double pas tous les deux ans… Mon cerveau est configuré pour du mode batch, et multiplier les tâches d’arrière-plan augmente mon stress de manière exponentielle.

Et je ne parle pas de la difficulté à développer quoi que ce soit à la maison avec une famille qui exige un peu de temps avec elle, et un gamin de 4 ans en particulier. Moi j’ai abandonné.

Mise à jour de mai 2011 : Et ça continue en ce moment, avec plein de clients exigeants à la fois, un téléphone professionnel qui me tombe dessus, et une tornade de dix-huit mois à la maison. Soupir.

Note

[1] Du verbe « prester » qui, s’il n’existe pas en français de France officiel, devrait y être inclus.