5 tipos de programadores

Publicado el 5 de febrero de 2011

Otra lista sobre los “tipos de programadores“. Ya en los principios del blog comenté al respecto, traduciendo parte del artículo de Jeff Atwood sobre los dos tipos de programador. También publiqué un webcomic con los tipos de programadores, que incluye una lista bastante extensa. Y si buscan, hay muchas listas más en internet sobre el tema, agrupando a los programadores en distintos grupos…

En esta ocasión se trata de una lista que tiene ya unos meses, algunos tal vez ya la hayan leído, pero surgió nuevamente en Reddit recientemente. El autor es Steven Benner y su post: The 5 types of programmer (licencia CC).

Duct Tape

Duct Tape

Programador cinta pato

Puede que el código no sea lindo, pero maldición, ¡funciona!

Este tipo es la base de tu empresa. Cuando algo falla, él lo arreglará rápido y de manera que no volverá a romperse. Por supuesto no le importa cómo se vea, la facilidad de uso, ni ningún otra de esas preocupaciones triviales, pero lo hará pasar, sin mucha chara o tonterías que hagan perder el tiempo. La mejor forma de usar esta persona es apuntarlo a un problema y alejarse.

Creo que todos en algún momento asumimos el rol del programador “cinta pato”. Cuando subimos algo a producción, y nos acordamos a último momento de algo, o un usuario nos reporta un bug, generalmente entramos en el modo “cinta pato”, y lo importante es ir y solucionar el problema. Ya habrá tiempo de mejorarlo más tarde (ese “más tarde” raras veces llega…), pero cuando el tiempo juega en contra, no queda otra opción que simplemente arreglar lo que está roto.

Perfection

Perfection

Programador perfeccionista obsesivo compulsivo

¿Que le querés hacer qué a mi código?

Es el tipo al que no le importan las fechas límite o presupuestos, eso es insignificante cuando se compara con la forma de arte que es la programación. Cuando finalmente recibes el producto terminado no tendrás otra opción que someterte a la impresionante gloria y radiante belleza del código perfectamente formateado, no, perfectamente bello, que es tan eficiente que cualquier cosa que quisieras hacerle no haría más que difamar una obra maestra. Es el único calificado para trabajar en su código.

Entiendo que existan programadores así, pero me suena a pedante. Sí está bien considerar un arte el código, y estar conforme con el código que uno escribió siguiendo buenas prácticas y demás. Pero creo que el desorden obsesivo compulsivo puede traer más problemas que soluciones. De todas formas en el mercado laboral las fechas límite y presupuestos, por más que odiemos escuchar sobre ellas, generalmente tienen peso en el desarrollo.

Anti-programming

Anti-programming

Programador anti-programación

Soy un programador, maldición. Yo no escribo código.

Su mundo tiene una simple verdad; escribir código es malo. Si tienes que escribir algo entonces lo estás haciendo mal. Alguien más ya ha hecho el trabajo así que simplemente utiliza su código. Te dirá cuánto mas rápida es su práctica de desarrollo, aunque le lleva tanto tiempo  o más que a los demás programadores. Pero cuando obtengas el proyecto serán solo 20 líneas de código actual y será muy fácil de leer. Puede no ser muy rápido, eficiente, o compatible hacia adelante, pero estará hecho con el menor esfuerzo requerido.

Es un perfil que trataría de evitar. Pero no siempre, sí al extremo como se describe en este caso. Pero muchas veces reinventar la rueda nos complica y demora el desarrollo, y puede haber algún framework que nos facilite la tarea. De todas formas está el extremo de los que usan un framework para TODO, y al final el programa es puro código espagueti de configuraciones que intentan integrar framework mas framework, y el producto final termina siendo un bloatware enorme, sin quien logre entender lo que hace sin tener que estudiar 30 frameworks antes.

Half assed

Half assed

Programador a medias

¿Qué quieres? Funciona, ¿no?

El tipo al que no podría importarle menos la calidad, eso es trabajo de otra persona. Logra las tareas que le piden hacer, rápido. Puede no gustarte su trabajo, los otros programadores lo odian, pero la gerencia y los clientes lo aman. Por más dolor que te cause en el futuro, él sin ayuda es quien mantiene las fechas límites así que no puedes burlarte (no importa cuánto quieras hacerlo).

Conozco a algún programador de este tipo. Casualmente, tiene matices del programador “perfeccionista”, pero no por buenas prácticas, sino por el hecho de que deja funcionando las cosas, y eso está perfecto, pronto. Cuando tengas que mantener su código o arreglar algo que hizo, vas a acordarte de su familia entera… pero hay varios así.

Theoretical

Theoretical

Programador teórico

Bueno, eso es una posibilidad, pero en la práctica esto puede ser una alternativa mejor.

Este tipo está mas interesado en las opiniones que en lo que se debería hacer. Pasará el 80% del tiempo mirando en blanco su computadora pensando maneras de lograr una tarea, 15% de su tiempo quejándose de fechas límite irrazonables, 4% de su tiempo refinando las opciones, y 1% de su tiempo escribiendo código. Cuando recibas el trabajo final siempre será acompañado por la frase “Si tuviera más tiempo podría haber hecho esto de la manera correcta”.

Caigo un poco en este perfil también. Cuando encuentro una solución puedo darle muchas vueltas y “perder” mucho tiempo cuestionándome si la solución es la más perfecta. A veces puedo pasar tiempo ideando distintas soluciones y generalmente no llego a algo que me paresca “perfecto”, sino “suficientemente bueno”. Pero creo que eso es parte del supuesto que me queda muchísimo por aprender todavía, y siempre va a haber una “forma mejor de hacer las cosas” por aprender.

Tengo que admitir que últimamente he estado haciendo más que nada “cinta pato”. Mucho del trabajo que he hecho recientemente consiste más que nada en corregir errores y agregar pequeñas características a alguna funcionalidad ya hecha. Pero a su vez, al arreglar algo, ya encuentro algún código que puedo refactorizar o corregir, y generalmente caigo en la “pérdida de tiempo” del programador teórico. De todas formas al entrar en el loop “teórico”, tengo una condición de salida con uno de los programadores del equipo que insiste con “esto es suficientemente bueno para ahora, si volvemos a usarlo, lo mejoraremos más adelante”.

Creo que la mayoría tenemos distintas características de cada uno de estos 5, y probablemente falten un montón más (basta con ver el webcomic). En fin, una lista más para la lista de listas… ¿Y ustedes en qué perfiles estarían?

37 comentarios en este post

Feed de comentarios
  1. Avatar

    Rmn 5 febrero. 2011 - 20:40

    jaja entonces soy yo el desasnado ya ven que de algo sirvió. Nada de trolls, intentamos aprender cada día un poco más, o no? Ya ven, resulto beneficiado de esto. Saludos!

    Firefox 4.0b10 Windows 7
    • Avatar

      Fernando 7 febrero. 2011 - 22:30

      ¡Buenísimo! Una persona que haya aprendido algo nuevo ya compensa 😀

      El tema es que recibí otros comentarios que tuve que moderar respecto a la traducción de la cinta. Por eso estaba un poco frustrado con el tema. Pero bueno, tendré que dedicar otro post a la cinta pato más adelante 😛

      ¡Saludos!

      GNU IceCat 3.6.13 GNU/Linux 64 bits
  2. Avatar

    Guille 6 febrero. 2011 - 18:25

    Muy buen post! en lo personal creo q caigo en la categoría de “programador teórico” cuando me estoy iniciando en alguna nueva metodología o lenguaje, por el hecho de q surgen dudas sobre cuál es la mejor forma de hacer las cosas. Pero a medida q pasa el tiempo y ganamos experiencia, todo se va haciendo mucho más facil y el análisis previo se agiliza.

    Saludos!

    Firefox 3.6.13 Windows Vista
    • Avatar

      Fernando 7 febrero. 2011 - 22:32

      Claro, yo estoy igual ahora por ejemplo que estoy estudiando Ruby. No he programado nada relevante todavía, pero vengo estudiando la teoría del lenguaje a fondo..

      Después ya entramos en los otros perfiles cuando estamos mas cómodos con la tecnología.

      Gracias por comentar, saludos!

      GNU IceCat 3.6.13 GNU/Linux 64 bits
  3. Avatar

    Coder 7 febrero. 2011 - 13:53

    Bueno el articulo, el primero creo que la traducción esta mal “Duct Tape” es Cinta de Ductos! , sabes la cinta con que se hace remiendo a todo, Salu2

    Google Chrome 8.0.552.237 Windows 7
  4. Avatar

    Rmn 7 febrero. 2011 - 22:36

    Fernando me desuscribí a este artículo cuatro veces pero me siguen llenando la casilla, por favor. Y perdón por el comentario fuera de lugar

    Google Chrome 6.0.472.63 GNU/Linux
    • Avatar

      Fernando 7 febrero. 2011 - 22:45

      Es posible que anduviera mal el plugin de suscripción. Ya eliminé tu suscripción a mano, espero que no te llegue más :S

      No hay problema por el comentario, si hubiera estado fuera de lugar, lo hubiera moderado 😛

      ¡Saludos y gracias por leer el blog!

      GNU IceCat 3.6.13 GNU/Linux 64 bits
  5. Avatar

    Alex 11 febrero. 2011 - 23:49

    Yo soy el programador a medias y mi amigo me lo dijo ¬¬ , lo bueno es que me di cuenta que él es el perfeccionista obsesivo compulsivo jaja

    Google Chrome 9.0.597.94 Windows 7
  6. Avatar

    Luis Toscano 15 marzo. 2011 - 12:42

    Intereseante bueno yo soy como un Programador Obsesivo Compulsivo pero no tanto puesto que dejo que me colaboren porque sino no se sale adelante 😀

    y ese boton de enviar comentario esta muy escondido jejejeje colocalo abajo es mejor.

    Google Chrome 10.0.648.133 Windows Vista
    • Avatar

      Fernando 19 marzo. 2011 - 21:36

      Es cierto lo del botón de Enviar. Hace tiempo que había notado eso y estaba por cambiarlo pero no lo había hecho hasta ahora 😛

      ¡Saludos y gracias por comentar!

      GNU IceCat 3.6.15 GNU/Linux 64 bits
  7. Avatar

    Danko 29 septiembre. 2011 - 21:29

    Soy perfeccionista y lo reconozco, no puedo evitarlo. De hecho constantemente pienso que el código se puede mejorar, me cuesta mucho quedar satisfecho. :S .

    Google Chrome 12.0.742.122 Windows XP
  8. Avatar

    bart 25 febrero. 2015 - 12:30

    Teórico, lo cual me hacia sentir mal hasta que un día alguien me iluminó y me dijo.

    Analizar 5 formas de hacer 1 cosa, aunque termines eligiendo la 1ra que se te ocurrio, solo por haberlas analizado tenes la certeza de que no hubieses elegido ninguna de las otras.

    Si hubieses hecho de una la 1ra, no tendrias ni idea y no podrias sostener el porque algo se hizo de determinada manera.

    era solo para alentarte a que si te sentis en el perfil teorico, creo que no se ‘pierde’ tiempo. Es justo en la mitad de camino de ser un programador con 5 años a uno con 20.

    Google Chrome 40.0.2214.115 Windows NT
  9. Avatar

    Axel Lopez 3 junio. 2019 - 10:18

    Todos los tipos de programadores tienen puntos buenos como malos y pienso que un buen programador tiene que tomar en cuenta un poco de cada uno porque en alguna etapa de tu carrera como programador as pasado por alguna de las etapas.

    Google Chrome 74.0.3729.169 Windows NT
  1. Unknown Tweets that mention 5 tipos de programadores | Picando Código -- Topsy.com | 5 febrero. 2011 - 09:20

    […] This post was mentioned on Twitter by Kantor, Fernando. Fernando said: Post: 5 tipos de programadores http://ur1.ca/3480v […]

  2. Meneame 5 tipos de programadores | 5 febrero. 2011 - 15:31

    […] 5 tipos de programadores   picandocodigo.net/2011/5-tipos-de-programadores/  por likiniano hace 16 segundos […]

  3. WordPress Bitácora Soluciones MKA » Blog Archive » 5 tipos de programadores – htt… | 7 febrero. 2011 - 16:45

    […] tipos de programadores – https://picandocodigo.net/2011/5-tipos-de-programadores/ Posted in Soluciones MKA | No Comments » Leave a […]

  4. WordPress Los diferentes tipos de programadores | Punto Geek | 5 febrero. 2013 - 12:00

    […] tipos de programadores en PicandoCódigo. Original por Steven […]

Dejar un comentario

Notificarme los nuevos comentarios por correo electrónico. Tambien puedes suscribirte sin comentar.

Toasty!