España ¿Las empresas buscan programadores o monos?

1 enero, 2013

Curiosidades, Negocios

Es curioso como los informáticos se quejan de que no hay trabajo digno, de que las consultoras (mal llamadas cárnicas) pagan una mierda, de que en otros países hay ofertas de trabajo por el doble, etc… y sin embargo, tenemos a los empresarios en el otro lado que dicen que no hay forma de encontrar a buenos programadores.

Creo que informática es de las pocas profesiones donde hay paro y un fuerte damanda al mismo tiempo, es realmente curioso, sobre todo por que encontramos a todos los implicados enfadados con la otra parte. Empresarios diciendo que los informáticos no quieren trabajar y informáticos diciendo que no hay trabajo o que les pagan poco.

No es la primera que hablo de este problema en mi blog, y diga lo que diga siempre hay gente a favor o en contra, pero intentaré (una vez más), explicar cual es la verdadera raíz del problema.

Antiguamente…..

Hace una o dos décadas, no se hablaba de contratar a un programador. En el mundo empresarial el puesto de informático estaba totalmente detallado, con nombre, con unas funciones y responsabilidades y un salario de acuerdo al puesto de trabajo.

Aunque no había un standard reconocido, los puestos de trabajo que podíamos encontrar más o menos eran estos:

Programador

El programador era el puesto más bajo en las empresas tecnológicas, y normalmente se contrataba a gente sin grandes aspiraciones en la carrera informática y sin necesidad una capacidad técnica muy avanzada; matemáticos, físicos, módulos de FP (no habían estudiado para ser analistas), cualquier cosa era buena para ser un programador, y a menudo se bromeaba con enseñar a los monos a programar C.

Un programador lo único que hacía era traducir un pseudocódigo que le habían pasado a un lenguaje entendible por la máquina, pero todo el trabajo complicado ya lo había hecho otra persona, diseñando el algoritmo a aplicar.

Analista-Programador

El siguiente puesto por categoría era el de Analista Programador (AP), una persona que es capaz de enfrentarse a un problema sencillo, diseñar una solución y programarla.

El AP podía hacer gran parte del trabajo sólo, el no tener que escribir un algoritmo para pasárselo a otra persona suponía un ahorro en tiempo y en errores, un AP podía hacer el trabajo de 4 programadores, pero no por que fuera cuatro veces mejor, sino por la reducción de la necesidad de comunicación, es donde se pierde mas tiempo, en contarle a otro lo que tiene que hacer.

Analista

El Analista no solía programar, era alguien capaz de analizar un problema extremadamente complejo y diseñar la solución más optima que después escribía en un documento que utilizaban los Programadores y Analistas-Programadores.

El puesto de Analista, tradicionalmente se le daba al programador que llevaba muchos años en la empresa, un error garrafal que se solía cometer, y una de las razones por las que este modelo dejo de funcionar.

Para ser analista era necesario ser ingeniero informático en la mayoría de los casos, pues se aplicaban técnicas de diseño que sólo se estudiaban en esta carrera.

Arquitecto

Este era uno de los puestos de más responsabilidad, pues era el encargado de decidir que tecnologías se usaba, que arquitectura, que framework, etc… era el responsable de que la solución fuera escalable, mantenible y segura.

El arquitecto normalmente trabaja ajeno al proyecto, sólo participaba activamente en las fases iniciales, y durante el resto del proyecto a modo de consulta.

¿Y que pasó con este modelo?

Este modelo tenía una serie de problemas que lo hicieron inadecuados para el nuevo milenio.

  • Necesita demasiada documentación y burocracia, y esto sólo es útil en grandes desarrollos que van a estar en mantenimiento durante muchos años por personas diferentes. Por ejemplo, si se diseña un sistema de facturación para una gran empresa, y una vez acabado lo va a mantener otra empresa.
  • Hubo una degeneración de los puestos de trabajo. Cada vez se contrataba a programadores más baratos y más malos. A los programadores que llevaban dos años trabajando se les ascendía, por que para cobrar más tenía que tener otro cargo. No existía el concepto de programador muy bueno que cobrara más que los demás.
  • Los analistas acabaron fuera de juego, se alejaron demasiado de la tecnología, no sabían a menudo lo que había detrás de las cosas que estaban pidiendo.
  • Los arquitectos… con el avance de internet, de los nuevos lenguajes de programación, las nuevas tecnologías, no podían estar al día de todo, y cualquier chaval que le gustara un poco trastear en su casa sabía más que él en determinadas áreas.

Cuando explotó la burbuja del año 2000, una de las razones fue que el coste de desarrollar tecnologías a la forma clásica era demasiado costoso y lento para lo que necesitaba. Había que sacar una beta en 6 meses con 2 o 3 personas programando, y no un equipo de 40.

El concepto de programador en las Start Ups

Las Start Ups se dieron cuenta que con pocos programadores-analistas-arquitectos (yo me lo guiso, yo me lo como), era posible desarrollar proyectos en poco tiempo y a un coste menor.

Un programador de estos, era capaz de hacer el trabajo de 10 programadores tradicionales, aunque a veces se cometían errores de escalabilidad, de seguridad, etc… pero esto ya se arreglaría más adelante.

Al reducir la necesidad de comunicación entre las distintas personas del equipo, al llevarlo todo “en la cabeza”, la programación era muchísimo más rápida, pero sin embargo, menos mantenible, menos coherente en conjunto, pero esto daba igual, había que salir lo antes posible.

De esta forma, las Start Ups empezaron a contratar sólo programadores (cuando realmente estaban pidiendo otra cosa) y los sueldo empezaron a subir ¿seguro?

Realmente los sueldo no subieron, se le estaba pagando lo mismo que a cualquier Analista- Arquitecto, pero ahora además tenían que programar, era la diferencia, pero no sólo se contrataba a gente con años con experiencia, ahora se buscan a chavales que de una forma u otra sobresalían del resto, con unas capacidades muy por encima del resto de compañeros.

 

La leyenda de los sueldos de USA…

Es curioso escuchar hablar a estudiantes de informática diciendo que en USA están pagando 50.000$/año, que en Londres pagan 40.000 libras, que en Madrid están pagando 35.000€, y que por menos de 20.000k no se presentan a una oferta de trabajo.

Pero antes de continuar, vamos a aclarar algunas cosas respecto a los salarios. El sueldo medio de programador en USA está en 55.000$, pero hay que tener en cuenta una serie de cosas, en USA la Seguridad Social y el seguro médico lo paga el trabajador y no hay baja por enfermedad o despido como en España. Desde el punto de vista de la empresa, un sueldo en USA en 55.000$, se aproxima a un sueldo español de 25.000€. Esta diferencia viene del modelo de bienestar Español y del cambio de moneda.

Captura de pantalla 2013-01-28 a las 23.22.46

Muchos recién titulados cuando llegan a otros países acaban decepcionados por que acaban con sueldos que al final son equivalentes a la media española, y sólo el 10% logra despuntar y conseguir uno de esos famosos puestos de trabajo de más de 100.000$ (unos 50.000€ en España). Por que para tener un puesto “top” no es suficiente con lo que se enseña en la universidad, hay que ser un fuera de serie, alguien excepcional.

Por otro lado, tenemos a las empresas: las que llevan más tiempo ofrecen trabajo de programador (con el concepto antiguo) a un salario de  los antiguos  (12.000-15.0000), y por otro lado muchas PYMES que no tienen muy claro la diferencia entre programador y analista, y cuando ofrecen un puesto de trabajo para programador, es como jugar a la lotería, pues no saben lo que quieren y no son capaces de valorar lo contratan y a menudo se quedan con la sensación de que en España no hay buenos programadores.

Las empresas no se enteran de que no se puede contratar a un recién titulado y ponerlos a diseñar la arquitectura de una web de alto rendimiento, y por otro lado, encontramos a estudiantes que se creen que en la universidad han aprendido todo lo necesario para montar un Facebook.

En uno de los proceso de selección, pusimos este problema a los candidatos:

CHOCO-LATE. Escribe un algoritmo en cualquier lenguaje de programación (uno de los 20 que aparecen aqui:http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html ) que cuente del 1 al 100 y que muestre por pantalla “CHOCO” cuando el número sea divisible por 3, “LATE” cuando se divisible por 5 y “CHOCOLATE” cuando sea divisible por 15.

La mayoría de los que respondieron a la pregunta lo hicieron de forma incorrecta y ninguno dio una respuesta mejor o igual a la que había dado yo. Y no fallaron por que no supieran programar, fallaron por que no leyeron correctamente el problema, no hicieron un análisis exhaustivo, simplemente se pusieron a programar.