Les hablé de varias cosas, entre ellas la premisa principal fue: Hacia dónde vas o a dónde quieres llevar tu carrera? Curiosamente la mayor parte de ellos quiere tener sus propias empresas. Esto nos llevó a hablar acerca de lo complicado y competido que se encuentra el mercado mexicano de software dirigido a pequeñas y medianas empresas (para el cual inevitablemente gran parte de nuestros egresados dirige sus esfuerzos en sus primeros años como profesional), en el cual lamentablemente la mayoría de éstas prefiere al que da mas barato y no al que ofrece la mejor calidad en muchos de los casos. Les hablé también de cómo a nadie le importa tu carrera mas que a ti, y es por esto que tienen que preocuparse por cultivar sus conocimientos y seguir aprendiendo frecuentemente. De cómo la "zona de confort" puede absorberte hasta el punto en el que dures cierto número de años haciendo lo mismo sin aprender nada nuevo (y en algunos casos ni ganar más), hasta que llega el día en que te das cuenta que te has quedado atrás... entre muchas otras cosas. En repetidas ocasiones noté la expresión de las personas a las cuales les estás hablando en otro idioma y no te entienden absolutamente nada.
He visto con tristeza cómo pasan los años y la calidad de la educación universitaria al menos en mi ciudad sigue siendo tan deficiente como cuando yo egresé. Es muy triste hablar con jóvenes que están en mi misma universidad y me repiten sus malas experiencias educativas tal y como si fueran las mías, después de 6 años de haber egresado: Profesores que no conocen las materias que imparten, que no asisten a clases, que insultan a los alumnos. Materias deficientes y desactualizadas, técnicas y/o lenguajes de programación que ya no se utilizan en la actualidad, etcétera. Dicho tiempo es el mismo que tengo esperando escribir lo siguiente: Es increíble, irritante e intolerable el mal estado de la educación en algunas universidades de México en lo que respecta a ingeniería en sistemas, o específicamente hablando, programación. Mientras que en Rusia, Estados Unidos, Inglaterra y otros países de primer mundo los jóvenes universitarios ya escribieron su propio protocolo de comunicación de datos, aquí apenas se nos menciona lo que es. Mientras ellos crecen con unix y lo utilizan durante toda su carrera, nosotros apenas y hemos escuchado hablar de "Linux", cuya definición generalizada es la de "un windows gratis"... Y podría continuar con infinidad de tecnologías y herramientas que mientras ingenieros en las últimas etapas de sus carreras conocen y utilizan en un muy alto grado en países de primer mundo, nuestros ingenieros ni siquiera saben que existen.
La pregunta es: Hay manera de cambiar esto? Definitivamente la respuesta no viene por parte de nuestro sistema de educación, el cual se encuentra afectado por algunas personas que por un lado no cuentan con dichos conocimientos y por otro no tienen el más mínimo interés en contar con ellos y mucho menos que sus estudiantes lo hagan. Yo creo que la solución mas viable viene desde afuera, está en cada uno de esos estudiantes a quienes realmente les interesa aprender. El problema viene cuando vemos ese porcentaje, el cual no es muy alto. En ese caso, cómo hacemos que nuestros jóvenes, futuros ingenieros en sistemas Mexicanos, se interesen por cultivar sus conocimientos, por aprender nuevas tecnologías o lenguajes de programación?
El estudiante de ingeniería en sistemas, inclusive el recién egresado PROMEDIO tienen un panorama muy limitado en lo que a su profesión respecta, incluso al egresar de su carrera (ésto con respecto a programación). No conocen más de dos o tres lenguajes de programación, de los cuales al menos dos son materias obligatorias dentro de su carrera. De éstos, el nivel de dominio es de aproximadamente (en mi opinión) un 60% del núcleo del lenguaje cuando mucho. Como consecuencia de esto, su conocimiento de frameworks de dichos lenguajes es nulo. Otra cosa verdaderamente alarmante es su falta de cultura informática. La mayoría nunca han leído un libro de programación que no haya sido parte de su carrera (esto asumiendo que efectivamente leyeron los libros de su carrera). La mayoría no ha oído hablar de libros como el pragmatic programmer, code complete o refactoring, y ni siquiera saben que existe el pragmatic bookshelf. No saben absolutamente nada de metodologías de desarrollo de software, especialmente de metodologías ágiles. No saben quiénes son los autores de los lenguajes de programación que utilizan, ni quiénes son los principales contribuyentes del open source. Muchos menos saben de personas más jóvenes cuyas contribuciones han hecho posibles las herramientas y técnicas de programación más utilizadas en el siglo 21 tales como Martin Fowler, David Heinemeier Hansson, Gavin King, Blake Mizerany, Venkat Subramaniam, entre muchos, muchos otros.
He tenido la oportunidad de trabajar con personas de muchos países (Estados Unidos, India, Rusia, Moldova, Argentina, Brasil, Inglaterra...). En algunos casos (no en todos) la educación universitaria ha sido superior a la que recibí yo. En otros, ha sido Infinitamente superior. Entiendo que no podemos ni debemos pedirle todo a la educación universitaria, pero si considero firmemente que dichas universidades de las que hablo tienen la obligación de actualizarse y preparar mejor a nuestros futuros ingenieros. Se me ocurren varias cosas que podrían llevar a cabo. Por ejemplo, los profesores deberían inculcar a sus alumnos la semillita de la curiosidad. No les cuesta nada darles a conocer que no sólo existen lenguajes como Turbo C y Pascal, y que en el mundo real dichos lenguajes no son con lo que la mayor parte de los sistemas empresariales están hechos. Que lo más seguro es que ni siquiera van a programar en ellos al egresar (de mis colegas de carrera, diría que un 10% utiliza en su trabajo los lenguajes de programación que nos enseñaron en la escuela). De igual manera, las personas que están al frente del departamento de informática deberían llevar a cabo una reestructuración mayor al catálogo de carrera, ésto con la finalidad de proporcionar a sus ingenieros herramientas y conocimientos acorde a las necesidades de la industria del software de hoy en día, la cual lamento informarles que ya cambió. Ya no es la misma de hace 20 años cuando hicieron el catálogo de carrera. Hoy en día necesita ingenieros que conozcan lenguajes como Ruby, Java, scala, groovy, javascript... Que conozcan tecnologías como ruby on rails, Spring, Hibernate, Grails y un largo etcétera. Que sepan de orientación a objetos, de patrones de diseño, de arquitecturas de software, de principios SOLID, de paradigmas de programación No Turbo C, ni Pascal, ni Flash...
Por otro lado, es alarmante la pasividad, parsimonía y conformismo (en muchos casos parte de nuestra cultura) que tienen nuestros estudiantes por aprender. Yo lo viví. Yo no leía, ni estudiaba, ni me preocupaba por aprender lo que se supone me deberían de enseñar como parte de mi carrera. Y como yo ha habido, hay y habrá muchísimos estudiantes en México. En general no nos educan ni nos enseñan a ser estudiantes activos. No leemos. No nos preparamos. No nos interesa. Creemos que saliendo de la universidad nos vamos a hacer ricos y vamos a ser exitosos, pero nunca nos preocupamos por el cómo. En otras palabras, es un problema de actitud, y en gran medida, cultural.
Sin embargo, el común denominador del ingeniero de software profesional desde mi punto de vista es el siguiente:
- Se preocupa por aprender nuevos lenguajes y tecnologías
- Es autodidacta y lo pone en práctica día a día
- Se mantiene informado con respecto a nuevos (y viejos) lenguajes, tecnologías y frameworks
- Tiene una mente abierta que le permite seleccionar la herramienta adecuada para el trabajo
- No tiene miedo ni parálisis paradigmática por incursionar con una nueva tecnología o lenguaje
Qué necesita el recién egresado o cualquier ingeniero de software para llevar a cabo esto? Si acaso la virtud de ser autodidacta, la cual no todos tienen. Fuera de ahí, todo es cuestión de actitud y y deseo hacer las cosas. Esto es algo que es necesario inculcar a nuestros jóvenes. Es necesario que los ingenieros en sistemas con experiencia como yo nos acerquemos a los jóvenes y a las universidades y hagamos esto de su conocimiento. Para ello existen las comunidades de software por ejemplo, donde la gente puede enriquecer sus conocimientos de manera gratuita y gratificante. Por otro lado, nada nos cuesta acercarnos a las universidades y hablar acerca de esto. Cuál es el beneficio? Generar una comunidad de profesionales que se ayuden unos a otros, lo cual inevitablemente elevará el nivel de la comunidad en cuanto a desarrollo de software y mejorará la industria mexicana. Sé que no es fácil, pero es la una de las formas más sencillas que tenemos de combatir el rezago informático en el que nos encontramos y así poder competir con los países de primer mundo en todos los aspectos.
Te interesa? Entonces ve y haz algo por nuestros jóvenes de alguna forma. Da una charla en una universidad. Asiste o expon en alguna de las comunidades de software en tu ciudad. Habla con uno, dos o un grupo de jóvenes de tus experiencias. Diles lo que en tu opinión deben hacer para mejorar. Más de uno te lo agradecerá.







