Le mythe de la parallélisation

Les parallèles ça peut se croiserLe monde du travail et du service est depuis des temps immémoriaux divisé en deux catégories distinctes, structurantes mais non exclusives : les clients et les prestataires. Dans la pub, et souvent le web par extension, on dit les annonceurs et les agences, et ça revient à peu près au même.

Quand vous faites partie du second groupe, ou quand vous travaillez dans le développement d’applications, vous apprenez rapidement qu’il existe, au-delà de l’heure, du jour, de la semaine, une unité de mesure capitale : le jour-homme.

Je me dis depuis quelque temps qu’on pourrait même entériner un nouveau mot : le « jourhomme », que la réforme de l’ortografe transformerait en « jourome », et ça serait sympa. Sans parler bien sûr du jourfemme qui devra exister impérativement. Mais je m’égare.

Comme son nom l’indique presque, le jour-homme correspond au travail d’une personne pendant une journée. Ca fait beaucoup rire nos amis anglo-saxons de nous voir utiliser une telle mesure qui passe sous silence toute discussion éventuelle sur la valeur du référent… Il nous faut alors leur expliquer que par chez nous, la durée « officielle » d’une journée de travail est de 8 heures, même s’il s’agit en fait d’une durée admise comme standard – avec toutes les élasticités bien commodes que ça implique, et qui permettent de faire au besoin rentrer deux « jours » en une journée (ben oui, il suffit de travailler de 8h à minuit, fastoche).

Quand on estime une charge de travail, on la chiffre donc en jours-homme.
En général, on colle ça après dans un calendrier (avec ou sans l’aide de certains logiciels pas lourds du tout dont le nom commence par « pro » et se termine par « ject »), et ça nous donne un planning, autrement dit une représentation dans le temps de la vie des vraies gens, week-end et autres jours chômés inutiles pris en compte.
Il est étonnant de remarquer à quelle vitesse on finit à force de faire cet exercice par penser en multiples de 5, et par assimiler 1 mois au chiffre 20 (ce qui est par ailleurs souvent inexact, mais bon, à la louchasse, c’est ça). On met en général plus de temps à intégrer comme un réflexe le calcul inconscient de marges de sécurité conséquentes (de 20 à 50%).

Toujours est-il qu’à l’arrivée, on présente au client un planning, dans lequel il ne regarde en général qu’une seule date, celle de la livraison. C’est le moment où il fait des grands yeux, voire devient livide, voire s’énerve, voire tout ça en même temps ou dans un ordre aléatoire.

Mais, tenez-vous bien, ça n’est pas grave. Pourquoi ? Tout simplement parce qu’on va pouvoir optimiser[1] le planning. Et c’est quoi la solution magique pour optimiser le planning ?

Oui, vous avez trouvé : la parallélisation.

La parallélisation, c’est cette bonne idée qui consiste à dire qu’on va mettre plusieurs gars sur le coup (ou filles, hein, enfin si seulement on en avait dans l’équipe de développement), et que paf par magie ça va linéairement diviser le temps de production par le nombre de ressources affectées. En gros (si vous êtes un peu malcomprenant), s’il y a 60 jours-homme, en mettant deux développeurs, ça va être fait en 30 jours.

Jusque là, je n’aurais presque rien à dire. C’est presque vrai, c’est même presque malin, voire presque réaliste. Sauf que vous connaissez les gens : il leur en faut toujours plus (les coquins). Donc vas-y que jte mets 4 développeurs et c’est torché fait en 15 jours ! Vous voyez venir l’écueil (enfin, j’espère, c’est pas faute d’être lourdement didactique) : tant qu’on y est, mettons 60 développeurs, et ce soir c’est plié[2].

Sans parler de l’incongruité en termes d’écosystème (essayez de regrouper 60 développeurs et vous comprendrez), on a évidemment oublié un détail dans cette équation, trois fois rien, un mot innocent : la ré-a-li-té.

Eh oui. Dans la réalité, répartir la charge induit très vite des « coûts » collatéraux, notamment en coordination du travail. S’il est souvent envisageable de séparer les tâches en plusieurs lots, il n’est pas dit qu’ils puissent être, d’un point de vue logique, tous réalisés en parallèle.

C’est chiant, la réalité, ça marche pas toujours comme les maths ; par exemple, un lapin plus un lapin, pour peu qu’ils soient de sexe différent, ça a vite des chances de faire plus de deux lapins. Vous me direz : ah mais il s’est passé quelque chose.  Mais justement, ce qui est caractéristique de la réalité, c’est qu’il s’y passe des choses, et qu’il y a des contraintes qu’on ne peut pas réduire, même si on est très bon en maths[3].

J’aime bien recourir à une image qui fait en général son petit effet. Elle n’est pas de moi, je crois l’avoir trouvée quelque part dans un machin imprimé, un livre, là, mais je ne retrouve pas la référence, et Google est curieusement un peu muet sur le sujet. En la sortant au bon moment, le résultat est garanti :

Si on met 9 femmes enceintes en parallèle, on n’aura pas un enfant en 1 mois.

Si vous faites bien vos devoirs, vous ne devez toutefois pas prendre cette superbe saillie pour argent comptant, et questionner l’analogie (n’est-ce pas). En d’autres termes, demander si développer une application, c’est comme faire un bébé (je vous passerai toutes les bonnes blagues auxquelles ça peut me faire penser, sinon on va y passer l’hiver).

Soyons prudent sans faire de la langue de bois : oui, il y a dans les processus de développement des étapes, qui ne peuvent que s’enchaîner et donc pas avoir lieu en même temps. Il faut pour cette raison ne pas hésiter à affirmer que :

  • le temps nécessaire n’est pas linéairement divisible par le nombre de ressources affectées ;
  • l’augmentation du nombre de ressources accroit de manière exponentielle les tâches de coordination, et tend pour cette raison très  rapidement à annuler le gain de temps nominal (voire à l’inverser, c’est-à-dire à faire perdre plus de temps qu’on en gagne).

Selon les métiers et les projets, le point de la courbe où la tendance s’inverse est plus ou moins vite atteint, mais d’expérience on constate qu’il l’est toujours plus vite que ce qui serait nécessaire pour satisfaire des plannings irréalistes. Et le plus difficile, c’est de le faire comprendre aux « décideurs » (car les coupables ne sont pas toujours les clients, si si…)

D’où les 9 femmes. Ça n’est pas magique, mais ça peut avoir son poids dans une argumentation.

________________________________________________
  1. Note : quand un client dit « optimiser », il veut en fait dire « faire plus et/ou plus vite et/ou moins cher » ; en général les trois. []
  2. Et si on aime les visions absurdes, pourquoi ne pas imaginer 600 développeurs en batterie, et en même pas une heure, hop, emballé c’est pesé. []
  3. En fait, l’algèbre est un type de discours sur la réalité qui fonctionne bien, tant qu’on est dans le bon cadre. Ce qui importe est toujours de savoir d’où on parle. Ainsi, vous pensez que des parallèles ne peuvent pas se croiser ? Dans un plan, c’est tout à fait exact – mais sur une sphère, non. []

Tags : , , , , ,

7 commentaires sur “Le mythe de la parallélisation”

  1. tight :

    En tant que dév web, j’ai déjà utilisé cette citation. Effet garanti :)

    La citation ‘originale est de Fred Brooks, « Nine people can’t make a baby in a month » (retrouvé via http://t37.net/13-citations-droles-l-histoire-programmation.html et http://paultiseo.wordpress.com/2009/02/18/top-13-funny-software-development-quotes/ — d’autres citations inside)

  2. LaurentLC :

    Je me doutais bien que ça devait avoir à voir avec « The Mythical Man-Month »… Cela dit, j’aimerais bien avoir la référence exacte (chapitre, page, édition…), histoire de pouvoir faire une vraie citation, quoi (parce que « truc bidule – Machin Chose », ça n’en est pas une… :-))

    EDIT : trouvé dans Wikipedia : « quoiqu’elle figure dans le livre (p. 17 de la version anglaise) il est difficile de donner l’origine exacte de cette phrase (une citation proche est attribuée à Wernher von Braun) »

  3. NiKo :

    J’applaudis.

    Tu oublies un facteur déterminant dans la réalité de ton ecosystème : dans cette réalité, la vie économique des clients est régie par l’urgence, le buzz et l’avanthierisme (l’histoire retiendra que je viens d’inventer le concept, tiens).

    Et c’est là-dessus qu’il faudrait avant tout travailler : le Web – particulièrement concerné par ce qui émane de ton propos – est une structure à la fois émergente et constamment mouvante, créant dans les esprits parfois blinisants[1] de nos chères forces de vente désemparées par tant de révolution/jour le besoin impérieux de sauter dessus à tout prix et de faire redévelopper l’énième clone de Facevibes qui révolutionnera les usages de l’Internet tant il sera mieux pensé et pertinent.

    Il en va de leur raison de croire à leur utilité même, celle d’apporter des réponses rapides et immédiatement concrètes aux challenges de notre temps deux-point-zéro, et de faire rentrer du flouze même virtuel (on appelle ça « la valo » dans le jargon, ça pète !). Et accessoirement d’éviter l’affront ultime, celui de rater le train du buzz de niche potentiellement riche en pépettes virtuelles, voire pire : une citation dans Mashcrunch™. Quand c’est pas le fameux « extranet à cent mille euros » dont tout ce que le commanditaire attend est de fournir les services qu’on serait en droit d’attendre d’un « extranet à cent mille euros, quoi ».

    Bref, perso j’ai trouvé qu’un seul palliatif, qui vaut ce qui vaut : le long et parfois douloureux mélange de compassion, de fermeté et de pédagogie en phase d’avant-vente ; mais si on s’y tient, ça paye sur le long terme. Et ton billet me donne une nouvelle référence à pointer, je l’ajoute à mon artillerie ;)

    [1] j’ai longuement cherché un synonyme dans le vocabulaire existant, sans succès ;)

  4. Christophe :

    Certaines entreprises, se voient obligées d’augmenter leurs ressources lors des moments de « bourre ».
    C’est un phénomène très (trop) récurrent. Ils n’ont que trop rarement pensé qu’ajouter une ressource au milieu d’un projet fait perdre plus de temps qu’elle n’en gagne.

    Le temps de formation, établissement des règles, incorporation dans l’équipe existante, projet à faire comprendre, etc. sont plein de facteur trop souvent oublié par nos chers « décideurs ».

    Autant faire bosser son équipe plus longtemps (amener des matelas au bureau) dans les moments de bourre que de dépenser tout le budget du projet pour des personnes qui ne seront productifs qu’a la fin de celui-ci-

    Tout cela ne tient pas compte de la perle rare qui débarque et on se demande pourquoi on ne la pas engagée bien avant. :)

  5. julien :

    Je vais apprendre cet article (tu dis comme ça ?) par coeur, ça me servira (faire des bébés à 9 femmes pendant un mois, c’est brillant !)

    Mais euh, Niko, Laurent, c’est parce que vous parlez en code toute la journée que vous vous lâchez avec de jolis mots et de belles écritures le soir ? Hein ? Hein ?

  6. Twitter Trackbacks for Le mythe de la parallélisation > Do as i say, not as i do [do-as-i-say.com] on Topsy.com :

    […] Le mythe de la parallélisation > Do as i say, not as i do http://www.do-as-i-say.com/notes/2009/09/le-mythe-de-la-parallelisation – view page – cached #Do as i say, not as i do RSS Feed Do as i say, not as i do Atom Feed Do as i say, not as i do » Le mythe de la parallélisation Flux des commentaires Do as i say, not as i do Le sage montre le doigt, l’imbécile regarde la lune Spéc de comptoir — From the page […]

  7. MisterA :

    C’est pas possible, il est magique ce site, je vais me taper tous les billets d’un coup…

    En tout cas, cette façon de formuler les choses, avec les petits dérapages de temps en temps c’est tip top, et hop, au suivant.