¡Qué difícil es aprender! Hace pocos días estaba navegando en YouTube y me encontré con un video que tiene harto sentido lógico: no todos aprendemos igual. El hecho de poder hacer un Zero to Hero o aprende el XYZ horas continuas de video, no garantiza algo esencial que es aprender.
En la reflexión de esta persona se indicaba que cada persona tiene formas de aprender, motivaciones y conocimientos distintos, los cuales se pueden apelar a la hora de aprender un nuevo conocimiento. Mientras hay personas que aprenden haciendo cosas (o adquiriendo la técnica), hay otras personas que contemplando pueden aprender, o la famosa forma de aprender por ósmosis.
En una última parte de la reflexión de la persona se basaba en que la peor forma de aprender en informática es solo viendo codificar a alguien, sin tener el IDE abierto, sin embarrarse las manos, sin entender la lógica buscada, sin comprender que esa respuesta de Stack Overflow es parte de un todo de otra persona que debes llevarlo a tu temporalidad.
Cómo aprendemos
Desde la escuela, todas las personas aprendimos que mediante la repetición constante se genera el conocimiento o aprendizaje (por ejemplo, las tablas de multiplicar, fechas históricas de nuestros países, etc…), sin embargo, no poseemos las mismas habilidades y facultades para lograr este aprendizaje forzado (a la persona que le gusta música, no es muy amiga de las matemáticas).
Por tanto, todas las personas aprendemos de formas distintas, por ejemplo a mi me gusta entender el porqué de las cosas: por qué tenemos que llamar así a las clases, cómo se crean nuevas interfaces, para qué es este llamado de servicios, mientras que otros colegas prefieren ver inducciones o leer más acerca de cómo se hacen las cosas. Lo cierto es que ambos caminos son claramente válidos, ya que funcionan en ambos casos.
Creo que una parte importante de aprender debe ser intentar romper el techo de cristal que tenemos a la hora de embarcarnos en aprender algo nuevo. El techo de cristal es lo que nos separa de aprender algo nuevo y mucho antes de generar código o conocimiento. Es cierto que en Internet está todo escrito y que podemos copiar código casi íntegro para nuestros problemas, pero el hecho del cómo funciona es algo que también debemos conocer, o ¿crees que ese Drawer es fácil de modificar? o ¿esa entidad no puede ser extendida?.
Así mismo, siempre debemos considerar que una enseñanza, formal o no, genera modelos mentales heredados por las personas que entregan enseñanza, es decir, nos transmiten los pensamientos, modelamiento y resolución de problemas basado en su base de decisión de cómo resolver algo. Ese traspaso, deseado o no, es algo que se sigue transmitiendo a lo largo del tiempo entre las personas que se dedican a la informática (o ¿porqué crees que PHP sigue siendo denostado, si ya han pasado al menos 3 versiones desde el infame PHP4?).
¿Qué debemos aprender?
Siempre una sugerencia que hago a las personas que me consultan “¿qué es lo próximo?” Opino por las bases del lenguaje y las buenas prácticas que tenga la comunidad o el lenguaje.
Las bases del lenguaje nos permite hablar en el mismo idioma con más personas, nos permite expresarnos y hacer que el computador haga lo que le pidamos, con este lenguaje, correctamente aplicado, podemos desarrollar soluciones a los problemas que tengamos por delante.
Las buenas prácticas nos permitirán que podamos comunicarnos eficientemente con otras personas, ya que, a pesar que programamos para que el computador nos entienda, también debemos pensar en la persona que seguirá dando vida al código después de que lo abandones para tu próximo desafío. Las buenas prácticas y estándares nos invitan a expresarnos en forma estándar, y desde luego, no los podemos descartar por creernos los mejores programadores, ever.
¡Qué no hacer!
En general, el tiempo de las personas es finito, es decir, no podemos hacer más de lo que tenemos en mente en nuestras vidas y lo que humanamente nos alcance el tiempo para aprender algo nuevo. Una de las cosas que suelo sugerir y evitar es comprar cursos a lo loco, ya que los cursos de Udemy, Coursera y demás, exigen tiempo y esfuerzo (más allá del dinero) para poder lograr terminarlo, pero aunque lo hagas, si no pasas más allá de ver al instructor hacer las cosas, no hay conocimiento efectivo, solo revisión de cómo alguien te hizo una indudcción a un tema en general.
Otra cuestión que suelo no recomendar es creer algo dominado en cuanto comiences a ver que ya lo tienes listo (sí BLoC de Flutter, a ti te veo), ya que las complejidades del lenguaje o de lo que estás estudiando aparecen justo al momento de tener que generar algo nuevo. Es similar al fenómeno de escuchar y leer en inglés, pero producir textos o hablarlo se vuelve imposible: sin práctica constante y dominar los conceptos básicos, no puedes seguir avanzando a los siguientes niveles
Todos fuimos junior alguna vez, algunas personas lo olvidan y creen que nacieron grandes
Mi pequeño circuito de aprendizaje
Para aprender algo nuevo aplico un principio de ir de uno o dos conceptos a la vez, junto con aplicarlo a un problema similar al que presenta la persona que guía la enseñanza. Por ejemplo, si estamos viendo un problema de login con algún servicio de OAuth, busco implementarlo con otro servicio de OAuth que sea similar, con el fin de ir resolviendo problemas de implementación (por ejemplo, las API o los parámetros de conexión son distintos).
Una vez dominado el concepto, vuelvo a la clase anterior e integrar ambos conceptos para seguir adelante.
Por último, llevo una pequeña bitácora de donde vi el contenido que me enseñó a hacer XYZ cosa dentro del código, con el fin de poder volver a ese momento, video o apunte que me está costando dominar o que necesito leer con más calma para poder comprender. (Ojo, comprender, no necesariamente dominar)