La paradoja Python

« Descargar de Megaupload en Linux | fglrx 8.42.3: Compiz Fusion con ATI y AIGLX »

A falta de un nombre mejor lo llamaré la paradoja Python: si una compañía decide escribir su software en un lenguaje poco utilizado comparativamente, serán capaces de contratar a mejores programadores, porque atraerán sólo a aquellos que se molestaron en aprenderlo…

Hasta ahora sólo unas pocas compañías han sido suficientemente inteligentes para darse cuenta de esto. Pero hay una especie de selección natural trabajando: son exactamente las mismas compañías en las que a los programadores les gustaría trabajar. Google, por ejemplo. Cuando ofertan puestos para programar en Java, también piden experiencia con Python.

-- Paul Graham

Relacionadas

Comentarios
  1. interesante opinión, pero sería bueno que :

    1- pusieras un link a http://es.wikipedia.org/wiki/Paul_Graham

    2- pusieras un link a la fuente de información de donde sacaste el texto que muestras.

  2. aguante python =P

  3. DrSlump

    Me parece una chorrada. Hay programadores buenos y malos, la elección del lenguaje ha de ser en base al proyecto.

    Si mi empresa quiere crear un software para gestionar blogs económico elegirá PHP porque así podrá venderlo mucho mejor.

    Si quiere crear un video juego en 3D elegirá C++ por el rendimiento.

    Si quiere crear un software ERP para una gran empresa que deba ser extendido utilizará Java por su relación multi-plataforma/rendimiento/librerias.

    Si quiere crear un servidor pero no sabe bien como implementarlo elegirá Python para prototypar el proyecto y si el concepto funciona reimplementará partes en C para aumentar el rendimiento.

  4. Nadie dice que tengas que elegir a gente que sepa Python para hacer un CMS (aunque sería mejor idea usar Python con Django o Ruby con RoR que no PHP ;-) )

    Dice que si contratas a alguien que sepa PHP y también sepa Python, aunque el perfil que buscas no lo necesite, es más probable que sea un buen programador, porque es una persona a la que le gusta la programación y lee e investiga por su cuenta.

    Si sólo pides a alguien que sepa PHP, es más probable que te encuentres a una persona que conoce la sintaxis del lenguaje y listo. No un buen programador.

  5. [...] [via: Mundo Geek] [...]

  6. valenluis

    Coincido con lo mencionado =D

  7. [...] La paradoja Pythonmundogeek.net/archivos/2007/10/23/la-paradoja-python/ por DZPM hace pocos segundos [...]

  8. Pero que chorradas ! y esto llega a portada del meneame ? un buen programador no tiene porqué acercarse a un lenguaje de programación que no utiliza ni diosss, porque pierde en reusabilidad, en modularidad, en legibilidad y en mil maneras… eey nadie programa ya en ensamblador del MIPS R2000… vamos a usarlo nosotros !! NO tio .,.. no.

    Se puede ser un programador profesional y muy bueno conociendo solamente un par de lenguajes… a fin de cuentas las bases de la programación son las mismas, y si se es bueno, se es bueno independientemente del código que se utilize.

    Actualmente C es uno de los lenguajes más eficientes…. implementarias un servidor web en C desde cero? o probarias a usar JAVA por su interoperabilidad y su rendimiento / plataforma o librerias…

    Zootropo lo que has dicho es una suma tonteria… yo soy un buen programador y no me esfuerzo en conocer códigos nuevos, me esfuerzo en conocer algoritmos nuevos, me esfuerzo en conocer estructuras de datos nuevas, en mejorar mis conocimientos en la base fundamental de la programación … hacerlo en un idioma u otro es casi trivial… siendo relevante solamente en cuanto a la operatibilidad con el entorno que rodee al software

  9. Troin. Si crees que usar un lenguaje u otro es clase trivial es que te queda por aprender.
    Esta muy bien aprender nuevos algoritmos y estructuras de datos.
    Pero igual que un nuevo algoritmo te hace ver un problema de una nueva forma, un nuevo lenguaje te puede hacer ver todos de una nueva.

    En todo caso, esto es un poco off-topic.
    Coincido con el dicho. Pero lo llamaria "paradoja de ruby" o "paradoja de eiffel". Python… es bastante usado.

  10. Conocer profundamente un lenguaje de programación solo te hace más productivo cuando usas ese lenguaje, pero eso no implica que seas un buen programador. Desde mi punto de vista un buen programador no solo debe conocer algoritmos o patrones de diseño, también debe conocer los diferentes paradigmas de programación (orientación a objetos, estructurada, lógica, funcional, etc) Pero estas no son las únicas cualidades que ha de tener, también deber saber interpretar las necesidades del usuario o su jefe, saber depurar… un sin fin de cosas, todas ellas relacionadas con la programación.

    En cuanto al artículo, esta claro que desde el punto de vista empresarial si una empresa quiere un programador se buscará al más productivo, es decir, al que conozca mejor el lenguaje de programación. Y esta claro que cuando aprendes algo por ti mismo sin que te lo impongan lo haces con más ganas, de ahí la búsqueda de programadores de lenguajes "exóticos". Luego ya se encargará la empresa de que tengas a alguien por encima que te diga que es lo que tienes y programar (analistas, diseñadores…)

  11. Troin, no sólo no has entendido el texto, sino que no has leído los comentarios donde se explica de nuevo para tontos, y ni tan si quiera te has fijado en el autor de la cita que no soy yo, sino Paul Graham.

    Es decir, que no sólo te falta por aprender mucho sobre programación. Te falta también compresión lectora y algo de netiqueta.

  12. [...] en mundogeek.net la traducción de un texto de Paul Graham donde habla de la parajoda de python que se podría [...]

  13. Troin, el que tu seas un buen programador deberan decirlo los demas, no tu… Sacate la cabeza del culo.

  14. El típico que dice que un buen programador no debe de conocer muchos lenguajes, posiblemente sea un programador que quiere aparentar ser bueno y solo conoce 2 lenguajes. Y no quiere esforzarse, para lo cual intenta engañarse a si mismo y pretender que otras posturas, salvo la suya, son estúpidas. Para ver un ejemplo claro, me remito al comentario de "troin", lleno de incoherencias por todos lados.

    Simplemente la paradoja de python quiere decir que un buen programador se interesa y se implica. Cuanto mayor número lenguajes (y técnicas, patrones, tecnologías, etc, etc…) conozcas y cuanto más leas, más sabrás y eso unívocamente te llevará, quieras o no, a ser mejor programador.

    Aunque luego en tu trabajo solo programes en X, aprender lisp, D, prolog, python, ensamblador, erlang, eiffel, e incluso lolcode (xD) te aportará algo, aunque no quieras.

  15. Buenas

    No se si quiza sea um poco metafisico, pero viendo los comentarios, no estoy muy deacuerdo con esa paradoja. Más que nada por que creo que cada uno tiene un visión del buen progamador.

    ¿Quien es el buen programador?¿el que implementa la solución más eficiente?¿el que menos tarda?¿el que progama en un codigo más legible?

    Tambien dependera de lo que quieras programar, no es lo mismo programar un sistema critico que opere en tiempo real, que una aplicación de escritorio…

    En mi opinion, ser un buen programador es conseguir tener un punto medio a las preguntas que he hecho anteriormente.

    Y uno solo puede ser un buen progamador, a parte del talento natural que tengas, con la experiencia que vayas ganando a lo largo del tiempo.

  16. un viejo

    Ha habido una pequeña guerra troll con esto.
    Mi opinión de 2 centimos.
    A) Un buen programador es inquieto y le gusta aprender.
    B) Una persona dedicada a esto e inquieto revisará las diferentes herramientas disponibles.
    C) Una persona revisando herramientas disponibles de programación tarde o temprano perderá 5 minutos con python.
    D) Un buen programador que descubra el python, por estar interesado en aprender, es muy probable que aprenda python incluso aunque no lo pretenda utilizar.
    E) Un buen programador que aprenda python es muy probable que termine por encontrarle un uso eficiente de ese conocimiento, y por lo tanto mejorarlo.
    Por todo lo anterior NO-ES-IMPRESCINDIBLE saber python para ser un buen programador, pero si tomamos un grupo de programadores es seguro que la media de calidad de los que conocen python es claramente mejor que la de los que no lo conocen.
    En mi opinión esto no es así para todos los lenguajes ya que en los 5 primeros minutos con AWK, por ejemplo, un buen programador determinará que puede perfectamente vivir sin el, y aunque lo aprenda, es poco probable que le encuentre un uso eficiente por lo tanto, tarde o temprano, se olvidará.

  17. Shamar

    Ha hechos objetivos y hechos subjetivos.
    El post original yo diría que es bastante subjetivo.

    A favor de Python existen sin embargo bastantes hechos objetivos:

    1.- Existen muchos menos desarrolladores en Python que en Java o PHP. Sin embargo, analizando la lista de paquetes estables de Debian (o Red Hat) existen muchos más programas funcionales en Python que en PHP.

    2.- Google se creó en Python.

    3.- Plone funciona con Python.

    4.- Python es el lenguaje de scripts "favorito" de Nokia (70% del mercado mundial de móbiles).

    Deshaciendo otro tópico:
    "Un buen programador se centra en los algorítmos no importa el lenguaje de programación utilizado".

    Sí, si que importa y mucho, porque precisamente lenguajes de programación como Python permiten centrarse en el algoritmo mientras que otros te hacen perder días enteros con una compleja, ineficiente e innecesaria sintaxis. Trabajar con tablas Hash,listas enlazadas o pilas, algorítmos recursivos o programación funcional en Python está tirado, es rápido y "bonito". En otros lenguajes como C--/STL, Java o C# es un coñazo (Escrito por alguien que utiliza a diario Python, PHP y Java y anteriormente C--/STL y C#).

    Un ejemplo. Para crear un Hash en Python:

    myHash={"abcd":1, "jklm":2}
    print "jklm"

    En Java:
    import java.util.Hashtable

    class miClase{

    public static void main (String[] args){
    Hastable myHash = new Hashtable();
    myHash.add("abcd",new Integer(1));
    myHash.add("jklm", new Integer(2));
    system.out.println(
    ((Integer)myHash.get("jklm")).toString());
    }
    }

    Ahora imaginad que quereís crear un Hash dentro de otro hash y que más tardes quereís cambiar el tipo de dato que hace de "key". En python está "tirado", en Java/C#/C-- puedes morir en el intento.

  18. [...] vía mundogeek [...]

  19. Manuel

    Es muy bonito pero totalmente mentira. Yo trabajo con un lenguaje de programación propietario que lo utilizan un par o tres de empresas en España y lamentablemente trabajo con bastantes petardos que no tienen ni idea de programar.

    Conclusión. Si se ofrece un puesto de trabajo en un lenguaje raro y tienes la oportunidad de aprenderlo puedes pasarte el resto de la vida rascándote las narices porque no te van a echar ni de broma.

  20. sarlanga

    Un buen programador se independiza del lenguaje.

  21. [...] de Mundo Geek Categorias: GNU/Linux, Geek, MundoReal ™, Sysadmin | | [...]

  22. Yo pienso que es cierto que un buen programador puede defenderse "casi" con cualquier lenguaje (intenten pasar de Java a ASM y no será tan fácil) pero también creo que tiene cierta dosis de razón la cita. Lo digo porque uso Python y la principal ventaja que le veo es que no te preocupas por la sintaxis y el funcionamiento del lenguaje (como suele pasar a veces con C++) sino más bien te preocupas en hacer lo que debes hacer, que es tu programa. De esa forma leyendo el code de un programador en Python puedes ver cómo programa en realidad, aunque también es ceirto que en Python casi siempre solo hay "una razón obvia de hacerlo"…

    En fin, si quieren ser productivos usen Python, yo pase de ASM y C/C++ a usar Python porque para el 80% de lo que hago Python es suficientemente rápido, simple de programar y poderoso a la vez. Y como siempre, si tienes miles de librerías para usar tu tiempo se reduce aún más.

    Saludos, interesante tu blog ;)

  23. javier

    Gente, estoy aprendiendo Python por pura diversión.
    Yo no estoy muy seguro de saber de qué está hecho un buen programador… Soy de Argentina. Yo no sé de donde son Uds., pero según mi experiencia, (es solo mi experiencia personal, en un país del Tercer Mundo), un buen programador debe ser flexible ante los nuevos desafíos, hábil para resolver problemas y astuto para encontrarlos. Yo trabajé mucho tiempo en empresas de software: mi primer proyecto fue en Frotran (si, Fortran !!) los siguientes en Java (JEE fue un desafío para mi) y uno (solo uno, pero de larga duración) en Objetive C (¿exótico?). En fin, en todos me desempeñé bastante bien (o al menos mis superiores y clientes estuvieron felices conmigo). Actualmente ya no estoy en empresas de software, sino en una empresa de comunicaciones, atendiendo asuntos de referentes a tecnologías de antenas… ¿por qué? Porque soy ingeniero electrónico!!!! es decir, no soy programador… ;)

Deja un comentario