Acabo de terminar la carrera de Informática y he empezado a buscar trabajo como programador, pero la mayoría de las empresas exigen unos conocimientos que no he adquirido en la universidad. ¿Qué debo hacer?

Tengo malas noticias para ti. La universidad no te enseñó lo que necesitas para conseguir algún trabajo específico. De hecho, no podrían aunque quisieran, porque cada trabajo tiene unos requisitos diferentes. Lo que deberían haberte enseñado (ojalá te hayan enseñado) es a programar y a aprender cosas nuevas. Sencillamente, hay demasiadas diferencias entre los trabajos en el mundo real como para que las universidades pierdan el tiempo intentando centrarse en uno solo. Eso, y el hecho de que a menudo van con 2-5 años de retraso en las herramientas (ordenadores, SO, lenguajes) que están usando para enseñarte las habilidades que necesitas, significa que el problema es tu expectativa, no la universidad (bueno, probablemente no la universidad, obviamente no sé si el programa por el que pasaste apestaba o no).

Cuando estaba en la escuela aprendí trozos de una docena de lenguajes, pero cuando conseguí mi primer trabajo no usé ni uno solo de ellos. Trabajé en 4 sistemas operativos diferentes en la universidad, pero no volví a tocar ni uno solo de ellos (bueno, uno de ellos era el PDP 11, que sí ejecutaba un sabor de Unix y, por supuesto, he utilizado otros sabores desde entonces, pero no DEC Unix). Pero eso estaba bien porque me enseñaron los fundamentos de muchos tipos de lenguajes diferentes (funcional, procedimental, declarativo, etc.). Así que fui a comprar libros sobre los lenguajes/OSs/bibliotecas que necesitaba conocer para hacer mi trabajo. No pasó mucho tiempo antes de que pudiera ser productivo en esos nuevos lenguajes. Pasó bastante tiempo antes de que fuera realmente prolífico en ellos. Algunos de ellos desaparecieron antes de que yo llegara y ya habían pasado al siguiente reto.

Esto fue en los días anteriores a los omnipresentes ordenadores personales, los navegadores web y la generalización de Internet. Hoy en día hay 10.000 proyectos de código abierto en curso en cualquier lenguaje que puedas nombrar, cada uno de los cuales es una mina para aprender un nuevo lenguaje, nuevas técnicas, nuevas bibliotecas, etc. A cualquiera de ellos puedes unirte y, junto con un motor de búsqueda, aprender lo que necesitas saber en casa mientras haces entrevistas de trabajo (o mientras trabajas en tu trabajo no soñado). Cuando empecé, no había una forma fácil de aprender a programar bajo IBM TSO o de aprender PL/I en casa, aunque podía leer libros caros sobre ello.

Desde entonces, 35 años después, he aprendido unos 20 lenguajes en una docena de sistemas operativos diferentes. Puedo coger un nuevo lenguaje en un par de semanas y ser productivo. No estoy presumiendo, cualquiera que trabaje en ello el tiempo suficiente obtendrá esta habilidad crítica, o pasará a la gestión ;-).

Así que, en lugar de preocuparte por lo que sabes hoy, encuentra el trabajo que sea interesante y que esté dispuesto a enseñarte lo que necesitas saber. O, dicho de otro modo, no dejes que las lagunas en tus conocimientos se conviertan en una excusa para no ir a por el trabajo que quieres. O bien rellena esas lagunas tú mismo, o encuentra una empresa que te pague por hacerlo (y no esperes que te paguen lo mismo que al que lleva cinco años haciéndolo, que la formación en el puesto de trabajo puede valer mucho más que el sueldo que conlleva).

Te deseo toda la suerte, pero haz la mayor parte por ti mismo.