La Paradoja de Python

Agosto de 2004

En una charla reciente dije algo que molestó a mucha gente: que se podía conseguir que programadores más inteligentes trabajaran en un proyecto de Python que en uno de Java.

No quise decir con esto que los programadores de Java sean tontos. Quise decir que los programadores de Python son listos. Aprender un nuevo lenguaje de programación requiere mucho esfuerzo. Y la gente no aprende Python porque le consiga un trabajo; lo aprende porque realmente le gusta programar y no está satisfecha con los lenguajes que ya conoce.

Lo que los convierte exactamente en el tipo de programadores que las empresas deberían querer contratar. De ahí lo que, a falta de un nombre mejor, llamaré la paradoja de Python: si una empresa elige escribir su software en un lenguaje comparativamente esotérico, podrá contratar mejores programadores, porque solo atraerá a aquellos que se preocuparon lo suficiente como para aprenderlo. Y para los programadores, la paradoja es aún más pronunciada: el lenguaje que hay que aprender, si se quiere conseguir un buen trabajo, es un lenguaje que la gente no aprende meramente para conseguir un trabajo.

Solo unas pocas empresas han sido lo suficientemente inteligentes como para darse cuenta de esto hasta ahora. Pero aquí también hay una especie de selección: son exactamente las empresas para las que los programadores más querrían trabajar. Google, por ejemplo. Cuando anuncian puestos de programador Java, también quieren experiencia en Python.

Un amigo mío que conoce casi todos los lenguajes ampliamente utilizados usa Python para la mayoría de sus proyectos. Dice que la razón principal es que le gusta cómo se ve el código fuente. Puede parecer una razón frívola para elegir un lenguaje u otro. Pero no es tan frívola como suena: cuando programas, pasas más tiempo leyendo código que escribiéndolo. Mueves bloques de código fuente como un escultor mueve bloques de arcilla. Por lo tanto, un lenguaje que hace que el código fuente sea feo es exasperante para un programador exigente, como lo sería la arcilla llena de grumos para un escultor.

Al mencionar el código fuente feo, la gente pensará por supuesto en Perl. Pero la fealdad superficial de Perl no es del tipo que quiero decir. La fealdad real no es una sintaxis de aspecto duro, sino tener que construir programas con los conceptos equivocados. Perl puede parecer un personaje de dibujos animados maldiciendo, pero hay casos en los que supera a Python conceptualmente.

Hasta ahora, de todos modos. Ambos lenguajes son, por supuesto, objetivos en movimiento. Pero comparten, junto con Ruby (e Icon, y Joy, y J, y Lisp, y Smalltalk) el hecho de que son creados por, y utilizados por, personas que realmente se preocupan por la programación. Y esas tienden a ser las que lo hacen bien.