LE PARADOXE PYTHON
OriginalAoût 2004
Dans une conférence récente, j'ai dit quelque chose qui a contrarié beaucoup de gens : que vous pourriez obtenir des programmeurs plus intelligents pour travailler sur un projet Python que vous ne pourriez en obtenir pour travailler 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 permettra d'obtenir un emploi ; ils l'apprennent parce qu'ils aiment vraiment programmer et qu'ils 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 ses logiciels dans un langage relativement ésotérique, elle sera en mesure d'embaucher de meilleurs programmeurs, car elle n'attirera que ceux qui se sont suffisamment intéressés pour l'apprendre. Et pour les programmeurs, le paradoxe est encore plus prononcé : le langage à apprendre, si vous voulez 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 une sorte de sélection qui se fait ici aussi : ce sont exactement les entreprises pour lesquelles les programmeurs aimeraient le plus travailler. Google, par exemple. Lorsqu'ils publient des offres d'emploi en programmation Java, ils recherchent également une expérience en Python.
Un ami à moi 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 frivole de choisir un langage plutôt qu'un autre. Mais ce n'est pas aussi frivole qu'il n'y paraît : lorsque vous programmez, vous passez plus de temps à lire du code qu'à l'écrire. Vous déplacez des blocs de code source comme un sculpteur le fait avec des blocs d'argile. Ainsi, 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 celle que je veux dire. La vraie laideur n'est pas une syntaxe brutale, mais le fait de devoir construire des programmes à partir des mauvais concepts. Perl peut ressembler à un personnage de dessin animé qui jure, 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 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.