Me gustaría compartir una charla de Allison Kaptur, en un grupo de usuarios de Python de Nueva Zelanda, titulada Effective learning for programmers, donde habla acerca de encontrar ciertas estrategias para el aprendizaje.
Notas tomadas
La charla consta de dos partes: mentalidad (mindset) y estrategias
Mentalidad
Allison habla de dos tipos:
- Mentalidad de crecimiento: la inteligencia es algo que se puede trabajar y desarrollar con esfuerzo
- Mentalidad fija: la inteligencia es la que es y no puede ir a más, la inteligencia es fija, y cada uno tiene una cierta cantidad de ella
La diferencia fundamental radica en que quien posee una mentalidad de crecimiento, piensa que si algo no es fácil, puede trabajar duro para aprenderlo. Mientras que quien posee una mentalidad fija, piensa que si algo es fácil, se trata de una cualidad con la que ha nacido, que es de lo suyo.
Alabanzas contraproducentes: ante alabanzas de un trabajo realizado, los de mentalidad fija se contentan, mientras que los de mentalidad de crecimiento se sienten animados para superarse a sí mismos.
Respuesta a la confusión: los de mentalidad fija se quedan bloqueados, y los de mentalidad de crecimiento se esfuerzan en entender la parte complicada, hasta que superan el obstáculo.
Está claro que los desarrolladores necesitamos una mentalidad de crecimiento. Pero, ¿se puede cambiar una mentalidad fija?
- Reformula las alabanzas: cuando alaben tu trabajo: “eres un máquina”,… te dices a tí internamente: “no soy un máquina, he trabajado duro para llegar hasta aquí”
- Reformula los fallos
- Celebra los desafíos: cuando te toca arreglar un bug, decirte a tí mismo: “genial! que se prepare ese bug, porque le voy a patear el culo”
- Pregunta sobre el proceso seguido: pregunta siempre, “¿cómo has hecho eso?”, “¿cómo funciona eso?”, muestra curiosidad por cómo se hacen las cosas, aprende de los que más saben
Estrategias
El aprendizaje es una habilidad adquirida, por lo que se puede mejorar practicando:
- Recuperación con esfuerzo (effortful retrieval): aprender mediante preguntas que te obligan a encontrar una respuesta. Es maś efectivo que una relectura, incluso mejor que una relectura de las notas que has tomado en una clase. La relectura te da la ilusión de que ya te sabes la lección.
- Práctica espaciada (spaced practice): es mejor que una práctica masiva. La práctica debe ser espaciada en el tiempo, variada y que mezcle conceptos de todo el proceso de aprendizaje. Es mejor un curso de 1h durante 5 días que uno de 5 horas en un día.
- Dificultad y errores: cierta dificultad suele ser lo deseable. Cometer errores suele ser también recomendable durante el aprendizaje.
Implementando recuperación con esfuerzo
- Las tarjetas de conceptos (flashcards) es un ejemplo de esto, pero quizá no es la mejor forma de implementarlo
- Cuando no sabes a ciencia cierta algo, intenta adivinarlo. Por ejemplo, los argumentos de un comando, o intentar deducir algún aspecto de la lección que estas estudiando
- Intentar adivinar cual es la causa de un bug antes siquiera de empezar a solucionarlo
- Cuando te preguntan por algún concepto que te suena, pero no lo conoces en profundidad, puedes intentar deducir de qué trata y así confirmar tus suposiciones
Implementando práctica espaciada
- Trabajar en tus proyectos personales los fines de semana. Así cuando vayas a comenzar el sábado, debes recordar lo que trabajaste hace un tiempo. Eso ayuda al aprendizaje.
Implementando dificultad y errores
- La dificultad vienen implícita en muchos de nuestros aprendizajes, así que no hace falta que hagamos algo extra para ello
- Para descubrir errores: intentar buscar un feedback rápido, revisiones de código, post-mortems,…
- Generar un entorno donde los pequeños errores no tienen consecuencias, o que cuando tú sepas algo que tus compañeros no saben, no te burles de ellos