LE PARADOXE PYTHON
OriginalAoût 2004
Dans une conférence récente, j'ai dit quelque chose qui a choqué beaucoup de personnes : qu'on pourrait trouver 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. C'est un travail énorme d'apprendre un nouveau langage de programmation. Et les gens n'apprennent pas Python parce que ça leur donnera un emploi ; ils l'apprennent parce qu'ils aiment vraiment 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 mieux, j'appellerai le paradoxe Python : si une entreprise choisit d'écrire son logiciel dans un langage comparativement ésotérique, elle pourra embaucher de meilleurs programmeurs, car elle n'attirera que ceux qui se sont donné la peine de l'apprendre. Et pour les programmeurs, le paradoxe est encore plus prononcé : le langage à apprendre, si l'on veut avoir un bon emploi, est un langage que les gens n'apprennent pas seulement pour avoir 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 se fait ici : ce sont exactement les entreprises pour lesquelles les programmeurs aimeraient le plus travailler. Google, par exemple. Quand ils annoncent des postes de programmation Java, ils veulent aussi de l'expérience en Python.
Un de mes amis qui connaît presque tous les langages largement 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 futile pour choisir un langage plutôt qu'un autre. Mais ce n'est pas aussi futile que ça en a l'air : quand on programme, on passe plus de temps à lire du code qu'à en écrire. On déplace des blocs de code source comme un sculpteur le ferait avec des blocs d'argile. Donc un langage qui rend le code source laid est exaspérant pour un programmeur exigeant, comme de l'argile pleine de bosses 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 le genre de laideur dont je parle. La vraie laideur n'est pas une syntaxe rude, mais devoir construire des programmes avec les mauvais concepts. Perl peut ressembler à un personnage de dessin animé qui jure, mais il y a des cas où il dépasse Python sur le plan conceptuel.
Jusqu'à présent, en tout cas. Les deux langages sont bien sûr en mouvement. Mais ils partagent, avec Ruby (et Icon, et Joy, et J, et Lisp, et Smalltalk) le fait qu'ils sont créés par, et utilisés par, des gens qui se soucient vraiment de la programmation. Et ce sont généralement ceux qui le font bien.