Por qué insistimos en escribir el código desde cero (y no copipastearlo)
Cuando alguien empieza a aprender a programar, una de las primeras tentaciones es copiar y pegar código de tutoriales, blogs o respuestas de internet. El razonamiento es lógico: el código funciona, aparece el resultado esperado y parece que el problema está resuelto. Sin embargo, desde lo que sabemos en las ciencias de la educación y en la psicología cognitiva, esta forma de aprender tiene límites claros. Aunque copiar y pegar ahorra tiempo, no siempre ayuda a entender qué está pasando ni a aprender de manera duradera.
Escribir el código a mano, desde cero, suele ser más lento y a veces frustrante. Aparecen errores, el programa no corre a la primera y hay que volver atrás varias veces. Justamente por eso, esta forma de trabajo suele ser mucho más efectiva para aprender. Cuando una persona escribe código línea por línea, se ve obligada a tomar decisiones: qué función usar, en qué orden, con qué argumentos. Este esfuerzo activo es central en el aprendizaje significativo, tal como lo plantea la psicología cognitiva desde hace décadas (Chi 2009).
Un problema frecuente cuando se copia código es la sensación de que “ya se entendió”. Como el script funciona, se genera una confianza que no siempre es real. En educación, esto se conoce como una ilusión de aprendizaje: parece que se avanzó, pero cuando hay que modificar algo pequeño o resolver un problema similar desde cero, el conocimiento no alcanza (podemos pensar que lo mismo ocurre cuando usamos IA… en exceso). Investigaciones sobre aprendizaje muestran que el reconocimiento pasivo suele confundirse con comprensión profunda, cuando en realidad son procesos distintos (Bjork, Dunlosky, and Kornell 2013).
También es importante el rol del error. En programación, equivocarse es inevitable: paréntesis mal cerrados, nombres mal escritos, funciones usadas de manera incorrecta. Aunque esto puede resultar molesto, los errores cumplen una función clave en el aprendizaje. Cada error obliga a leer mensajes, revisar el código y pensar qué fue lo que salió mal. Este proceso se vincula con la idea de aprendizaje por ensayo y error y con la noción de feedback como motor del aprendizaje (Hattie and Timperley 2007). Cuando se copia y pega, muchos de esos errores ya fueron resueltos por otra persona y se pierde la oportunidad de aprender de ellos.
Desde la psicología cognitiva sabemos que al principio aprender algo nuevo requiere mucha atención consciente. Escribir código por primera vez exige pensar cada paso. Con el tiempo y la práctica, algunas acciones se vuelven automáticas. Este pasaje de lo consciente a lo más fluido es parte del proceso normal de aprendizaje de habilidades complejas (Anderson 1982). El problema de copiar código demasiado pronto es que da la sensación de automatización sin haber pasado por esa etapa de comprensión. El resultado suele ser un conocimiento frágil, que funciona solo mientras el problema sea muy parecido al ejemplo original.
Una comparación útil es pensar la programación como la escritura. Nadie aprende a escribir textos copiando párrafos enteros de otros autores una y otra vez. Leer modelos ayuda, claro, pero el aprendizaje ocurre cuando se intenta escribir, se cometen errores y se reescribe. En educación, esta idea está muy presente en enfoques que entienden el aprendizaje como una práctica activa y situada, donde hacer es una condición para entender (Bruner 1996).
Todo esto no significa que copiar y pegar esté prohibido o sea algo negativo. En etapas más avanzadas, cuando ya se entienden bien las estructuras básicas, reutilizar código es parte del trabajo real de programar. Pero cuando se está aprendiendo, escribir el código desde cero funciona como una inversión. Lleva más tiempo al principio, pero construye una base más sólida que permite después leer, adaptar y reutilizar código con criterio.
En definitiva, escribir código a mano no es una cuestión de disciplina ni de esfuerzo innecesario. Es una forma de aprender alineada con cómo las personas construyen conocimiento. Permite detectar qué se entiende y qué no, aprovechar los errores como fuente de aprendizaje y desarrollar una comprensión más profunda del lenguaje de programación.