Décoder les développeurs : enquête sur une profession à l’avant-garde

Celui qui raisonne comme au XXème siècle ne peut pas comprendre les développeurs. Ils sont les enfants terribles de la post-modernité, dans toutes ses contradictions : symboles du progrès technologique guidés par une conscience artisanale ; cols blancs à la mentalité ouvrière bien trempée ; libertaires contractualistes rêvant de communautés de métier ; geeks technophiles sévèrement critiques de la machine.

Cette profession si particulière (que j’exerce moi-même avec beaucoup de fierté) annonce-t-elle un nouvel âge du travailleur qualifié ? Elle pourrait, comme le dit l’auteur « dessiner les contours d’organisations différentes, qui valorisent l’autonomie, la collaboration et l’énergie créative » et estomper le brouillard du taylorisme. Pour comprendre comment, il est incontournable de se pencher sur les caractéristiques du métier de développeur.

Le col ciel : un artisan de l’information

Le rôle d’un développeur est de programmer des logiciels en écrivant des instructions exécutées par la machine : le code. Le travail de développeur est hybride entre la profession intellectuelle et l’artisanat. L’auteur utilise l’expression « cols ciel », jonction entre les « cols bleus » et les « cols blancs » pour les désigner.

Comme tout artisan, le développeur ne peut pas être un individualiste. Même celui qui travaille seul a besoin de ses pairs. De nombreuses communautés en ligne ou physiques permettent au développeur de se former, de résoudre des problèmes rencontrés par d’autres ou de partager du code, en dehors de tout cadre marchand. La plupart des logiciels qui forment l’écosystème informatique aujourd’hui sont libres et aucun développeur ne pourrait travailler en autarcie sans programmer des années pour afficher la moindre image. En un sens, tout développeur est un héritier, devant tout à ses prédécesseurs.

Celui qui travaille en équipe est étroitement lié à ses coéquipiers, car tous modèlent en même temps le produit. Tout comme un orchestre, une équipe doit d’abord apprendre à travailler ensemble et le moindre changement humain est handicapant, le temps d’apprendre à travailler avec le nouveau venu. La taille d’une équipe n’indique en rien sa productivité : si un développeur peut faire un programme en neuf mois, neuf développeurs n’arriveront pas forcément à faire un programme en un mois, sauf s’ils ont appris à œuvrer ensemble.

Les rapports des développeurs avec les managers sont souvent conflictuels : les deux mondes ne se comprennent pas. Des pratiques comme la programmation en binôme, la revue de code mutuelle, le développement piloté par les tests et les entraînements sur du code improductif sont courantes dans les équipes de développement mais constituent de vraies hérésies pour un successeur de Taylor. Plus frustrant : les managers ont rarement le dernier mot face aux développeurs. Le code peut être soumis à des mesures objectives de qualité et de fonctionnalité. Comme le menuisier peut renvoyer son chef à la mesure de l’équerre et du fil à plomb, le développeur peut prouver la conformité du programme aux spécifications par des tests.

Chaque morceau de code produit doit pouvoir être relu et édité facilement, il en va de la productivité de l’équipe. « Laisse le code plus propre que tu ne l’as trouvé » est une des devises des développeurs. Etonnamment, ceux qui suivent cette règle finissent par l’intérioriser en une sorte de conscience ouvrière : le travail bien fait devient un primat.

Une profession en devenir

L’auteur dresse un portrait particulièrement élogieux des développeurs. Je dois dire que je m’y retrouve presque intégralement, me définissant moi-même comme « artisan-développeur ». Hélas l’auteur laisse dans l’ombre la majorité de la profession, les « analystes-programmeurs » et autres « ingénieurs développement ». L’analyste-programmeur pratique le même métier que le développeur, mais avec une mentalité différente : il privilégie un logiciel rapidement fonctionnel à un travail léché et préfère tout planifier à l’avance dans d’énormes cahiers des charges. Alors que le développeur n’a pas d’autre plan de carrière que de devenir un maître, l’analyste programmeur ne rêve que d’être un chef de projet, puis de suivre le parcours balisé du management technique d’entreprise. Les deux composantes de la profession se méprisent mutuellement : les développeurs voient les programmeurs comme des professionnels peu consciencieux, ceux-ci rétorquent en accusant les développeurs d’utopisme et de caprice d’enfant gâté. Il est intéressant de voir qu’à technique égale, la culture est déterminante dans l’usage que l’on en fait.

L’auteur a pris le parti de décrire une avant-garde artisanale de la profession, appelée sans nul doute à grandir et à s’organiser dans les prochaines années. Les déboires de monstres logiciels comme Louvois (logiciel de paiement des soldes de l’armée française) donnent des arguments de choc aux développeurs. Les sessions d’entraînement de type « coding dojo », le désormais célèbre Agile Tour et l’Ordre des Développeurs naissant sont autant de projets extrêmement stimulants, annonciateurs d’un nouvel âge du travailleur qualifié.

Enzo SANDRE
Artisan-développeur

Références

Décoder les développeurs – Un livre sur une profession à l’avant-garde

Benjamin Tainturier – Préface d’Emmanuelle Duez – The Boson Project – Enquête sur une profession à l’avant-garde 138 pages – 19 € – G 56739

Livre gracieusement offert par l’éditeur Eyrolles.

Photo d’entête : atelier logiciel Arpinum

Un commentaire sur “Décoder les développeurs : enquête sur une profession à l’avant-garde

  1. Merci pour cette recension à valeur ajoutée ! Je me permets de poster en regard des premières impressions de néo-développeur candide : http://demsf.free.fr/index.php?post/2017/08/05/Codeur-junior . J’ai découvert depuis le dicton citant Phil Karlton « There are only two hard things in Computer Science: cache invalidation and naming things » ou la version de Roger Pate « There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors », qui correspondent parfaitement à mon expérience de débutant : la gestion du cache (ou plus modestement d’un tampon) restant le point difficile sur le bout de code que je développe 🙂

Laisser un commentaire

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