Las claves de un buen programador

Me preguntan mis compañeros de KSchool, con los que estamos presentando estos días el Máster en Programación Web, que cuáles son las claves de todo buen programador. Y me piden que sea escueto… así que escribo este post y luego sintetizaré para ellos. 🙂

Para empezar aclaremos la pregunta. ¿Las claves de todo buen programador? ¿Quieres decir las claves para identificar a un buen programador? ¿O las claves para convertirse en un buen programador? Bueno, en realidad están tan relacionadas que viene a dar lo mismo.

Fijémonos en el perfil en LinkedIn de uno de los programadores en activo más reconocidos por todos: Kent Beck, nacido en 1961 y que usa el nada adornado título de Programador en Facebook para explicar a qué se dedica actualmente.

My goal is to program well on teams and to encourage improvements in my profession. I am actively working on becoming more transparent and accountable in my work and improving my skills designing incrementally and interacting with people.

Un buen programador, como Kent Beck, además de saber leer, escribir y hablar en inglés —cosa que para los españoles resulta ya un reto a veces insalvable— y de tener maestría sobre los lenguajes y herramientas más adecuados para cada tarea, como cualquier otro artesano, debe tener una actitud de autoexigencia. En mi opinión, un buen programador llega a ser buen programador porque se lo propone y trabaja mucho para conseguirlo. Aquello que decía Edison sobre el sudor aplica en este punto.

Pero si nos quedaramos ahí no estaríamos atendiendo a otra de las claves que incluye Beck en su perfil: Transparencia y Responsabilidad. Sólo siendo responsables de nuestros actos profesionales llegamos a ser en general buenos profesionales y en particular buenos programadores.

  • David Bonilla

    A mi tambien me parece importante un termino de su definición que no has comentado: accountable, que yo traduzco como “medible”

  • jmbeas

    Lo siento, David, pero cuando escribí ese artículo (y ahora por tu comentario) no encuentro esa acepción que tú dices. Mis fuentes son:

  • carlos

    Ayer estuve viendo el video del #debate10 y me surgió la siguiente duda, debido quiza a mi corta experiencia y que despues de leer este artículo me vuelvo a plantear. ¿Cual es el futuro de un buen programador? ¿Quizá director de proyecto? Entonces ¿ser un buen programador es solo un tramite hasta llegar a ese punto? Y si yo lo que quiero es programar y ser cada vez mejor programador, ¿invertir tiempo en ello me será “rentable” o no merece la pena tanto esfuerzo?

    ¿Hay luz al final del tunel? XD

    Un saludo!

    • jmbeas

      Hola Carlos,

      Me apena que pienses que ser director de proyecto es la evolución de un buen programador. ¿Qué tal ser programador con experiencia? Como Kent Beck.

      ¿Merece la pena? Creo que eso depende de qué quieras conseguir y cuándo. Es lo que se conoce como Retorno de la Inversión. 😉

      Gracias por participar

  • Aparte de las características enumeradas, yo destacaría por encima de todas las cosas el afán de superación (algo parecido a la autoexigencia) y el aprendizaje continuo junto con la humildad y la capacidad de autocrítica.

  • Todas las características enumeradas están bien, pero quizá me quedaría con la de la responsabilidad. He visto a grandes programadores incapaces de acabar correctamente el trabajo que tenían que realizar.

    Y añadiría otras: la capacidad de comunicación y compartir y la humildad. El equipo como tal tiene mucho “poder”. Mediante la capacidad de comunicación y compartir alimentamos al equipo. La humildad nos permite afrontar los problemas con la ayuda de este.

  • Para mi, un buen programador, es aquel que es capaz de sentir el código. Esa simbiosis que se crea mientras picas y transformas las ideas, cerrando agujeros mucho más allá de la planificación, cuando programas con la intuición y modelas las rutinas para hacerlas bellas utilizando ciertas características del lenguaje. Ese momento cuando repasas interminables listados y por el tipo de código intuyes el estado de ánimo y la posición de las rutinas. Un buen programador es aquel que hace suyo el código y fluye con él.
    ¿Como reconocer a ese buen programador? No es sencillo, pero sólo hay que verlo programar, sólo hay que leer su mente en las líneas de código que ha escrito, dicen mucho de su personalidad.

  • Un buen programador es capaz de volver a escribir un código que ha escrito antes en un buble infinito en el que en cada iteración se mejora la anterior.

  • dario

    Kent Beck labura ahora optimizando thrift. Apache Thrift es una version preiliminar de lo que era CORBA la cual los de apache en su paper (http://thrift.apache.org/static/files/thrift-20070401.pdf) denostan porque es pesado de instalar. Claro, cuando Apache Thrift vaya por la version 10 (ahora es ultra beta) tambien va a ser engorroso de instalar y configurar. Dios mio, estamos gastando plata en dar vueltas sobre lo mismo una y otra vez.

  • Andrew

    Excelentes consejos… Gracias por compartir.

  • nazareth

    algunos de uds me podria enseñar lo basico para programar?

  • cristopher

    “accountable” es como responsable, no?

    • cristopher

      para aportar más al enunciado, la autosuperación es importante, retar tus limites, estos tipos programadores como beck han programado toda su vida, porque les interesa, de pequeños que tuvieron interacción con algún código, y lo siguieron haciendo, me gusta pensar que un buen programador es el acepta un reto y no descansa hasta lograrlo, es como quebrar tu limites, siendo responsable y humilde lo que le falta a todo programador.
      en fin es un poco de todo lo que dijeron

  • Walter

    Para mi un buen programador es aquel que se le presenta un problema. y lo soluciona de cualquier forma porque esa persona es un creador de código lo que no existe lo inventa. Puede que el no sepa como esta armado tal o cual software. Pero si sabe y esta seguro que puede armar algo igual a lo que esta viendo.