Neil Madden, en su blog y posteriormente en Mastodon, plantea una reflexión profunda sobre el aprendizaje de programación y el uso de modelos de lenguaje grandes (LLMs) como ChatGPT. Su argumento central no es una crítica directa a la tecnología, sino una defensa de un método de aprendizaje más efectivo: la explicación y la programación manual.
La idea fundamental se inspira en citas de figuras como Douglas Adams, Carl Friedrich Gauss y Alan Perlis. Adams destaca que explicar un concepto a otra persona, especialmente a alguien que no lo entiende fácilmente, obliga a descomponerlo en sus elementos más básicos, revelando una comprensión más profunda. Gauss enfatiza que la satisfacción reside en el proceso de aprendizaje, no en la mera posesión del conocimiento. Perlis, con su famosa frase, subraya que la certeza del conocimiento se alcanza no solo al aprender o escribir, sino al programar.
La programación, en este contexto, no se ve como una tarea de codificación pura, sino como un proceso de traducción de ideas complejas en instrucciones simples y precisas que una máquina puede ejecutar. Este proceso de descomposición, de pensar en los pasos mínimos necesarios para resolver un problema, es lo que realmente genera el aprendizaje. Cuando uno se ve obligado a traducir un concepto abstracto en código funcional, se fuerza a comprenderlo a un nivel mucho más profundo que simplemente leyendo o utilizando una herramienta como un LLM.
Neil Madden argumenta que, si bien los LLMs pueden generar código, no fomentan la comprensión real. Usar un LLM para programar puede dar la ilusión de conocimiento, pero evita el proceso crucial de razonamiento y descomposición que conduce a una verdadera maestría. Un programador que depende de un LLM corre el riesgo de convertirse en un mero operador, sin entender realmente lo que está haciendo.
Casos de uso y aplicaciones: Esta perspectiva es especialmente relevante para estudiantes de programación, desarrolladores junior y cualquier persona que busque una comprensión sólida de los principios de la programación. También es útil para equipos de desarrollo que buscan fomentar una cultura de aprendizaje y resolución de problemas en lugar de una dependencia de herramientas automatizadas.
Consideraciones: Los LLMs son herramientas poderosas y pueden ser útiles para tareas específicas, como generar código repetitivo o explorar diferentes enfoques. Sin embargo, no deben reemplazar el aprendizaje activo y la programación manual. Es importante equilibrar el uso de estas herramientas con la necesidad de comprender los fundamentos y desarrollar habilidades de resolución de problemas. La clave está en usar los LLMs como asistentes, no como sustitutos del pensamiento crítico y la práctica.
