Historias de la Universidad (Parte 1)
Anoche, mientras navegaba por Facebook, apareció una publicación de un estudiante de primer año en la página de Confesiones de mi universidad. El estudiante compartía sobre sus experiencias estudiando en la Universidad.
Confesó que estaba estresado y ansioso porque la cantidad de conocimientos en la Universidad era demasiado grande para seguir el ritmo, mientras que sus compañeros parecían absorber todo más rápido que él. Esto lo hizo sentir más inseguro y querer rendirse.
Normalmente no tengo el hábito de comentar en páginas de Fans o Confesiones, pero al leer la publicación de este estudiante, me di cuenta de lo mucho que se parecía a mí hace 5 años. Por eso quiero escribir un breve artículo para compartir con ustedes el camino que recorrí hace 5 años, el mismo camino que ustedes recorrerán, en mayor o menor medida.
1. “¡Estudias Tecnología de la Información y ni siquiera sabes qué es Visual Basic, mejor déjalo ya!”
Esa fue la respuesta de mi compañero de Defensa Nacional cuando le pregunté sobre el libro grueso que tenía en la mano. Me sentí muy triste en ese momento, como si fuera un extraterrestre que acababa de caer en este lugar.
Después, en el dormitorio (donde conocí a Truong - Este chico era bueno desde la secundaria, había participado en todas las competencias de Informática a nivel de distrito y provincia), me preguntó: “¿Sabes qué son los punteros? ¿Sabes qué es la recursión? ¿Conoces el algoritmo de Dijkstra, el ciclo Hamiltoniano?” (¡¿QUÉ?!). No entendí nada de lo que dijo, solo pude sonreír. :))
En clase (donde conocí a Tu), mientras yo todavía estaba luchando por depurar un simple Hello World, Tu ya estaba en la pizarra programando como un dios: i++, j++ (¡¿QUÉ DEMONIOS?!).
“Oye, ¿qué es i++?” - dijo Uy =]].
Así era mi experiencia en programación :). Pero aun así logré sobrevivir 4 años de Universidad, así que la buena noticia para ustedes es que, ya sea que conozcan o no los fundamentos de la programación, cuando entren a la Universidad todos comenzarán desde el mismo punto de partida, solo que aquellos que ya saben algo tendrán más ventajas. Y eso es justo, porque durante los años de secundaria ya habían dedicado tiempo a estudiar en lugar de salir, ver películas o pasear.
Tengo un amigo que una vez me dijo que yo era como su meta, que se esforzaría hasta superarme, para ver quién alcanzaba su sueño primero. Le respondí: *”Yo no tomo a otros como mis metas, tengo mis propias metas. Además, cada persona nace con diferentes puntos de partida y diferentes esfuerzos, yo no sé cómo ha sido tu camino y tú tampoco sabes el mío. ¿Entonces cómo podemos compararnos?”*
2. Los conocimientos fundamentales en la Universidad
A continuación está la lista de materias generales en los primeros 3 semestres.
Matemáticas generales:
- Matemáticas discretas: Aprenderán sobre Vectores, operaciones con Vectores, álgebra de Boole, tablas de verdad, tablas lógicas, conceptos básicos de grafos…
- Probabilidad y estadística: Aprenderán sobre operaciones de cálculo de probabilidades, técnicas de conteo, estadísticas…
- Álgebra B1, B2: Aprenderán sobre operaciones con matrices, determinantes, espacios vectoriales…
- Cálculo B1, B2: Aprenderán sobre diferenciación, integración, derivadas…
Estas materias son extremadamente importantes para las materias de ciencias de la computación posteriores, así que concéntrense en aprenderlas bien. Las matemáticas discretas son importantes si más adelante se especializan en algoritmos, teoría de grafos, autómatas, compiladores, procesamiento de lenguaje natural. Probabilidad y estadística son necesarias si trabajan mucho en inteligencia artificial, Data Science, Machine Learning. El álgebra lineal, matrices, vectores, etc. tienen aplicaciones en Cryptography y análisis de complejidad de algoritmos.
Informática general:
- Electrónica Básica: Ya olvidé qué aprendí en esta materia, y tampoco sé cómo la aprobé.
- Teoría de Circuitos Digitales: Esta materia enseña sobre puertas lógicas AND, OR, XOR, NOT. Sistemas de numeración, operaciones a nivel de bits, etc.
- Introducción a la Programación: Esta materia es suave, aprenden cosas muy básicas como escribir “Hola mundo”, sintaxis básica: bucles, control, bifurcaciones…
- Teoría de Grafos: Esta fue mi materia favorita durante los 4 años de Universidad porque la profesora Van era muy amable. Aprenderán sobre recorridos de grafos (BFS, DFS), algoritmos de camino más corto (Dijkstra, Floyd + Bellman), conceptos de grafos (conectividad, isomorfismo, etc.), ciclos de Euler y Hamilton… Deberían leer:
Introduction To Algorithm [THOMAS H. CORMEN, CHARLES E. LEISERSON, RONALD L. RIVEST, CLIFFORD STEIN] - Introducción a la Tecnología de la Información 1, 2: Estas dos materias son principalmente para “dar un vistazo general” por diversión, les presentarán la carrera de Tecnología de la Información, las especializaciones y las direcciones de investigación. Estas dos materias son ligeras, no se presionen.
- Bases de Datos: Aprenden sobre conceptos básicos en sistemas de información y bases de datos, sistemas de bases de datos y modelos de datos relacionales, uso de SQL para consultar bases de datos, diseño de bases de datos, análisis de calidad de un esquema de base de datos.
- Arquitectura de Computadoras y Lenguaje Ensamblador: Aprenden sobre diseño de arquitectura de computadoras, visión general de computadoras, arquitectura MIPS, x86, x32, diseño de CPU, sistemas de numeración y almacenamiento en computadoras… Deberían leer:
Computer Architecture: A Quantitative Approach [John L.Hennessy and David A.Patterson] - Sistemas Operativos: Esta materia es importante, necesitan aprenderla bien. Aprenderán cómo funcionan los sistemas operativos, sobre el Kernel del OS, sistemas de archivos FAT32 y FAT64, cómo el OS gestiona y programa procesos, sincronización entre procesos, gestión de memoria en el OS… Deberían leer:
Operating System Concepts [Silberschatz, Galvin, Gagne]. - Redes de Computadoras: Esta materia es importante, deberían invertir mucho tiempo en estudiarla. Aprenderán sobre redes de computadoras, cómo los sistemas de computadoras trabajan entre sí, cómo se transmite un paquete en el sistema de red, conceptos de redes (IP, subnet mask, …), el modelo OSI de 7 capas, y luego estudiarán en detalle cada capa del modelo de red. Deberían leer:
Computer Networking: A Top-Down Approach [7th Edition, Kurose & Ross] - Programación Orientada a Objetos: Deben dominar esta materia, si aprenden bien esta materia podrán aprender rápidamente cualquier lenguaje de programación. Y recuerden, al final el lenguaje es solo una herramienta para implementar sus ideas. No deberían priorizar el lenguaje de programación sobre los fundamentos para construir ese lenguaje. Deberían leer:
Head First Design Pattern [Head First],Design Patterns [Gang Of Four] - Técnicas de Programación: Esta materia les enseñará conceptos de programación (Punteros, memoria, matrices, stack, heap…) y técnicas de programación muy útiles (Programación dinámica, backtracking, y mi favorita es greedy) Jeje.
- Estructuras de Datos y Algoritmos: Esta materia les enseñará los tipos de estructuras de datos en programación (Tree, Stack, Heap, Queue…). Cómo usar cada tipo de datos en casos específicos. También les enseña algoritmos básicos (Ordenamiento, Búsqueda…), evaluación de complejidad entre algoritmos. Cuándo usar esto, cuándo usar aquello, cuál es mejor, qué hay que sacrificar, etc. Para aprender bien esta materia, además del material del curso, deberían leer:
Introduction To Algorithm [Steven S.Skiena]oIntroduction To Algorithm [THOMAS H. CORMEN, CHARLES E. LEISERSON, RONALD L. RIVEST, CLIFFORD STEIN]para mejorar sus habilidades.
Además, para convertirse en un programador con conciencia, que escribe código con pocos bugs, y que otros no se frustren al leer su código, deberían leer: Clean Code [Robert C.Martin], Code Complete [Steve McConnell], Refactoring [Martin Fowler, Steve McConnell], Pragmatic Programmer [Andrew Hunt, David Thomas].
3. Elegir una especialización:
Después de los primeros 3 semestres, podrán elegir una especialización según sus preferencias.
PODRÁN ELEGIR su especialización, no serán forzados ni tendrán que preocuparse por quedarse sin cupo, ya que algunos estudiantes me preguntaron sobre esto, así que lo aclaro aquí.
Nuestra facultad actualmente tiene 6 especializaciones:
- Ingeniería de Software (Software Engineering): Aprenden sobre el proceso de desarrollo de software; análisis de requisitos, diseño de software, implementación y pruebas de software.
- Sistemas de Información (Information System): Aprenden a desarrollar y construir sistemas de información complejos, inteligentes y optimizados; investigación en seguridad de información, extracción de información multilingüe.
- Redes de Computadoras y Telecomunicaciones (Computer Networks and Telecommunication): Desarrollo de aplicaciones de red, sistemas operativos para dispositivos de red, desarrollo de sistemas.
- Ciencias de la Computación (Computer Science): Minería de datos, análisis y diseño de algoritmos para optimizar problemas, desarrollo de sistemas de inteligencia artificial (AI)…
- Ingeniería del Conocimiento (Knowledge Engineering): Investigación en procesamiento de lenguaje natural (voz) o multimedia (archivos de audio); investigación en criptografía y seguridad de la información.
- Visión por Computadora y Ciencia de Robots (Computer Vision and Robotics): Integración de técnicas de gráficos por computadora y procesamiento de imágenes digitales en dispositivos móviles y robots. Apoyo en detección, reconocimiento, consulta y recreación de objetos en diferentes entornos.
En esta etapa, ustedes mismos registrarán las materias apropiadas para su especialización. Por ejemplo, si eligen “Ingeniería de Software”, deben acumular N créditos de materias de software y completar N materias obligatorias en ingeniería de software.
Un consejo para ustedes es que no solo elijan materias dentro del alcance de su especialización, también deberían elegir materias de otras especializaciones que sean interesantes, útiles y complementen su especialización principal. Por ejemplo, si eligen Ingeniería de Software, pueden tomar materias adicionales de Ciencias de la Computación como “Análisis de Complejidad de Algoritmos”, “Análisis y Diseño de Algoritmos” o “Tema Especial de Sistema Operativo Linux” o “Seguridad de Bases de Datos” o “Minería de Datos y Aplicaciones” o “Machine Learning”… En resumen, deben saber elegir las materias correctas.
Para más información sobre las especializaciones, consulten aquí Especializaciones en TI
4. ¿Son realmente importantes las calificaciones?
*”Bah, estudiar es solo por el conocimiento, las calificaciones no importan.”*
Les digo directamente que esta frase es solo una excusa de los estudiantes perezosos que no hacen las tareas. Si completan todas las tareas, sus calificaciones serán proporcionales a su esfuerzo.
Volviendo al tema, ¿son realmente importantes las calificaciones en la Universidad? Mi opinión es que no son extremadamente importantes, pero tampoco son algo que se pueda ignorar.
Las calificaciones, dentro de la Universidad, por un lado sirven para que no paguen la matrícula de tonto reprueben materias, por otro lado tienen un significado más importante para aquellos que necesitan becas para pagar la matrícula o los gastos mensuales. A más largo plazo, les permitirán aplicar a becas de estudio en el extranjero.
Las calificaciones, fuera de la Universidad, son lo primero que los empleadores mirarán (para recién graduados) para ver si pasan la primera ronda. Pónganse en el lugar del empleador: eres recién graduado, no saben nada de ti, ¿qué usan para evaluar tu capacidad y tu persona? No sé exactamente cómo evalúan los empleadores, pero creo que el GPA dirá algo sobre ti: ¿eres una persona responsable (con tus estudios)? ¿Tienes las condiciones para llegar a la ronda técnica, a la entrevista? Las calificaciones son como el boleto para entrar a un salón de eventos, donde se mostrará tu verdadera capacidad. Si ni siquiera tienes el boleto de invitación, ¿cómo tendrás la oportunidad de mostrarte?
Entonces, ¿son importantes las calificaciones?
5. Actividades extracurriculares, ¿sirven para algo?
Hablando de actividades extracurriculares, les digo directamente que no participé en muchas actividades de la Unión de Estudiantes. Solo seleccioné algunas actividades realmente significativas (para mí y para otros) para participar. Por ejemplo, donación de sangre, festival de medio otoño, visitas a zonas rurales… Estas actividades son beneficiosas, te dan experiencias y ayudan a otros.
Estas actividades extracurriculares serán puntos destacados importantes en las solicitudes de becas de estudio o becas internacionales.
Además de las actividades en la universidad, pueden encontrar otras actividades de organizaciones benéficas. Participé en actividades de caridad de la organización no gubernamental Habitat en conjunto con la Universidad Nacional de Ho Chi Minh, la corporación POSCO de Corea y estudiantes coreanos para construir casas de caridad para personas pobres en Vung Tau. Estas actividades son muy significativas y también les ayudan a hacer amigos y conexiones para el futuro.
Pueden consultar más aquí: Habitat for Humanity Vietnam.
6. Becas, ¿dónde encontrarlas?
Cada semestre nuestra universidad tiene muchas becas para apoyarles:
- Beca de incentivo académico para estudiantes con altas calificaciones (se asignan de mayor a menor hasta agotar el cupo). Cuando era estudiante de primer año, el valor era de 2.5 millones de dong, luego en cuarto año aumentó a casi 4 millones por semestre (
probablemente por la inflación :))). Esta cantidad es suficiente para cubrir (parte de) la matrícula.
En realidad, no creo que sea demasiado difícil obtener esta beca. Sus calificaciones promedio solo necesitan estar por encima de 8.0 para tener la oportunidad de recibirla. En cuanto a los puntos de desarrollo personal, creo que no es necesario dedicar demasiado tiempo a participar en actividades de la Unión de Estudiantes, solo necesitan participar en algunas actividades principales (ver la sección de actividades extracurriculares) y no violar ninguna de las ‘reglas’ de la universidad (faltar a sesiones cívicas, confirmación de residencia, etc.) para cumplir con los requisitos. - Además, nuestra facultad también tiene alianzas con empresas para otras becas. Grandes empresas como KMS, ELCA, CSC, Global Cybersoft, NTTData, GameLoft, VNG… todas tienen alianzas con nuestra facultad para otorgar becas semestrales (anuales) a los estudiantes. El valor de las becas varía de 3 a 5 millones de dong dependiendo de la empresa.
Para obtener estas becas, sus calificaciones promedio no necesitan ser muy altas (solo 7.5+). Generalmente, estas becas están dirigidas a estudiantes con dificultades económicas en la facultad, por lo que habrá un requisito (opcional) de presentar un certificado de situación familiar difícil de su localidad. Para este certificado, vayan al Comité Popular de su localidad y soliciten el certificado.
Estas becas, además del valor material (dinero), algunas empresas también les ofrecen oportunidades de prácticas (KMS, que yo sepa), o les enviarán una invitación para trabajar inmediatamente después de graduarse. ¿Genial, verdad? - Información adicional: nuestra facultad también tiene un Fondo de Becas de antiguos alumnos para estudiantes con situaciones realmente difíciles (este parece no requerir calificaciones altas, 7.0+).
Serán entrevistados por los profesores encargados del Fondo de Becas, ellos decidirán su destino :). Según sé, esta beca se otorga mensualmente durante los 4 años de estudio con el requisito de que completen satisfactoriamente el programa de estudios.
Para más información, visiten: Fondo de Becas de Antiguos Alumnos de la Facultad de TI.
Más adelante están las becas más grandes, que requieren más logros (GPA muy alto: 8.5+, buen inglés: Essay, algunas becas requieren prueba técnica, contribución a la sociedad: actividades extracurriculares, bonus: proyectos de investigación, artículos científicos, premios internacionales, etc.).
En este punto, sus actividades extracurriculares realmente demostrarán su valor, las actividades que sirven a la sociedad y la comunidad serán muy valoradas por el comité de evaluación, lo que en parte revelará su carácter como persona. Las grandes becas evalúan a las personas desde muchos aspectos, no solo el estudio, es como si el Talento y la Virtud debieran ir juntos.
A continuación listo solo las becas que he obtenido, nuestra universidad tiene muchas otras becas equivalentes, pueden buscar más en el sitio web de la universidad:
- Beca Odon Vallet 2016 de Recontres du Vietnam – Fundación Vallet para estudiantes con logros sobresalientes. (Valor 15 millones de dong)
- Beca Sunflower Mission Engineering and Technology de eSilicon Corporation y la fundación Sunflower Mission. (Valor $300)
- Beca Pony Chung patrocinada por la fundación Pony Chung, Hyundai Development Company y la Universidad Nacional de Vietnam. (Valor $500 + Oportunidad de beca de posgrado en Corea)
- Beca Lawrence S.Ting del Lawrence S.Ting Memorial Fund para estudiantes con logros sobresalientes. (Valor 10 millones de dong)
La sección de Essay para becas, cuando tenga tiempo escribiré sobre mi experiencia con Essays, ahora me da pereza =]].
3 segundos de publicidad del diploma de Sunflower (Este diploma es bonito así que lo presumo :)):
7. ¿Cómo estudiar?
Lo más importante sigue siendo ustedes mismos, no habrá ningún método de estudio que sea perfecto para ustedes. Deben encontrarlo por sí mismos.
Pero mi consejo es que deberían tener un grupo de estudio. Para mí, este grupo no necesita ser de los mejores de la clase, solo necesitan que estén dispuestos a estudiar juntos (recuerden, estudiar más que jugar), compartir conocimientos entre ustedes, de vez en cuando dejarse copiar código =]], porque la cantidad de conocimiento en la Universidad es muy grande, especialmente en nuestra carrera, así que necesitan compañeros de estudio, y para invitarse a faltar a clase para ir al cine o karaoke. En ese entonces vivía en el dormitorio con Truong, él era aplicado en los estudios así que me pegué a él para que me enseñara; los dos nos desvelábamos para cumplir con las fechas límite, gracias a eso mejoramos. (y)
En Ingeniería de Software hay un concepto llamado Trade-off, que significa que deben saber equilibrar entre lo que se gana y lo que se pierde, entre costo de memoria y tiempo, entre esta materia y aquella, en circunstancias específicas, la elección que hagan es su decisión :).
*”You can not write perfect softwares. Because a perfect software does not exist. No one in the brief history of computing has ever written a piece of perfect software. It’s unlike that you’ll be the first. And unless you accept this as a fact, you’ll end up wasting time and energy chasing an impossible dream”* (Pragmatic Programmer).
También deben practicar el pensamiento crítico, es decir, cuando alguien presenta un problema o una solución, deben saber cuestionar: “¿Por qué hacerlo de esta manera y no de otra?”, “¿Cuáles son las ventajas y desventajas de este método comparado con el otro?”, “¿Será fácil de escalar o mantener en el futuro?”, “¿Hay alguna forma más inteligente?”… ese tipo de preguntas.
Hacer preguntas les ayudará a entender mejor el problema, la persona con la que hablan también sabrá que entienden el problema lo suficiente como para hacer preguntas, en lugar de solo asentir y seguir sin saber si está bien o mal, entonces no tienen lo que se llama Critical thinking.
Otro punto es que antes de hacer preguntas, deberían investigar a fondo sobre el tema, solo cuando no encuentren la respuesta o no sepan qué palabras clave usar para buscar, entonces deberían preguntar a otros. Así ahorran tiempo a otros (a veces si la pregunta es muy tonta y te regañan, no seas inmaduro y discutas), y se ayudan a desarrollar la habilidad de auto-investigación. Cuando salgan a trabajar, si el jefe les da una tarea y no saben cómo investigar, ¿a quién van a preguntar? ¿Van a volver a preguntarle al compañero de la universidad? =]]
Aquí hay algunos canales que pueden consultar: Medium, Stack overflow, Quora. Además, hay grupos de estudio en Facebook de la facultad, deberían seguir estas páginas para mantenerse informados.
Método para absorber conocimiento en una materia: traten de aprender los conceptos básicos (cómo funciona el algoritmo, cómo funciona el protocolo, ventajas y desventajas de cada tipo de base de datos, …) en lugar de enfocarse demasiado en la sintaxis y las bibliotecas.
Y deben dedicar tiempo a leer libros adicionales, el conocimiento en la universidad es el mismo para todos. Entonces, ¿qué los diferencia de los demás? Es el conocimiento que recopilan por su cuenta fuera del aula. Leer libros adicionales les ayudará a tener una visión más profunda de lo aprendido en clase. A veces lo que dice el profesor en clase no es 100% correcto. Leer libros nunca es inútil :). Ya listé algunos libros famosos en la sección 2. Conocimientos fundamentales en la Universidad.
Recuerden que son un Engineer, no un Coder.
8. “¿Tu salario es suficiente para vivir?”
Esta es la última pregunta después de que me extraen todas las experiencias de estudio. Siempre respondo “No” =]]
¿Qué es suficiente? ¿Solo suficiente para sobrevivir? Entonces supongo que es suficiente porque todavía estoy vivo escribiendo este artículo.
Hay un dicho que encuentro muy cierto: Sigue tu pasión y las deudas te seguirán “Sigue tu pasión y el éxito te seguirá“. Cuando trabajas con todo tu esfuerzo y capacidad, otros lo notarán, evaluarán correctamente lo que has aportado, y recibirás lo que te mereces.
Otra historia de una entrevista: después de preguntarme el salario que esperaba, la amable señora de recursos humanos me compartió:
1 | La carrera de cada persona pasará por 3 etapas: |
Al final ella respondió “El salario que propones es demasiado alto, nuestra empresa no puede pagarlo” =]].
Le conté esta historia a mis amigos cercanos, ellos dijeron que es una teoría de conspiración para lavarle el cerebro a los estudiantes =]].
Personalmente, creo que lo que ella dijo también es cierto, “Follow your passion and success will follow you.”
El día de la graduación, el director de la Facultad les garantizará 100% de empleo después de graduarse, así que no se preocupen por el desempleo o los salarios (aunque ese trabajo podría ser mecanografiar documentos :3)
9. Conclusión
En general, el camino universitario que recorrí, y que ustedes recorrerán, probablemente sea el período más hermoso de la vida.
Antes solía escuchar a los estudiantes mayores decir “Trabajar es más triste que estudiar” o “Ahora desearía volver a ese mes de entrenamiento de Defensa Nacional, seguro que la pasaría increíble en el Centro de Defensa Nacional”. En ese momento yo también decía “Sí, también lo creo”, aunque en ese momento no tenía ninguna experiencia para decir eso =]].
Ahora, habiendo pasado esa época estudiantil, finalmente entiendo los sentimientos de quien lo decía.
Hablando mucho, en resumen, 4 años pasarán muy rápido, así que tómense las cosas con calma, disfruten lentamente las fechas límite con sus amigos. Al final, mirando hacia atrás, no es nada del otro mundo. ¡NOT A BIG DEAL! Lo que obtendrán son los recuerdos de la época estudiantil llena de pasión :).
Por cierto, un minuto de silencio por la contribución de los compañeros: Dap Xich Lo (DevOps & Security Engineer), Canh Nguyen (Back-end Engineer) que ayudaron a revisar y corregir este artículo.