Le paradoxe de Python
Août 2004
Lors d'une récente conférence, j'ai dit quelque chose qui a contrarié beaucoup de monde : que l'on pouvait obtenir des programmeurs plus intelligents pour travailler sur un projet Python que sur un projet Java.
Je ne voulais pas dire par là que les programmeurs Java sont stupides. Je voulais dire que les programmeurs Python sont intelligents. Apprendre un nouveau langage de programmation demande beaucoup de travail. Et les gens n'apprennent pas Python parce que cela leur garantira un emploi ; ils l'apprennent parce qu'ils aiment sincèrement programmer et ne sont pas satisfaits des langages qu'ils connaissent déjà.
Ce qui en fait exactement le type de programmeurs que les entreprises devraient vouloir embaucher. D'où ce que, faute de meilleur nom, j'appellerai le paradoxe de Python : si une entreprise choisit d'écrire son logiciel dans un langage relativement ésotérique, elle pourra embaucher de meilleurs programmeurs, car elle n'attirera que ceux qui se sont suffisamment souciés de l'apprendre. Et pour les programmeurs, le paradoxe est encore plus prononcé : le langage à apprendre, si l'on veut obtenir un bon emploi, est un langage que les gens n'apprennent pas simplement pour obtenir un emploi.
Seules quelques entreprises ont été assez intelligentes pour s'en rendre compte jusqu'à présent. Mais il y a aussi une sorte de sélection qui s'opère ici : ce sont exactement les entreprises pour lesquelles les programmeurs aimeraient le plus travailler. Google, par exemple. Lorsqu'ils annoncent des postes de programmeurs Java, ils recherchent également une expérience Python.
Un de mes amis qui connaît presque tous les langages couramment utilisés utilise Python pour la plupart de ses projets. Il dit que la principale raison est qu'il aime l'apparence du code source. Cela peut sembler une raison frivole de choisir un langage plutôt qu'un autre. Mais ce n'est pas aussi frivole que cela en a l'air : lorsque vous programmez, vous passez plus de temps à lire du code qu'à l'écrire. Vous manipulez des blocs de code source comme un sculpteur manipule des blocs d'argile. Ainsi, un langage qui rend le code source laid est exaspérant pour un programmeur exigeant, tout comme de l'argile pleine de grumeaux le serait pour un sculpteur.
À la mention de code source laid, les gens penseront bien sûr à Perl. Mais la laideur superficielle de Perl n'est pas celle que je veux dire. La vraie laideur n'est pas une syntaxe d'apparence dure, mais le fait de devoir construire des programmes à partir de mauvais concepts. Perl peut ressembler à un personnage de dessin animé jurant, mais il y a des cas où il surpasse Python conceptuellement.
Jusqu'à présent, en tout cas. Les deux langages sont bien sûr des cibles mouvantes. Mais ils partagent, avec Ruby (et Icon, et Joy, et J, et Lisp, et Smalltalk), le fait qu'ils sont créés et utilisés par des personnes qui se soucient vraiment de la programmation. Et ce sont généralement celles qui le font bien.