Dans un ancien post sur son blog, Raymond Hettinger s’attristait de voir les devs lire de moins en moins le code source. Bien qu’il datait de plus de 4 ans, je n’ai pas pu m’empêcher de répondre. Puis je me suis dis que la traduction aurait tout à fait sa place ici.

La cause de ce phénomène est très culturel. J’enseigne à mes étudiants que si ils veulent en savoir plus sur le fonctionnement d’un bout de code d’un module, ils peuvent juste faire :

import module print ( module.__file__ [ :- 1 ] ) import module print(module.__file__[:-1])

Puis ouvrir le fichier dont ils obtiennent ainsi le chemin dans leur éditeur préféré. Cela marche en tout cas pour tous les modules en pur Python.

En fait, si vous utilisez ipython, vous pouvez même faire :

! votreediteur module.__file__ [ :- 1 ] !votreediteur module.__file__[:-1]

Et ça l’ouvrira directement. Par exemple :

! subl module.__file__ [ :- 1 ] !subl module.__file__[:-1]

Malgré cette information, ils ne le font jamais.

En partie parce qu’ils ont peur.

En partie parce que plus personne n’enseigne cet état d’esprit à l’université ou dans les tutos.

Mais essentiellement parce que toute autre méthode est plus productive, donc ils sont formés à utiliser à peu près tout sauf regarder le code source.

Chercher sur Google, demander sur un site d’aide, sur IRC, une mailling list, à un collègue, brute forcer tous les snippets qui traînent en les copiant/collant à la chaîne, et même, Dieu nous garde, lire la doc. Tout cela est plus facile et rapide que de lire le code source, parce lire les sources part du principe qu’on comprend comment tout marche.

Il y a aussi le fait que lire le code source il y a 30 ans était compétitif avec les autres options de consultation, tandis qu’aujourd’hui de nombreux devs ont 4 ordis chez eux avec un accès haut débit à la connaissance du monde entier.

Et bien sûr, ils se sont habitués à la vitesse. Et plus que ça, leurs enseignants/boss s’y sont habitués, et leur comportement communique implicitement cette attente, ce qui amène à ne pas lire les sources.

Cela m’a pris 5 ans de programmation pro avant de commencer à regarder les sources par moi-même de manière régulière. J’y ai été forcé, ayant beaucoup travaillé en Afrique et en Asie où avoir l’info hors ligne est un avantage.

Malgré cela, je ne le fais que pour le code Python, car mes talents en C sont faibles et je n’ai jamais pris le temps de télécharger les fichiers C. Je sais pertinemment que la programmation C est un atout important à avoir. Je souhaite l’apprendre. Et Rust, et Erlang, et Haskell, et l’espagnol et m’améliorer dans le gestion des CSS, l’administration système, la sécurité des systèmes, et essayer Riak, et OpenStack… Bien entendu, ça c’est juste la partie technique, j’ai une vie très pleine à côté.

Car voilà la seconde partie de la vérité : l’époque où on pouvait maitriser tout le champ de connaissance en informatique est révolue.

Je passe une HEURE, tous les jours, juste pour me mettre à jour dans mon ridicule petit champ d’expertise, et je n’ai même pas le temps de tout lire, encore moins de pratiquer. C’est 300 heures par an juste pour garder la tête hors de l’eau.

Maintenant, imaginez les débutants. Ils débarquent dans ce monde avec tellement de langages, de libs, de frameworks, d’outils, de technos ! Tellement de couches et de niveaux d’indirection ! Ils vont essayer d’obtenir la réponse aussi facilement qu’ils le peuvent, parce que la somme de connaissances accumulées qui permettent de lire les sources (ce n’est pas un acte simple, c’est une illusion qui bercent ceux qui sont devenus assez bons pour le faire sans effort), cette montagne, nous avons eu beaucoup plus de temps pour l’escalader qu’ils en ont. Et malgré cela, ils ont plus de choses que nous à apprendre.

Or le temps ne s’arrête pas pour autant, et l’expérience du marché se transforme. Les clients s’attendent aujourd’hui à des expériences logicielles bien plus complexes: designs léchés, animations, vitesse, connectivité, synchronisation, notification en temps réel, interconnexion de services, Web APIS, recherche intelligente, présentation contextuelle et personnalisée de l’information, traitement de médias riche… Et ça c’est juste pour des produits app/Web, car chaque marché a vu les attentes grandir.

Donc on attend d’eux qu’ils livrent tout ça, car les concurrents le font. Mais sans les y former, et si possible sans les payer trop cher. Et ASAP, évidement.

Les gens que je forme vont chercher un moyen d’obtenir le résultat dont ils ont besoin aussi vite que possible, avec aussi peu d’effort que possible.

C’est triste, mais je comprends parfaitement.