miércoles, 10 de abril de 2013

Ser buen programador NO paga!!

Desde hace tiempo vengo viendo como muchos programadores compañeros de trabajo y amigos se esfuerzan mucho por dejar sus programas perfectos, alineando el código perfectamente, siguiendo todas las buenas prácticas que tanto les ha costado aprender y asegurándose de que cualquiera pueda luego leer su código y tratando de estar siempre al tanto de la ultima tecnología. Se esfuerzan por ser "buenos programadores".

Sin embargo con los pocos años que tengo trabajando de esto y viendo las experiencias de otros que tienen incluso mas tiempo programando he llegado a una conclusión. Ser buen programador no paga, y si paga pues no paga bien, hace poco leí la "parábola de dos programadores" de Neil W. Rickert, que aunque es muy vieja no dejó de asombrarme por la similaridad con innumerables casos que he visto que encajan con la actualidad.

En resumen, en la parábola, Charles, es un programador novato que es contratado por una empresa para hacer un software, pasa un tiempo sin avanzar nada, pero justo cuando lo van a despedir lo encuentran codeando algunas líneas y al final termina el programa en menos tiempo de lo planeado y con todas las características solicitadas. El jefe revisa el programa y ve que esta muy bien hecho, pero que es demasiado sencillo, y cuando es hora de aumentarle el sueldo a Charles el jefe recuerda la mala impresión que tuvo de el al principio y solo le aumenta una miseria. Charles termina desmotivado y renuncia.

Mientras tanto al mismo tiempo en otra empresa contratan a Alan, un programador experimentado para hacer exactamente el mismo software, Alan pide dos programadores mas para armar un equipo de trabajo, hace un plan, agrega las ultimas tecnologías y al finalizar el plazo apenas van por la mitad del proyecto por lo que pide mas tiempo y dos meses mas tarde terminan. Pero lo terminan sin todas las características originales y no todo funciona de la mejor manera, pero el resultado es aceptable. Su jefe revisa lo realizado y ve un código ilegible un programa muy complejo y un equipo exhausto. Alan es felicitado por terminar un programa tan complejo y recibe un jugoso aumento.

Esta historia podría ser falsa, pero lastimosamente hay muchos de estos casos donde sucede lo mismo o algo muy parecido. Muy buenos programadores (algunos algo perezosos otros no) recibiendo salarios muy bajos e incluso terminan siendo recriminados por sus errores entre otras cosas, mientras que otros a pesar de no ser muy buenos programando, llegan a ser felicitados, son bien remunerados y reconocidos e incluso son promovidos rápidamente.

Cual es la diferencia que hay entre estos dos tipos? a mi punto de vista es algo muy sencillo. Ser buen programador no paga. Ser buen desarrollador mas o menos, ser un buen analista podría ser, pero si quieres una buena paga, posiblemente tengas que convertirte en un "buen vendedor".

Perooo... ¿Que no es casi lo mismo un programador que un desarrollador? no, definitivamente no, un programador es alguien que ve código, recibe una especificación, la programa, y mantiene el código. Un desarrollador es alguien que aporta en mas de una etapa de desarrollo de un proyecto, que incluso tiene conocimiento funcional y de negocio de la solución que está desarrollando y además interactúa mas con todo el equipo.

Ahora, por que aun así un desarrollador puede ganar menos que un buen analista o un buen vendedor? pues, según dicen por ahí "lo que importa  no es el producto mientras el vendedor sea bueno". Para muchos esta respuesta será obvia, pero si estás iniciando tu carrera posiblemente esto te resulte chocante e incluso ofensivo. Pero es verdad.

Para los usuarios finales e incluso para los jefes es muy dificil saber que es exactamente lo que haces, y fácilmente pueden pensar que lo que haces es muy sencillo. A mas de alguno le debe haber pasado eso de que el usuario solo quiere "un botoncito nuevo" en alguna pantalla y que se moleste cuando les digas que eso va a estar listo en un mes.

Lo que importa es lo que se ve.

Hace poco estuve en una empresa en la que no nos pasaron ningún requerimiento por meses a pesar de que nosotros insistíamos. Así que con mi compañero de equipo y yo, pasábamos viendo noticias o haciendo cualquier otra cosa desde las 9 hasta las 18, solo esperando que ya que en algún momento nos movieran a otro proyecto o nos despidieran ya que asumimos que no nos necesitaban o nos habían contratado nada mas por alguna razón política.

Sin embargo al principio de ese trabajo habíamos ayudado a otro equipo en un problema muy serio y habíamos solucionado un par de temas que no lograban resolver, con lo que nos habíamos hecho una muy buena reputación.

Y gracias a esa reputación, mientras veíamos a los chicos de ese otro proyecto cuando eran recriminados constantemente por su jefa, exigidos al máximo y humillados de vez en cuando a pesar de que trabajaban muy duro, a nosotros nos felicitaban.

Un día de esos de puras noticias en internet, esa misma jefa nos vino a felicitar por que había recibido muy buenos comentarios nuestros, que siguiéramos así y que nos extenderían el contrato. Y no, no era sarcasmo. Con mi compañero no pudimos evitar mirarnos y reír cuando se fue la jefa. Al parecer nuestra experiencia en el CV, además de la buena reputación ganada nos habían colocado como intocables a pesar que haber pasado meses nada mas calentando las sillas. Hicimos una buena venta.

En cambio en otros trabajos me ha tocado hacer el papel de los otros chicos, donde por mas que me haya esforzado en realizar un buen trabajo no lograba mas que algún "que bueno, por fin lo terminaste" o peor.

Cual es el error entonces? pues desde mi punto de vista el error en este caso es que el jefe, usuario o quien sea el que esta dandote ordenes no ve que es lo que haces, solo mira un resultado final que a veces ni siquiera es muy visible.

Vendete bien!

Parece mentira pero es así. Es un arte saber venderse como programador. Y aunque algunos lo podrían consideran poco ético yo lo considero algo necesario, quizá no en estos extremos pero siempre es necesario hacerse valorar. Muy seguido sucede que cuando alguien programa bien, a tiempo y sin quejarse, regalando horas extra y trabajando de mas, le sucede lo que le sucedió a Charles y a los chicos del otro proyecto: se asume que lo que hace es muy sencillo y por lo tanto no es muy valioso.

No es necesario llegar a ser Wally (Recuerdas el personaje en Dilbert?), pero hay que saber hacer ver a los usuarios/jefes/clientes que lo que uno hace no es sencillo (por que no lo es) y que aunque ahora podamos hacer algo en 5 minutos, tardamos 5 años para aprender a hacerlo en 5 minutos.

Ser buen programador no paga, al menos no por si mismo, hay que saberse vender y aspirar a algo mas. Hay que hacer relaciones públicas, crearte una buena reputación, saber explicar lo que se hace, saber decir "no" de vez en cuando y sobre todo saber cobrar lo que vale nuestro trabajo.

No nos conformemos con programar bien, vayamos mas allá y aprendamos a vendernos bien, aprendamos a cobrar bien y sobre todo aprendamos a hacernos valer.

Suerte!

No hay comentarios:

Publicar un comentario