
El los últimos años se está produciendo un fenómeno muy curioso en nuestro país. Mientras cada vez se depende más de la tecnología y del software, cada vez hay menos gente que decide matricularse en carreras de informática. Analizar las causas por las cuales se está sucediendo esta situación daría para otro artículo, pero sin duda alguna una de ellas está en el desfase total que se está produciendo en lo que se enseña en en las universidades y lo que demanda el mercado laboral. Esta situación anómala está llevando a que cada vez haya más gente que se plantee autoformarse haciendo uso de plataformas online.
Con el lanzamiento de Khan Academy en el año 2006 se ha produjo un movimiento de innovación dentro la educación superior. Las universidades más prestigiosas del planeta están poniendo a disposición de cualquier persona con una conexión a Internet la posibilidad de enrolarse en algunos de los cursos que ofrecen de manera presencial. El proyecto edX, organización sin animo de lucro formada entre el MIT y la universidad de Harvard, tiene de manera abiertas cursos que van de la programación a la inteligencia artificial, pasando por cursos de electrónica o gráficos por ordenador. Cursos con el mismo contenido que se imparten en universidades como la de Berkley. Hasta la UNED ha decidido poner en marcha varios cursos dentro de su proyecto UNx.
Basados en este modelo de cursos online hay nuevas startups como Udacity o Coursera que están ofreciendo una plataforma online para aprender todo tipo de materias: Física, estadística o matemáticas y por supuesto todo tipo de cursos relacionados con el desarrollo software.
Si hablamos desde el punto de vista de la programación, también están apareciendo nuevas iniciativas que permiten aprender de una manera interactiva casi cualquier tecnologías relacionadas con el mundo web. En CodeAcademy es posible aprender JavaScript, Phyton o Ruby. También hay propuestas que intentan dar un giro al aprendizaje para que sean más divertidas. Para los fans de los zombies puedes aprender mientras conoces sus secretos con Rails para Zombies. Si por el contrario te gusta la filosofía Zen también tienes tu proyecto llamado Ruby Koans.
Pero la pregunta que surge es si realmente es posible convertirse en un buen programador haciendo uso solo de los recursos online que hay disponibles. Esta claro que la base teórica queda más que cubierta. Todos los lenguajes tienen miles de introducciones, tutoriales y posts a nuestra disposición. Si nos quedamos atascados podemos hacer usos de plataformas como StackOverflow que incluyen millones de preguntas y respuestas para casi cualquier duda imaginable. El problema está en que con todo eso solo nos quedamos en la primera capa de la programación. Con eso uno no se convierte en uno de esos programadores estrella de facebook o google que ganan $150000.
Técnicas de desarrollo como TDD (en castellano Desarrollo guiado por pruebas) o BDD (Desarrollo guiado por comportamiento), la filosofía ágil con el eXtreme Programming (XP), deben estar en el ADN del buen programador. Conseguir estas capacidades es mucho más complicado que programar nuestro primer blog. Aprender realmente a sacar provecho a estas técnicas para ofrecer un producto de calidad, es muy complicado solo haciendo uso tutoriales web. Trabajar en proyectos donde estas prácticas sea de debido cumplimiento es la forma optima de interiorizarlos en nuestra forma de programar y permitirnos dar el salto al siguiente nivel.
Pero entonces, si en las universidades no me dan respuesta y tampoco tengo la posibilidad de estar dentro de un equipo de alto rendimiento que me ayude a convertirme en un gran programador ¿Qué puedo hacer para convertirme en un verdadero profesional del desarrollo software?
Sinceramente creo que la única forma que existe es dentro de las aulas o de las salas de conferencias, pero no de las universidades, sino de la mano de profesionales del sector con experiencia probada tanto en multinacionales como en pymes, que están día a día viviendo la realidad del mercado. Profesionales que te pueden ayudar a enfocar al punto justo de las necesidades del mundo del desarrollo software. Mentores que te ayuden a ampliar tus conocimientos, y no solo de programación, también de usabilidad, ecosistemas de desarrollo o arquitectura de sistemas. El abanico es tan grande y amplio que sin enfoque claro que te ayude a desenmarañar lo importante de lo superficial es muy difícil convertirse en ese buen programador que todos quieren ser.