Le développement logiciel c'est comme une randonnée en montagne

Je suis un fana de montagne depuis des années, surtout de montagne l’été. C’est un univers absolument fantastique, très apaisant, et qui a le don de nous faire réfléchir sur nous-mêmes : comment ne pas se sentir minuscule et vulnérable face à une telle immensité ? Il parait que c’est la même chose en mer, à ceci près que la mer est en constant mouvement, alors que la montagne est – quasiment – immuable.

Fish Tail Mountain awakens

Photo Inaz

En préparant mes vacances dans les Alpes l’autre jour, je me suis rendu compte que la conception et le développement d’un logiciel avait énormément de points communs avec une randonnée en montagne, que l’on parte seul, ou à plusieurs, pour une journée ou une semaine, et c’est peut-être en partie ce qui me fait tant aimer ces deux disciplines.

Il y a d’abord les préparatifs de la randonnée : d’où allez-vous partir, où souhaitez-vous arriver, en combien d’étapes, et que voulez-vous accomplir pendant ces étapes ? Que vous ayez devant vous une roadmap et du tri de cartes, ou une carte d’état-major change finalement assez peu, le processus reste le même, jusqu’à l’étude du marché, c’est à dire de la région dans laquelle vous comptez vous aventurer.

Définir des étapes est fondamental. Chaque jour de marche doit avoir un but, chaque phase du cycle de développement doit avoir ses livrables, sous peine de partir dans un grand n’importe quoi. C’est une des raisons pour lesquelles j’apprécie les méthodes agiles, et notamment la méthode Scrum, qui définit des sprints de 15 jours à 3 semaines avec des livrables définis en début d’itération : chaque fois que nous entamons une étape, nous en connaissons l’arrivée, même si nous ne savons pas toujours comment elle va se dérouler. Évidemment, rien de tout cela n’est gravé dans la pierre, un jour de pluie vous forcera certainement à redéfinir une étape comme une difficulté technique vous amènera certainement à revoir certaines de vos ambitions à la baisse – à moins de rallonger votre développement.

Une fois planifié votre itinéraire, il est temps de préparer votre sac, vos provisions, et votre équipement, expliquer à vos compagnons où vous irez, et par où vous passerez, sans forcément rentrer dans les détails, puisqu’un éboulement ou un glissement de terrain peut vous amener à changer votre itinéraire en cours de route.

Et c’est parti. On marche des heures durant, on avance, on trébuche, on s’arrête un moment pour regarder derrière soi, et quand on a un doute, on regarde sa carte IGN (ou sur Google Map). En cours de route, toute l’équipe doit avancer au même rythme, afin de ne pas s’égarer ni arriver en retard (surtout les jours d’orage), et ceux qui vont plus vite que les autres ou sont moins fatigués peuvent les pousser pour leur venir en aide. Pour rester sur la méthode Scrum, chaque démonstration de fin de sprint s’apparente à ces soirées au refuge ou ces bivouacs durant lesquels on se pose le temps de regarder le chemin parcouru et d’envisager celui de l’étape suivante.

Et le TDD dans cette histoire ? J’en entends déjà qui se demandent comment je vais coller du TDD dans une randonnée en montagne.

Vous avez déjà fait du glacier, ou même de la varappe ? Développer sans tests est à peu près aussi intelligent que d’attaquer un glacier sans s’encorder. Si vous oubliez de vous encorder, vous avez toutes les chances de terminer dans une crevasse, ou au pied d’une paroi après une chute de 50m – ou plus. Si vous ne vous encordez pas correctement, et que vous ne vérifiez pas votre cordée régulièrement, vous risquez le même sort, mais avec des chances de vous en sortir. En revanche, si vous vous encordez avant de partir, et que vous vérifiez régulièrement que votre corde n’est pas abimée – c’est à dire que vos tests passent – vous êtes (presque) en sécurité.

L’arrivée au sommet est souvent la plus difficile ; après des jours de crapahutage, on a tendance à être fatigués, et un peu moins sur le qui vive. On veut se dépêcher d’arriver en haut, pour accomplir le chemin parcouru. Mais ce n’est pas terminé : une fois arrivés au sommet… il faut redescendre, le travail n’est pas terminé.

Publié le 10 juin 2010 à 06h00 Publié sous et Labels développement, montagne, analogie, randonnée, conception

À propos

Frédéric de Villamil

Je m'appelle Frédéric de Villamil, et quand je ne déploie pas ma mauvaise humeur et ma mauvaise foi sur le Web, je suis un super héros chargé de sauver le monde. Vous pouvez me suivre sur Twitter.

  1. Joseph le 10 juin 2010 à 11h48

    Bonjour, J’aime beaucoup votre métaphore :)

    L’intervention d’hommes des bois psychotiques à la manière de “la colline à des yeux” pour matérialiser le client aurait été un plus narratif mais ça manque peut-être de réalisme :p

    Cordialement,

  2. Pierre le 10 juin 2010 à 18h39

    Belle image que l’utilisation de la randonnée pour illustrer le développement logiciel, bravo !

    J’aime aussi beaucoup la randonnée de moyenne montagne (habitant les Alpes c’est plus facile ^^), même si je prend peu l’occasion de sortir en montagne. :)

    Merci encore pour ces articles de qualités, je ne commente pas toujours mais je les lis tous ! Pierre

Réagir à Le développement logiciel c'est comme une randonnée en montagne

Afin de maintenir le niveau global de ce site, les commentaires font l'objet d'une politique de modération qualitative basée sur des critères non écrits et totalement subjectifs, donc injustes.

Les commentaires écrits en langage SMS, inutiles, déplacés, injurieux ou relevant du spam seront systématiquement supprimés sans avertissement préalable.

Les trackbacks sont fermés pour cause de spam.