miércoles, 21 de mayo de 2014

Los 6 tipos de Programador



Con 7 años de experiencia, 2 empleos, 5 equipos de trabajo, 
y ya habiendo liderado de 2 de ellos, puedo darme el lujo de "clasificar" a mis compañeros de trabajo en distintos tipos de programadores, según la calidad de su trabajo.



Pero no es sino después de leer un artículo de Steven Benner, en donde describe casi a la perfección a los tipos de programadores con los que uno tiene que lidiar. Si tal vez no son todos, sí que son los más reincidentes:

1. El parchador. (The duct tape programmer)

Puede que el código no sea lindo,
pero maldición, ¡funciona!
Este tipo es la base de tu empresa. Cuando algo vaya mal, él lo reparará ipso facto y dejándolo funcionando correctamente.

Pero -por supuesto- no le interesa nada más:
cómo se vea, la facilidad de uso, el orden del código, técnicas de programación, variables innecesarias, la optimización de algoritmos, el mantenimiento, el uso de estándares, ni otra de esas "trivialidades".

Él sólo "hará que suceda", lo solucionará sin pérdida de tiempo.
La mejor forma de trabajar con él, es enfocarse en un problema y dejarlo trabajar.

¿Qué podría yo agregar? Como dice la última línea: Dedicarlo a solucionar un problema, que desarrolle su código -normalmente un bloc- y luego hacer las correcciones de su solución neandertal.
Tampoco comparto el "dejándolo funcionando correctamente", puesto que al reparar algo para el momento, no suele pensar a largo plazo.

2. El perfeccionista. (The OCD perfectionist programmer), el obsesivo-compulsivo del código perfecto.

¿Que le quieres hacer
QUÉ a mi código?
A este programador no le interesan ni los tiempos límites ni el presupuesto; Éstos son insignificantes comparados con el arte que es la programación.

Cuando finalmente recibes el producto terminado, no tendrás más opción que redimirte a la gloria y radiante belleza de un código fuente perfectamente programado.
Es un código tan eficiente y tan bien hecho, que cualquier modificación que le hagas, sería una profanación a tamaña reliquia.
Este programador es el único calificado para darle mantenimiento a su propio código.

3. Programador anti-programación. (The anti-programming programmer)

Soy un programador, maldición.
Yo no escribo código.
Su mundo se reduce a una única verdad: Escribir código está MAL.
Si tienes que escribir algo, entonces lo estás haciendo MAL.
Alguien más ya lo ha hecho antes, así que tú sólo tienes que reutilizar su código.

Este programador te dirá cuánto más rápida es esta praxis, aunque se tome tanto o más tiempo que el resto de programadores.
Pero cuando revises su proyecto, encontrarás sólo 20 líneas de código escritas, y será muy fácil de leer/entender.


No será rápido, eficiente, compatible, o fácil de mantener, pero será hecho con el menor esfuerzo.

4. El mediocre. (The half-assed programmer)

¿Qué quieres? Funciona, ¿no?
A este tipo no podría importarle menos la calidad, porque eso es trabajo de otros.
Termina las tareas que le solicitan, y a veces, rápidamente.

Su trabajo no será del agrado de muchos
, y los otros programadores podrán odiarlo, pero los jefes y los clientes lo adoran.
Por más sufrimiento que este individuo pueda causarte a futuro, es él quien por su cuenta se mantiene en sus fechas límites (Así que no te burles de él, no importa cuánto se lo merezca).

¿Que qué opino? que trabajar con estos tipos es el mismo infierno.
Los que lo adoran, es obviamente por ser un chupamedias. Promete desarrollar aplicativos maravillosos en tiempos mínimos; y al final se demora demasiado, su código apesta, y su proyecto funciona mal.

5. El programador teórico. (The theoretical programmer)

Bueno, eso es una posibilidad,
pero en la práctica esto puede ser
una alternativa mejor.
Este programador se preocupa más por el cómo hacerlo, que en hacerlo.

Dedicará el 80% del tiempo a ver la pantalla en blanco, pensando las formas de completar su tareas;
15% de su tiempo quejándose sobre los irrazonables plazos de tiempo que le han asignado;
4% de su tiempo en refinar sus opciones;
y el 1% de su tiempo, a programar la solución.
Su trabajo ya culminado siempre vendrá acompañado por la frase "Si hubiese tenido más tiempo, lo habría hecho mejor".

6. El programador neófito. (newbie)
Este programador comete más errores que aciertos; y generalmente sólo puede resolver sus problemas con ayuda de los demás.
No depende de la experiencia que tenga trabajando, sino de la actitud.
Pueden ser los más humildes, o pueden creer saberlo todo; igual, sólo hacen las cosas a medias.
A veces la resolución a sus preguntas está en Google o en el manual de ayuda del IDE que están utilizando, pero prefieren preguntárselo personalmente a alguien.
No estiman tiempos propios y peor aún: los ajenos...


Particularmente: cumplo con los perfiles (2) y (5), y sólo habré pecado en cometer la (1) un par de veces.

Aunque Steven Benner lo utiliza como prólogo, yo utilizo esas palabras para cerrar este post:
Sin una mezcla sana de estos distintos estilos de programación, podrías tener proyectos que demoren una eternidad en ser culminados, no ser lo suficientemente estables; o desarrollar software demasiado perfecto para ser usado por simples humanos.

Artículos relacionados:

Fuente:
- the-5-types-of-programmers, de Steven Benner.
- imágenes de tumblr, de natorrante.


Recibe en tu correo electrónico las últimas actualizaciones de éste blog:
Ingrese su e-mail:
(y no olvide confirmar su suscripción)
También me encuentras en facebook.
También en twitter.
También en tumblr.

No hay comentarios.:

Publicar un comentario