[Ceci est la première partie d’un compte-rendu de lecture (augmenté de digressions et de jeux de mots pourris, évidemment) sur l’essai Geek Sublime: Writing Fiction, Coding Software, de Vikram Chandra. Je me concentre ici sur l’aspect sociologique du geek ; un deuxième volet est prévu sur la notion de beauté/d’élégance dans le code… et son absence ; et sûrement un troisième sur la critique littéraire indienne avec laquelle le tout est croisé.]
Il y a geek et geek
C’est quoi, un geek ? Pour mon père, on est geek quand on a un blog, un compte Twitter et qu’on passe plus d’une heure par jour sur son ordinateur – je suis donc une indécrottable geekette à ses yeux. Ce qui n’est rien pour le bidouilleur de code. Lequel, à son tour, sera pris de haut par un architecte (parce que oui, on parle d’architecture pour la structure d’un programme). Vikram Chandra nous propose une petite typologie du geek en trois persona.
Tout d’abord, il y a Mel, qui comprend tellement bien la machine qu’il peut programmer en langage machine. En gros, on peut lui mettre des 0 et des 1 à défiler comme les $ dans les yeux de Picsou. Mel, c’est un vieux de la vieille, une espèce en voie de disparition. Typiquement, mon prof de C à Paris 7 est un Mel ; on a parlé de trucs tellement bas niveau qu’on n’a pas eu le temps d’arriver jusqu’aux pointeurs. *oups*
Après Mel, nous avons Einstein, expert en architecture, à la fois bas et haut niveau : il sait comment fonctionne la machine et en tient compte, voire en tire parti, dans son code, qui sera bien bâti et pourra être facilement maintenu. Einstein, typiquement, c’est Palpatine (ouais, je couche avec une rockstar dans son domaine ; jalousez). Palpatine = new.Einstein() (un homme-objet, hihi)(pardon, je m’égare)
Et puis, à côté de Mel et Einstein, vous avez Mort, qui bricole en chopant des trucs à droite à gauche. Le code de Mort, c’est du patchwork : il peut être fonctionnel, voire vraiment efficace, mais ne sera jamais du sur mesure (clairement, la haute couture est l’affaire d’Einstein). Mon année d’initiation au code ferait de moi une Mort-padawan ; j’en sais juste assez pour savoir que je ne pourrai jamais devenir une Einstein, et j’avoue, du coup, avoir moyennement envie de me casser le cul à devenir une Mort. « The vast majority of programmers in the world today are Morts » nous dit Vikram Chandra, qui s’inclut dedans (p. 49). Les Einsteins méprisent généralement les Morts, mais les sous-estimer serait une erreur, car ils sont légion. L’armée des Morts peut être vue comme une bonne chose, le signe d’une (relative) démocratisation du code, aussi bien que comme une plaie pour l’humanité, car ils produisent du code dégueu, que Palpatine appelle généralement du « code d’Indien » (après avoir vérifié qu’il n’y avait a priori aucun Indien parmi ses pioupious). Vikram Chandra propose en filigrane une explication à cet étonnant relent de racisme chez notre Einstein humaniste…
Le geek indien
Vikram Chandra rapporte l’anecdote d’un ami indien travaillant aux États-Unis, à qui l’on reprochait son humilité et à qui l’on conseillait : « walk smart », avec plus d’assurance. Ce reproche d’humilité paraît aberrant à l’auteur, pour qui les étudiants indiens en informatique ont toujours paru insupportablement prétentieux… Incompréhension culturelle : le développeur indien type ne dit jamais non ; cela fait partie d’une culture de face-saving, que ne parviennent pas à saisir les Américains, lesquels, cash, passent en retour facilement pour malpolis. L’endroit de la médaille, c’est que, si on lui reproche de ne pas avoir assez la niaque, on reconnaît au développeur indien une qualité essentielle : la patience. « Indian programmers are also tolerant enough to do the ‘shit’ work. That is: going through somebody else’s code. » (N. Sivakumar, cité p. 86) Le revers, c’est que, dans ces conditions, les programmeurs indiens (tout comme leurs collègues chinois) se retrouvent avec un champ de compétences plus élargi mais plus superficiel, prennent moins d’initiatives et sont moins susceptibles d’innovations que leurs homologues américains, qui ont un champ de compétences plus réduit mais qu’ils maîtrisent à fond. D’où, au final, l’impression d’avoir des spécialistes d’un côté, et une main d’œuvre polyvalente de l’autre – ce qui est malheureusement assez cohérent avec le système éducatif hérité du colonialisme. Les universités technologiques mises en place par le système britannique préparaient en effet à un travail de subalterne. Un étudiant qui voulait étudier les technologies les plus modernes devait partir à l’étranger ; le brain drain vers le MIT était tel que certains professeurs ont fini par refuser de faire des lettres de recommandation… Lors de la décolonisation, des IIT (Indian Institute of Technologies) ont été mis en place mais apparemment, les résultats ne seraient pas encore tout à fait à la hauteur des attentes – pour la masse des programmeurs lambda, rappelle l’auteur. Car des Einsteins, on en trouve peu, mais un peu partout ; l’enjeu, c’est d’avoir des Morts d’un bon niveau. D’ailleurs, quand on vous dit que la France manque de programmeurs, ce n’est qu’à moitié vrai : on manque surtout d’Einsteins, c’est-à-dire d’architectes.
Le geek qui ne savait pas comment fonctionnait un ordinateur
Si les Morts ont tendance à produire du code dégueu, it’s « because they don’t know how the machine really works, and, what’s worse, more Morts don’t want to know » (p. 50) Comment diable peut-on avoir des informaticiens professionnels qui ne savent pas comment fonctionnent les ordinateurs ? C’est qu’il y a un monde entre le langage binaire et les langages haut niveau dans lesquels on programme, qui possèdent une grammaire et peuvent être lus. Chaque couche est ajoutée pour masquer la complexité de la précédente : le langage binaire (0, 1) est repackagé en langage assembleur (8B, EC, bref, de l’hexadécimal), lequel est repackagé en langage haut niveau (avec non plus des chiffres, mais des mots, truc de ouf). Le passage d’une couche à l’autre est très coûteuse en ressources ; l’unique raison pour laquelle on ne s’en aperçoit pas, c’est que les composants augmentent considérablement en puissance chaque année (dans l’esprit des développeurs pressés, plus de puissance signifie manifestement une obligation moindre d’optimiser le code – d’où que les ordinateurs, toujours plus puissants, finissent toujours par ramer autant).
Avec toutes ces couches, du coup, il est assez facile d’oublier les 0 et les 1, et surtout, surtout, d’ignorer comment les 0 et les 1 peuvent avoir à la fois être matériel et logiciel. Vikram Chandra prend ainsi le temps d’un chapitre pour nous expliquer le passage du hardware au software, via les logical gates, « portes logiques ». Avec des 0 et des 1, on peut faire des trucs aussi délirant que des additions et des soustractions dont les mécanismes, tenez-vous bien, peuvent être reproduits mécaniquement. 0 et 1, c’est false et true, c’est éteint et allumé, c’est off et on, etc. Voilà toute la magie. Car si j’ai appris un truc au contact de Palpatine, c’est qu’il n’y a jamais de magie. À chaque fois que vous êtes tentés de voir de la magie quelque part, remplacez mentalement l’incantation par un travail laborieux ; plus vous l’imaginerez laborieux, plus vous aurez de chances d’être proche de la réalité. (Oui, je sais, heureusement que je ne suis pas RH dans l’IT.)
The bug slayer
D’où vient, se demande Vikram Chandra, que le développeur se représente comme un bug slayer alors que, si l’on considère la minutie et la patience déployées, il serait bien davantage un bug sweeper ? On pourrait y voir une sorte de compensation, comme lorsqu’un complexe d’infériorité s’inverse en complexe de supériorité. Mais pourquoi cette revendication prend-t-elle une forme agressive alors qu’elle est parfaitement explicitée, par exemple, comme on l’a vu au début, dans la métaphore du code comme art ? L’hypothèse de Vikram Chandra, étayée de multiples études et citations, est que l’agressivité qui règne dans le monde des développeurs n’est pas une vérité universelle, mais un fait culturel que l’on pourrait rattacher à la mythologie américaine du Far West et du cowboy. Le plus fort, c’est celui qui écrase l’autre ; le meilleur, c’est un killer : un lien s’est insidieusement établi entre testostérone et qualification. Le code est devenu un truc de mec, de vrai, pas de mauviette, et l’agressivité, une manière de gagner le respect de ses paires – fusse contre-productif. Vikram Chandra note ainsi que l’agressivité entre développeurs est particulièrement visible dans le mouvement open-source, pourtant fondé sur les contributions volontaires – tant pis si cela fait fuir des contributeurs potentiels…
//Le côté fun de la chose, quand même, c’est que la virulence générale donne des citations pas piquées des hannetons… //
Geek and gender : où sont les geekettes ?
La geekette vintage
Vikram Chandra lie la problématique de la parité à la mythologie guerrière du milieu, et propose là une hypothèse expliquant pourquoi la programmation est devenue un milieu essentiellement masculin. Devenue parce que, oui, il y avait des femmes aux débuts de la programmation, quand programmer était encore un synonyme de câbler (les ordinateurs n’étaient pas encore multi-tâches ; il fallait effectuer des changements physiques pour que la machine réalise des opérations logiques différentes). Les femmes réalisaient alors les schémas pensés… par les hommes. Des secrétaires de la programmation, en quelque sorte. Pas de quoi crier à la parité, donc, même si certaines ne se limitaient pas à leur rôle d’exécutantes : Vikram Chandra rapporte l’histoire de Betty Holberton qui, après avoir insisté sur le caractère humain et donc faillible des branchements opérés, a obtenu que soit implémenté une fonctionnalité d’arrêt dans les programmes (si j’ai tout bien compris ; j’avoue ne pas être très sûre de mon anglais sur ce coup-là).
Lorsque les programmeurs ont commencé à obtenir la reconnaissance de leur travail intellectuel, on s’est dit que le moyen le plus sûr de recruter des développeurs de type Einstein était de les recruter sur leurs compétences mathématiques et logiques. Et, à l’époque, les personnes les plus susceptibles d’avoir reçu une formation académique dans ces domaines sont évidemment des hommes. La standardisation du processus de recrutement et la reconnaissance de la programmation comme métier intellectuel a écarté les femmes à une époque où elles étaient, dans l’ensemble de la société, cantonnées à des rôles subalternes.
En bref, ce n’était pas brillant, mais pas franchement pire que dans d’autres secteurs. Pourquoi, alors, y a-t-il toujours aussi peu de filles dans ce secteurs-là (alors que, par exemple, les amphis de droit sont pleins de futures avocates) ? Les critères de sélection choisis ont abouti au recrutement d’hommes matheux et asociaux, caractéristiques qui ont fini par devenir des prérequis. Inconsciemment, la logique s’est inversée : pour être (bon) développeur, il faut être (un homme) asocial et matheux. Et il n’est pas totalement absurde de supposer que horde masculine a répondu à la stigmatisation dont elle a fait l’objet en en rajoutant dans la testostérone dont on la soupçonnait de manquer (dans les teen movies, le nerd, souvent incarné par un maigrichon ou un bedonnant, et le beau gosse sportif, souvent présenté comme benêt, ne forment à peu près jamais une seule et même personne…). Nous voilà revenus aux bug slayers des temps présents.
Culture dominante, culture invisible
« The rudeness of the elite programmers – the explaination goes – is actually the necessarily blunt, no-bullshit-style of problem-soving engineers who value results over feeling » (p. 67). Dans ce système, c’est la valeur du code qui a de l’importance, indépendamment de l’origine nationale ou ethnique du programmeur. La culture ne serait pas pertinente ; elle serait même inexistante : tout serait le résultat d’un processus naturel et, selon cette logique, s’il n’y a pas de femme dans le milieu, c’est qu’elles savent pas ou ne veulent pas coder. Signe d’une culture dominante : elle réussit à devenir invisible ou, du moin, à se présenter comme le résultat d’un processus naturel.
WASP n’est pas geekette
Vikram Chandra rapporte un fait curieux pour nous occidentaux : alors que l’Inde n’est pas franchement réputée pour être un modèle en terme de parité, le pourcentage de femmes développeuses y est plus élevé qu’aux États-Unis. Le développeur n’y a pas du tout la même image : loin du stéréotype de geek/hacker, il est vu comme une personne bosseuse, intelligente, méticuleuse, qui aide ceux qui en ont besoin et participe volontiers aux activités sociales, sport compris (p. 81). Du coup, les filles sont plus enclines à envisager ce secteur comme discipline dans lequel faire valoir leurs compétences intellectuelles. Sans compter qu’en Inde, ajoute l’auteur, travailler dans un bureau est vu pour les femmes comme un moyen de se protéger du monde extérieur. Cette corrélation entre image du geek et taux de féminisation serait corroboré par des études menées en Iran, à Hong Kong, à Taïwan… et même, par la négative, aux États-Unis : en effet, les filles d’origine étrangère sont statistiquement plus nombreuses que les filles WASP (enfin « Non-Hispanic white girls »)… Citant Varma, Vikram Chandra avance donc que l’inégalité des sexes dans la programmation aux États-Unis semble être spécifique à ce pays et ne pas être un phénomène universel comme on a coutume de le penser. Vu qu’on a aussi le problème en Europe, il faudrait quand même élargir à l’Occident, mais l’hypothèse comme quoi le faible taux de femmes dans la profession est corrélée à l’image du programmeur viril, agressif, héritée de l’imaginaire américain du Far West, est pour le moins intéressante – surtout, donc, quand on observe que cette vision-là du geek ne s’est pas propagée partout.
// Parenthèse franco-française nombriliste
J’ai aperçu sur Twitter quelques louables tentatives pour promouvoir les femmes dans le numérique, mais je reste dubitative sur l’efficacité des chartes graphiques rose pétant… On ne masquera pas l’image négative d’un univers geek quasi-exclusivement masculin avec un coup de peinture, mais plutôt en donnant vie à une nouvelle image globale. Pour changer la composante genrée du cliché du geek comme mec matheux et asocial, il faudrait je crois changer les autres également. Faire connaître la sociabilité et la culture geek dans sa diversité, au-delà des mangas et des jeux vidéos, avec ses films, ses livres (je ne me suis toujours pas remise de la preuve de l’inexistence de Dieu par Dieu lui-même dans The Hitchhiker’s Guide to the Galaxy), mais aussi et surtout son histoire et ses modèles féminins. Parce que oui, il y en a ! Et pas des moindres : le premier programme informatique a été écrit par Ada Lovelace. Or, en-dehors des geeks, je ne crois pas que grand monde ait ouïe dire de l’existence de cette pionnière… Ni de Grace Hopper, qui a conçu le premier compilateur (le truc qui transforme un programme écrit avec des mots en chiffres compréhensibles par la machine).
Il pourrait également être utile d’y aller mollo sur la culture de warrior / survivor entretenue et même revendiquée par des écoles comme Épita/Épitech ou 42. Le côté koh-lanta de la piscine m’aurait probablement découragée de faire l’école 42 (même si je comprends son utilisation pour marquer la rupture d’avec un enseignement traditionnel et récupérer les élèves qui ne s’y sentaient pas bien) : les blagues de cul des mecs et le travail à outrance ne me dérangent pas si et seulement si j’ai dormi plus de 7h dans mon lit et pris un petit-déjeuner consistant. On peut être intelligent et motivé mais pas très résistant physiquement. Ou simplement aimer son confort. Alors votre devise officieuse de « Dormir, c’est tricher », vous pouvez vous la mettre où je pense.
Enfin, surtout, surtout, il faudrait dire haut et fort que la programmation (sauf dans certains cas bien précis mais pas majoritaires), ce ne sont pas des maths, mais de la logique. On se fout que vous sachiez résoudre des équations du second degré si vous kiffiez les énigmes du Journal de Mickey. Un langage de programmation, c’est comme son nom l’indique un langage. Captain obvious, je sais. Rappeler que la composante linguistique est essentielle dans la programmation ne serait pourtant pas une mauvaise idée quand on sait que les classes de L sont quasi-exclusivement féminines. Il faut venir chercher les filles là où elles sont ! *Comme par hasard*, on était bien plus proche de la parité dans mon master d’informatique réservé aux étudiants issus des sciences humaines que dans les classes d’ingénieurs issus de S où Palpatine donne cours… Je regrette aujourd’hui de ne pas avoir su plus tôt qu’il y a dans l’apprentissage des langages de programmation un plaisir intellectuel similaire à l’apprentissage des langues étrangères ou au décorticage d’une phrase latine (j’ai d’ailleurs une amie passionnée de lettres classiques qui a assez naturellement bifurqué vers la linguistique informatique). Il me semble retrouver dans l’architecturation du code un plaisir conceptuel et créatif similaire à l’ordonnancement des idées dans une dissertation de philosophie, par exemple… On voit les choses prendre forme. Et bonheur supplémentaire : ça marche ou ça ne marche pas ; on le voit immédiatement.
Alors oui, il y sûrement une question de légitimité (est-ce que je me sens capable de faire ces études ?), mais je crois qu’on néglige pas mal la question de l’appétence (ai-je envie de faire ces études ?), qui me semble bien plus efficace pour parer à la pénurie de femmes dans le numérique. En tant que première de la classe un brin arrogante, je n’aurais pas eu besoin qu’on me donne confiance mais qu’on me donne envie… Je n’ai tout simplement jamais songé à m’orienter vers l’informatique : c’était dans mon esprit un truc de matheux et les mathématiques me donnaient beaucoup moins de plaisir que les lettres ; j’ai préféré aller en L, au grand dam de mon professeur de physique… et de ma prof de français, manifestement plus élitiste encore que littéraire.