Este es un proyecto cancelado que no recibe actualizaciones. No obstante, puedes acceder a su archivo como referencia.

Versión Cero

El programador superhéroe

Sergio Montoro

En informática la diferencia de productividad entre unas persona y otras es muy acentuada. ¿Qué aspectos distinguen a un programador de capacidad superior?

por Sergio Montoro Ten, 8 junio 05

Si hay una profesión donde la diferencia de productividad entre unas personas y otras sea acentuada, esa es la programación. El gerente experto sabe, por experiencia, que un buen programador es 10 veces más productivo que un programador medio y que, además, produce elegantemente esta cantidad extra de código con menos bugs, mayor eficiencia computacional y mejor mantenibilidad.

El programador superhéroe tiene una visión holística del proyecto, que abarca desde los detalles más pequeños de la implementación hasta la arquitectura de alto nivel y la misión última del programa. Lo mismo sabe qué versión exacta del tal service pack está instalada en el servidor de desarrollo que puede explicar cual es la estrategia de CRM que persigue el cliente con la aplicación que se está desarrollando.

El programador superhéroe es un gurú. Conoce al menos media docena de lenguajes en profundidad. Lo mismo programa C o JavaScript que se instala un Linux o pinta unos atractivos botones 3D en PhotoShop.

El programador superhéroe es perfeccionista. Su código aparece impecablemente identado y comentado. No falta ni una línea control de errores ni hay ningún subproceso supérfluo.

El programador superhéroe tiene la habilidad de concentrar sus esfuerzos en tareas productivas y eludir aquellas que se le encomiendan exclusivamente con fines políticos. Es un trabajador abnegado y, al mismo tiempo, un profesional del giro de cintura, experto en esquivar los cabildeos por el poder en la gerencia. Es consciente de que los recursos en un proyecto tienden a evaporarse poco a poco: este servidor se lo llevan, aquel programador dimite, el plazo se reduce 1 semana debido a una de marketing de la competencia, etc. Para evitar esta pérdida lenta pero fatal de recursos, el superhéroe busca un padrino en las altas esferas que defienda policialmente los compromisos adquiridos.

El programador superhéroe no frustra al cliente diciéndole que todo es imposible o muy difícil. Le da a entender que en informática se puede hacer de todo, pero, eso si, se cubre las espaldas meticulosamente frente los problemas derivados de planificar proyectos con misiones al estilo 12 del Patíbulo.

El programador superhéroe sabe que no es lo mismo tener razón que ser capaz de demostrarlo ante quien no quiere creer. Es consciente de que los argumentos técnicos no sirven con jefes que no son informáticos. Por ello, no discute, sino que recoge pruebas tangibles sobre los hechos y los presenta a pequeños sorbos en las reuniones con evidencias que demuestran que tiene razón.

El programador superhéroe aprende de compartir sus conocimientos. Es el referente de sus compañeros. Todo el mundo va a preguntarle y él, secretamente, lo fomenta porque es así como adquiere su legendaria sabiduría: escuchando ayudando a los demás.

Comentarios
1 Guti
8 junio 2005, 18:30

Desde que la programación ha dejado de ser una vocación, creo que el número de super programadores es cada vez más reducido.
2 Carlos Rovira
8 junio 2005, 23:34

Inspirado artículo,...creo que hoy día debido a los ‘timing’ que sufrimos más vale que en un proyecto todos intentemos ser “superheroes” o al menos nos pongamos la camiseta azul con la gran “S” delante para intentarlo puesto que lo normal es que estemos todo el rato presionados y faltos de tiempo.

En fin…la realidad es muy dura…
3 Joserra
9 junio 2005, 08:20

Es cierto que hay personas así, que hacen de referencia en el proyecto en el que se embarcan.
Pero tambíen pienso que la mayoría de veces acaban frustrados por las políticas de empresa o sus estrategias, donde el plano técnico no cuenta demasiado. No suelen tener demasiada mano izquierda, y no ganan facilmente amigos entre “los de arriba”.
4 Vis
9 junio 2005, 08:22

Interesante artículo. felicitaciones. Para cuando un post sobre el programador supermediocre ?

Salu2.
5 Javier Gallardo
9 junio 2005, 10:37

Comparto las opiniones de mi buen amigo Sergio. Solo me gustaría apostillar que una de las cualidades de un super programador debería ser la modestia. (Este comentario no es alusivo para Sergio). He conocido muchos programadores que fardan cuando colocan o distinguen excepciones pero que luego su código casca porque se produce una excepción genérica. También me gustaría remarcar algunos puntos. No es lo mismo programar software de gestión que software en tiempo real donde el control de los recursos es indispensable. A veces nos creemos porque hacemos un query, es la leche pero la mitad de los programadores de gestión no saben gestionar las conexiones, los niveles de aislamiento, la transaccionalidad etc. Es decir, existe mucho “juntalineas” que por hacer el código en inglés se creen algo pero suelen tener grandes errores conceptuales.
Comparto con Sergio el hecho que el sabe programar en un lenguaje en breve sabe programar en otro siempre y cuando este dentro del mismo campo de acción. Es decir, el que desarrolla software de gestión en java, sabrá hacerlo en .net o en c# pero no creo que sea igual de productivo desarrollando software para una libreria de threads.
Otro de los problemas de los programadores es la formación. Existe mucho intrusismo en la profesión.Se llama a programador a cualquiera que sepa usar el compilador pero existe un método y unos conocimientos necesarios. ¿Qué formación recibe un telecos sobre bases de datos, programción estructurada, lógica, programación orientada objetos, sistemas operativos?. El problema fundamental rádica que dos programadores son capaces de hacer el mismo producto por fuera, pero por dentro pueden ser totalmente diferente y desafortunadamente el gerente solo mira que funcionen (patadón arriba y mari… el último).
Creo que se debería tener también un poco de mayor valoración a la profesión.
Saludos.
6 Cesar Tardaguila
9 junio 2005, 11:01

Los que no somos programadores superhéroes, pero intentamos serlo nos vemos reflejados en muchos puntos de este artículo.

Si todos intentáramos ( a veces con la intención es suficiente ) ser así, la vida profesional sería mucho menos dura y desmotivadora.

Supongo que si todos nos tatuáramos en el cerebro “The Pragmatic Programmer” todos podríamos llegar a ser algún día programadores superhéroes.
7 Juanjo Navarro
9 junio 2005, 12:16

Para (#4), creo que Sergio nos tiene preparado algo sobre los super-mediocres :-)

Para (#6), Cesar, muy buena referencia la de los “Pragmatic Programmers”. Recomiendo el libro a cualquier programador.
8 marzembre
9 junio 2005, 12:16

Estoy de acuerdo con la mayor parte de lo que dices, aunque te pondría un pero, yo usaría otro término en vez de ‘superheroe’, ya que éste puede dar lugar a malos entendidos (si tienes ocasión échale un vistazo al libro de Steve McConnell, Desarrollo Rápido, al principio hay una parte en la que habla de los héroes de la programación).
La programación no es cuestión de superhombres sino de hacer bien el trabajo, que consiste precisamente en hacer muchas de las cosas que comentas, y esto no es ni más ni menos que ser profesional.
Aparte de esto, que no deja de ser una opinión personal, el artículo está muy bien, da en el clavo en muchos de los aspectos fundamentales de esta profesión.
9 Xavier Pons
9 junio 2005, 12:22

Durante algunos años tuve la suerte de trabajar con varios programadores superhéroes de estos que comenta el articulo. Personas que siempre tenían un minuto para escucharte y echarte una mano.
Podían ponerse a picar una pagina HTML como crearse un struts en javascript.

Otros, como dice el comentario anterior, tratamos de seguir esa estela. Desde mi punto de vista cada vez quedan pocos ‘jedis’, el lado oscuro ‘gerentes, jefes de proyecto ’, poco a poco los van absorviendo.

Esa gente si es profesional, disfruta con lo que hace, y desprenden un gran carisma. Sin duda, lideres a los que seguir.

Gracias Hector, Jose Luis y Jorge.
10 ruisan
9 junio 2005, 12:36

A ver, no me podido más que echar un vistazo al artículo, pero aún así no puedo dejar de comentar una cosa. Cuando lo lea entero opinare con más razón pero es que no puedo aguantarme.
Lo siento, pero lo que he visto es una soberbia tonteria: El programador perfecto es el que nadie quiere. El programador perfecto es detallista, luego “pierde” el tiempo cerrando temas para que queden perfectos, mientras los demas dejan las cosas a medio hacer pero medio funcionando y cumplen plazos.
Ala, ya me he desfogado.
11 Eduardo Mayor
9 junio 2005, 13:33

Aún estando de acuerdo con la definición del programador superhéroe, creo que hay un aspecto en el que Sergio no ha entrado y que determina, bajo mi humilde punto de vista, de forma mucho más importante el éxito de un proyecto: la capacidad de integrarse en un equipo y hacer que el conjunto sea mejor que la suma de las partes. Frente al programador superhéroe, yo prefiero hablar del Ingeniero de Software (superhéroe o no) capaz de trabajar en un entorno cooperativo con métodos y políticas que permiten aprovechar las capacidades individuales y generar un proceso de producción de tecnología maduro y sostenible. Si además de todo esto, el ingeniero es un excelente programador, un buen comunicador y un lider que merece el respeto de sus compañeros lo tenemos todo para producir Software de calidad en tiempo y presupuesto. Por que de eso se trata al fin y al cabo, ¿no?
12 fiuba
9 junio 2005, 21:47

Martin Fowler también habló en su momento sobre la diferencia de productividad entre programadores “comunes” y los sobresalientes

http://martinfowler.com/bliki/PeopleMatterMost.html

Saludos
fiuba
13 Sergio Montoro
10 junio 2005, 09:43

#5 Me quedo con el adjetivo de “programador juntalíneas” muy gráfico.

#10 Nunca tenemos tiempo para terminar bien un programa. De todas formas no estoy seguro de que eso fuese divertido aunque nos dejasen hacerlo. Quiero decir que no a todo el mundo le apetece dejar un software absolutamente niquelado al estilo de Donald Knuth y TeX, con un premio por encontrar un bug que no ha sido reclamado por nadie en más de una década.
Muchos programadores de reconocido prestigio empiezan proyectos y luego se aburren. La prueba es la cantidad de software libre que no es mantenido por la persona que lo creó.

#8 y #12 Muy buenas referencias :-)

#11 La coordinación y el intercambio fluido de conocimiento para el trabajo en equipo sigue siendo una asignatura pendiente de la informática. Si tienes 4 ó 5 programadores la cosa es relativamente fácil. Pero a partir de 10 se vuelve complicado que todo el desarrollo tenga una estructura y una calidad homogénea.
14 elmaska
10 junio 2005, 18:55

Para (#11)
El intercambio de información no creo que sea una cuestión de la informática sino de algo que si que está por encima de cualquier trabajo que implique la labor en equipo. De hecho los problemas fundamentales para que este tipo de comportamientos sean comunes son (en mi opinión):

1.- Falta de consciencia de las mejoras que pueden acarrear en los proyectos o tareas a acometer por los equipos. Normalmente los gestores de los equipos (incluso los gestores de los gestores) por falta de conocimiento, o de tiempo, de ganas o por otras cuestiones “oscuras” no dan prioridad a la obtención de este tipo de comportamientos.

2.- Falta de una cultura generalizada del trabajo en equipo (de hecho creo que en España – espero que el país de muchos de los que aquí estamos participando – andamos un poco cortos de este espíritu).

3.- Habitualmente los equipos están mas centrados en la consecución de los objetivos que les han sido fijados que en “cómo” los consiguen. De hecho, la mayoría de los equipos de trabajo serían incapaces de acometer dos veces la misma misión consiguiendo identicos resultados y mucho menos realizando las mismas labores.

Existen muchos otros problemas pero creo que los enumerados son los principales. Los demás pueden ser variantes de los descritos.

Ahora bien, al contrario de lo que comenta Sergio, en Informática (y también gracias a “movimientos” como los del sw. libre) creo que está la semilla del verdadero trabajo en equipo (¿sino como se explica que grupos ingentes de verdaderos desconocidos entre sí sean capaces de desarrollar proyectos faraónicos como los que estamos acostumbrados a ver en ese área?).
15 Anónimo
11 junio 2005, 11:54

Yo que quieres que te diga… cuando me han preguntado algo y he visto que tenían una chapuza de código se me han quitado las ganas de dedicarles mi tiempo; es más, me dan ganas de decirles que reescriban todo su código.
16 Cristian
12 junio 2005, 04:25

Los plazos de entrega son cada vez mas cortos. Por lo tanto, ser un superheroe comentador de lineas de codigo, bueno..se me hace dificil de entender. Considero, hablando por lo que llegue a vivir, que el superheroe no busca un puesto jerarquico, no vende su alma al Diablo :). Si alguno lo hace, pincha en cuanto a liderazgo se refiera. Me cuesta creer que sea modesto,aprecio y valoro aquellos que si lo son(son minoria!). Nunca hay que olvidarse de donde uno salio y de como le costo llegar a ser lo que es.
Muy interesante el articulo.
Muchas gracias por compartirlo
17 Armando
13 junio 2005, 21:22

Me parece interesante el artículo y de bastante motivación para quienes vamos en busca de ese objetivo ….......

Salu2
18 pedro_fm
14 junio 2005, 10:34

Lo de los botones 3D, o si sabe hacer café rico sobra… lo que es atractivo para un super programador, dudosamente lo es para el resto de personas “normales” ;)

Yo pienso que si programas bien, siempre tendrás entonces a mano un buen diseñador que te apoye en lo gráfico del proyecto. porque no te faltarán medios como para ello, incluso mediante el intercambio ya que lo bueno llama a lo bueno. La interacción “hombre-máquina” necesita tambien el conocimiento de la parte “hombre” del binomio. Y esa la enseñan como Arte aplicada.

Otra parte del artículo que no comparto es que los programadores con pretensiones de gurúes quieren evitar la parte política, mas bien es lo contrario: ansian pasar al terreno político del desarrollo ya que no se ven con treinta y tantos haciendo e instalando librerías en su windows, rastreando en la knwoledgement base y cobrando poco. Prefieren ponerse el chaleco y chequear el mail desde su tabletPC (para reenviar marrones y escribir memorias de proyecto) y un sueldo como para mantener un coche alemán en el garaje.

Triste pero cierto.
19 Mesias
17 junio 2005, 14:32

Holas:

“Elige un trabajo que te guste y no trabajaras en tu puta vida” Dicen los chinos, lo de puta lo he puesto yo.

Si que hay superheroes de la realidad. Lo que pasa que suelen ser Spidermanes o Daredevils. Como bien reseñan no suelen trabajar en equipo. Si se formase una “Liga de Justicia” decente, otro gallo cantaria. Estoy deseando que caiga la Bestia (wondows)

P.D. Sergio … ¿Estuviste en Tinieblas?
20 Gabriel
22 agosto 2005, 23:16

Muy bien descrito
Acerca - Contacto - Información legal y técnica - Condiciones de uso - Noticias sobre el mundo del Desarrollo de Software.