Faire du logiciel, du développement, c’est de l’artisanat

Je déjeunais ce midi avec un ami de longue date.

On échange souvent sur le développement logiciel (entre autre sujets, je vous rassure 😉 )

Notre conviction commune, c’est que faire du logiciel, du développement, c’est un processus artisanal et pas industriel.

Je me suis déjà exprimé là dessus.

Dans la pratique, dans mon (mes ?) métier(s), quand je dis ça, je sens bien que c’est « contre productif » :

  • Les boites qui vendent du « processus industriel » à tour de plaquettes commerciales se sentent agressées, et se défendent en m’agressant à leur tour ;
  • Les clients qui connaissent mal tout ça (et c’est bien normal, ce n’est pas leur métier) se disent que l’artisanat, ça fait moins pro que « processus industriel ».

D’un point de vue rationnel, pourtant, c’est assez basique :

Un processus industriel, cela consiste à fabriquer un produit, avec un processus bien défini, qui permet d’accélérer la production, et de multiplier le nombre de produits fabriqués, en garantissant que tous les produits sont bien conforme au cahier des charges, tout cela avec un coût maîtrisé.

Cela passe par une séparation très forte, entre différents métiers.

L’ingénieur, qui conçoit le processus, décompose la chaîne de fabrication, et conçoit des machines, qui permettront de reproduire les mêmes actions, rapidement et sans faute.

De l’autre côté de la chaîne (c’est le cas de le dire), l’ouvrier derrière la machine a un travail répétitif, travail qui est d’ailleurs de plus en plus souvent remplacé par des machines, des robots.

Dans le monde du logiciel, cela n’existe pas, et, pire, quand on tente d’appliquer de telles méthodes, on arrive à des catastrophes.

Au final, ce qui marche, au contraire, c’est le recrutement des meilleurs développeurs, et de leur confier des missions ou ils pourront avoir le maximum d’autonomie.

On est donc bien dans un processus artisanal, ou ce qui compte, c’est la qualité de l’artisan.

Un exemple parmi des centaines :

Apple a eu besoin de 60 personnes pour créer iOS.

Motorola, qui essayait de faire la même chose, avait mis sur les rang 1500 personnes.

Qui a réussi ?

On est donc dans une industrie ou ce qui compte, c’est la grande qualité de quelques personnes clés. Et je ne parle pas des managers, mais bien des développeurs !

Quand tu veux Yves, pour poursuivre ce passionnant sujet 😉

8 commentaires

  1. Dans le monde du e-commerce ne sommes-nous pas déjà dans la phase d’industrialisation ? Si nous prenons des offres comme Prestabox ou Magento Go par exemple, cela revient à développer un produit (un site e-commerce) en ayant automatisé la plupart des processus. À un autre niveau, Magento permet de gérer des tests automatisés.

    Mais il reste vrai qu’une grande partie des projets e-commerce restent gérés par des artisans. Du point de vue du client un « processus industriel » c’est rassurant, on se dit que « si ça a marché avec les clients précédents, ça se passera forcement bien avec moi », mais dès lors qu’une spécificité apparait, ça peut vite devenir le casse tête alors qu’un (bon) artisan pourra faire preuve de souplesse.

    Apple a eu besoin de 60 personnes, peut-être car ils avaient la volonté d’avoir une grande souplesse. Ils ne savaient pas forcément vers quoi ils allaient et devaient se douter qu’ils seraient confrontés à des problèmes jamais vus et dans cette situation on a plus besoin de bons artisans ayant de l’expérience, que de bons ouvriers capables de réaliser une tâche correctement.

  2. @Nicolas> Si on parle d’utiliser un moteur e-commerce, alors oui, on n’est pas dans le même sujet.

    Mais si on parle de développement, même si c’est, par exemple, la mise en oeuvre d’une solution e-commerce open source, alors on est bien dans le sujet.

    @Julien> Bonjour Julien 🙂

  3. Complètement en phase avec ton analyse 😉
    C’est ce que prône le mouvement software-craftsmanship :
    http://blog.xebia.fr/2011/01/31/software-craftsmanship-en-pratique/

    C’est sur que c’est beaucoup plus motivant pour un développeur d’être considéré et d’avoir l’autonomie d’artisan professionnel, que de devoir effectuer des tâches répétitives dans un processus trop industriel.
    Il y’a quelques années l’heure était à l’industrialisation à outrance avec génération de code et recours au développement offshore pour limiter les coûts. On ne peut donc que se réjouir de l’émergence d’un tel mouvement 😉

  4. En fait, dans le processus de fabrication il y a des niveaux de maturité (modèle quantique progressif)
    Il se trouve qu’un modèle de maturité fiable présente des niveaux dont certains ont des propriétés qui se ressemblent et de ce fait certains observateurs qui n’ont pas atteint un niveau N peuvent penser qu’il s’agit du N-2 ayant certaines propriétés communes

    Dans le cadre de la fabrication, il y a :
    – Artisanal (axé sur les savoir-faire)
    – Industriel (axé sur les produits)
    – Agile (axé sur les services)
    – Ouvert (axé sur les échanges, communautés)
    – Diffus (axé sur les usages, les situations)

    Il est vrai que le mode agile présente des caractéristiques voisines avec le mode artisanat (capacité à modifier la fabrication au fil de l’eau par exemple, rôle primordial de la compétence) mais il s’agit d’un mode de 2 niveaux de maturité supérieur

    De même entre industriel et ouvert (cas de l’open source communautaire) il y a des caractéristiques communes

    Plus on monte dans le modèle de maturité plus il est nécessaire de disposer de capacité d’abstraction, de capacité à manier la complexité, mais plus on fabrique de façon rapide, convergente, adaptée et plus on a le plaisir de le faire avec des hommes brillants

  5. @remyma m’a devancé, je voulais parler de softwarecraftsmanship

    Je diverge cependant sur le constat:j’ai fait de la génération de code, je continue d’en faire, et pour moi ça reste de l’artisanat.
    Attention, métaphore audacieuse: le charcutier fabrique un jambon et le débite en tranche pour le vendre.
    La qualité de l’artisan réside-t-elle dans le choix des ingrédients, de la durée de cuisson, de la température OU dans le fait que le jambon soit débité au couteau plutôt qu’à la trancheuse?

    La génération de code, c’est modéliser un processus dans un descripteur (UML par exemple) plutôt que dans des lignes de code, ça ne change pas grand chose à la qualité intrinsèque (qui est dans ce cas fonction de la qualité de la modélisation et des cartouches de génération).

    Les partisans de Play, Rooo et autres Symfony sont des utilisateurs de générateurs de code, sans forcément le savoir….

    Dans un autre domaine, j’ai une grand admiration pour les ouvriers qui conçoivent et fabriquent des moules de pièces métalliques (leur nom est… modeleurs 🙂 ), par exemple automobiles. C’est un procédé encore très manuel, malgré l’émergence des machines à commande numérique et autres imprimantes 3D. Ces moules servent ensuite à fabriquer des milliers de pièces en série: le modeleur n’est il pourtant pas un artisan détenteur d’un savoir-faire très pointu?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *