
Aprender conceptos de programación con IA
Aprender conceptos de programación con IA
Estás leyendo sobre recursión. La explicación empieza bien: “una función que se llama a sí misma”. Vale. Sigues leyendo. Aparece un ejemplo con factoriales. Sigues más o menos. De repente hay una pila de llamadas, un caso base, un retorno que vuelve hacia atrás como si el código estuviera deshaciendo una mudanza, y tu cerebro hace HTTP 500.
Entonces haces lo lógico: le preguntas a la IA.
Explícame la recursión.
Y la IA te contesta con una definición correcta, un ejemplo correcto y una analogía correcta. Todo correcto. Tú sigues sin entenderlo. Fantástico. Hemos conseguido documentación con sonrisa corporativa.
El problema no es que la IA no pueda enseñar. Puede. Muy bien, de hecho. El problema es que mucha gente la usa como si fuera una enciclopedia con chat, cuando para aprender programación funciona mejor como un tutor técnico: paciente, adaptable y disponible a las dos de la mañana, que es cuando las dudas realmente deciden aparecer. Porque claro, durante el día se esconden. Como los bugs.
En el tutorial anterior vimos cómo usar contexto, rol, tarea y formato de forma avanzada. Ahora vamos a aplicar esa misma idea a algo más delicado: aprender conceptos sin quedarte con una explicación que suena bien pero se rompe en cuanto intentas escribir código.
La IA como tutor, no como oráculo
La IA no debería ser la voz divina que baja de la nube y te entrega una verdad en Markdown. Si la usas así, te acostumbras a aceptar respuestas que parecen convincentes. Y ya vimos en el módulo anterior que una respuesta convincente no siempre es una respuesta correcta.
Para aprender, el modelo mental útil es este: la IA es un tutor al que puedes dirigir.
Eso cambia la conversación. No le pides “explícame closures” y te sientas a recibir. Le dices qué sabes, qué no sabes, qué te confunde y cómo quieres comprobarlo.
Mira la diferencia:
❌ Explícame los closures en Python.
Eso puede funcionar, sí. También puede darte una explicación genérica que empieza bien, se vuelve abstracta y termina con un ejemplo de outer() e inner() que has visto en veinte blogs distintos.
Ahora prueba esto:
Rol: actúa como mentor de Python para alguien que está aprendiendo programación.
Contexto:
Entiendo variables, funciones y scope local, pero me cuesta entender por qué
una función interna puede recordar valores de una función externa después de que
la externa haya terminado.
Tarea:
Explícame los closures conectándolos con lo que ya sé. No uses decoradores todavía.
Formato:
1. Explicación corta
2. Analogía realista
3. Ejemplo mínimo en Python
4. Error común
5. Una pregunta para comprobar si lo entendí
La segunda versión no pide “contenido”. Pide una experiencia de aprendizaje. Es como ir al médico: “me duele” ayuda poco; “me duele aquí, desde ayer, cuando hago esto” ya permite trabajar.
Y sí, puedes hacer preguntas que te parezcan demasiado básicas. De hecho, deberías.
Preguntas “tontas” que no son tontas
Una de las mejores cosas de usar IA para aprender es que puedes preguntar sin la presión social de parecer perdido. No hay compañero mirando por encima del hombro. No hay profesor con prisa. No hay senior suspirando porque has confundido map() con un bucle for. Solo tú, la duda y una caja de texto.
Aprovecha eso.
Sé que esto es básico, pero: ¿por qué Python usa indentación en vez de llaves?
No entiendo qué significa que una variable sea "mutable".
Explícamelo como si ya supiera qué es una lista, pero no qué pasa por debajo.
He leído la documentación sobre `return`, pero sigo confundiendo devolver un valor
con imprimirlo en pantalla. ¿Puedes compararlos con ejemplos pequeños?
Este tipo de preguntas son oro. No porque sean sofisticadas, sino porque atacan el punto exacto donde se atasca tu cabeza. Y esa es la parte que una documentación general no puede adivinar.
Si estás siguiendo el curso de Python desde cero, este enfoque encaja muy bien con conceptos como variables y tipos de datos, funciones o listas. No preguntes solo “qué es una lista”. Pregunta por la confusión concreta: “¿por qué append() modifica la lista pero string.upper() no modifica el string original?”. Ahí empieza el aprendizaje de verdad.
Una buena pregunta de aprendizaje suele tener esta forma:
Estoy aprendiendo [concepto].
Ya entiendo [lo que sí sabes].
Me confunde [bloqueo concreto].
Explícamelo con [tipo de ejemplo que te ayuda].
Después hazme una pregunta para comprobar si lo entendí.
No hace falta solemnidad. No estás redactando una petición al comité internacional de prompts. Solo estás dejando claro dónde estás y dónde te has caído.
La técnica Feynman con IA
La técnica Feynman es brutalmente simple: si quieres comprobar si entiendes algo, intenta explicarlo con tus palabras. Si no puedes, no lo entiendes todavía. Si lo explicas con humo, tampoco. Y si lo explicas usando palabras que no sabrías definir, tu cerebro acaba de hacer outsourcing del problema.
Con IA, este proceso tiene un participante más: alguien que no se cansa de escucharte explicar mal, no suspira cuando tardas y tiene ejercicios preparados para cuando termines.
Flujo recomendado:
Paso 1:
Explícame qué son los generadores en Python con un ejemplo mínimo.
Paso 2:
Voy a explicártelo con mis palabras. Corrígeme si hay errores o partes vagas:
[tu explicación]
Paso 3:
Hazme 3 preguntas para comprobar si lo entendí.
Una debe ser conceptual, una de lectura de código y una de escribir código.
Paso 4:
Aquí están mis respuestas:
[tus respuestas]
Dime qué entendí bien, qué entendí mal y qué debería repasar.
Fíjate en el detalle importante: no estás pidiendo otra explicación más. Estás obligándote a producir una. Ese cambio cuesta. Es el tipo de costar que notas cuando llevas rato leyendo código de otro y de repente tienes que escribir el tuyo. Pero es justo ahí donde aparece el aprendizaje.
Ejemplo de explicación que podrías enviar:
Creo que un generador es una función que no devuelve todos los valores de golpe.
Usa yield para pausar la ejecución y seguir después desde el mismo punto.
Eso sirve para no cargar una lista entera en memoria.
No tengo claro si el generador recuerda variables locales entre llamadas o si las
vuelve a calcular cada vez.
Esa última frase es la joya: “no tengo claro…”. No la escondas. Las dudas explícitas son puntos de anclaje. Si las omites por vergüenza, la IA no puede ayudarte justo donde hace falta.
La parte peligrosa viene después: la IA puede corregirte mal. Sí, qué sorpresa, una herramienta probabilística puede inventarse cosas. Aquí no estamos buscando fe; estamos buscando feedback inicial. Si la explicación importa de verdad, contrástala con documentación oficial, tests o código real.
La cadena del “¿pero por qué?”
Hay conceptos que no se entienden porque los memorizas demasiado arriba. Sabes repetir la frase, pero no sabes qué la sostiene.
“Usamos funciones para evitar repetir código.” Vale. ¿Pero por qué repetir código es malo?
“Porque dificulta el mantenimiento.” Vale. ¿Pero por qué?
“Porque si cambia una regla, tienes que cambiarla en varios sitios.” Vale. ¿Y qué pasa si se te olvida uno?
Ahora sí estamos llegando a algo.
Puedes usar la IA para bajar por esa escalera:
Quiero entender de verdad por qué la duplicación de código es un problema.
Hazme una cadena de preguntas tipo "pero por qué".
No me des una explicación larga al principio: pregúntame, espera mi respuesta,
y luego profundiza según lo que diga.
O, si quieres hacerlo en una sola respuesta:
Explícame por qué repetimos menos código en programación usando una cadena de 5 niveles:
1. Respuesta simple
2. Por qué esa respuesta importa
3. Qué problema aparece en un proyecto real
4. Qué bug podría causar
5. Qué principio de diseño hay debajo
Una posible respuesta útil tendría esta forma:
1. Evitamos duplicación para no escribir lo mismo varias veces.
2. Importa porque cada copia puede quedarse desactualizada.
3. En un proyecto real, una regla de descuento duplicada puede cambiar en un endpoint
pero no en otro.
4. Eso puede hacer que dos usuarios reciban precios distintos para la misma compra.
5. El principio debajo es DRY: una regla debería tener una fuente de verdad.
Esto convierte una frase de manual en una cadena causal. Y una cadena causal se recuerda mejor porque tiene peso. No es “DRY porque sí”. Es “DRY porque si duplicas reglas de negocio, un día producción te manda una factura con intereses”.
Aquí la IA es especialmente útil porque no se cansa de tu “¿pero por qué?”. Una persona, a la cuarta, empieza a mirar la puerta. La IA no. Ventaja injusta, usémosla.
El juego de conexiones
Aprender programación no es acumular definiciones sueltas. Es conectar ideas.
Una lista en Python se parece a un array en otros lenguajes, pero no es exactamente lo mismo. Un dict se parece a una agenda donde buscas por nombre, pero también tiene reglas internas. Una función pura se parece a una máquina expendedora honrada: metes lo mismo, sale lo mismo. Ojalá todas fueran así. Ojalá las máquinas expendedoras también.
La IA puede ayudarte a crear esas conexiones si se lo pides explícitamente.
Estoy aprendiendo listas en Python.
Ya entiendo variables y bucles `for`.
Explícame las listas conectándolas con:
1. Una analogía cotidiana
2. Cómo se usan con un bucle `for`
3. En qué se diferencian de un string
4. Un error típico de principiante
También puedes pedir comparaciones entre tecnologías:
¿Cómo se parece el ORM de Django a escribir SQL directamente?
¿En qué se diferencia?
Explícalo para alguien que sabe hacer SELECT, INSERT y WHERE básicos.
O conexiones entre patrones:
¿El decorador `@timer` de Python está relacionado con el patrón de diseño Decorator?
Dime qué comparten, en qué se diferencian y dónde se suele liar la gente.
Este tipo de preguntas funciona porque no deja que el concepto flote en el aire. Lo ata a algo que ya conoces. Aprender así es como construir un puente: si no hay orilla de salida, da igual lo bonito que sea el puente; acaba en mitad del río. Muy literario para un tutorial de programación.
Si estás aprendiendo varias cosas a la vez —por ejemplo Python, Git y algo de Docker—, pide conexiones entre ellas. La IA puede ayudarte a ver que un entorno de desarrollo no es una colección de herramientas sueltas, sino un sistema donde cada pieza cumple una función. Y si te pasas conectando conceptos hasta que todo parece relacionado con todo, tranquilo: eso también es una fase. Luego se pasa. Más o menos.
Verificar que entiendes, no que asientes
El peligro de aprender con IA es que las explicaciones suelen sonar muy bien. Demasiado bien. Párrafos limpios, estructura ordenada, tono seguro. Tu cerebro lee eso y dice: “sí, sí, entendido”. Mentira piadosa. El cerebro también dice “solo miro una cosa rápida en YouTube” y sabemos cómo acaba eso.
Para saber si entiendes, necesitas producir algo.
Pide ejercicios:
Dame 5 ejercicios progresivos sobre funciones en Python.
No me des las soluciones todavía.
Cada ejercicio debe comprobar un concepto distinto.
Pide lectura de código:
Muéstrame un fragmento pequeño de código con listas y bucles.
Hazme 4 preguntas sobre qué imprime y por qué.
No reveles la respuesta hasta que conteste.
Pide que detecte errores en tu razonamiento:
Esta es mi explicación de la diferencia entre `print()` y `return`:
[tu explicación]
Señala errores, partes incompletas y frases que podrían sonar bien pero ser imprecisas.
Y, sobre todo, pide variaciones:
Dame un ejercicio parecido, pero con una trampa distinta.
Esta frase es más potente de lo que parece. Si solo resuelves un ejercicio idéntico al ejemplo, quizá memorizaste el patrón visual. Una variación obliga a comprobar si entendiste la idea.
Ejemplo:
Concepto: `return` termina la ejecución de una función.
Dame 3 fragmentos de código:
1. Uno donde `return` aparece dentro de un `if`
2. Uno donde hay código después de `return`
3. Uno donde una función llama a otra función que devuelve un valor
Pregúntame qué imprime cada uno y por qué.
Esto no es tan cómodo como leer otra explicación. Pero aprender programación nunca fue solo leer. Leer es mirar el mapa. Resolver ejercicios es caminar. Y sí, a veces pisas barro. Se llama desarrollo de software.
Cuidado con aprender mal muy rápido
La IA acelera el aprendizaje. Eso suena bien, pero tiene una cara B: también puede acelerar malentendidos.
Si te explica mal un concepto y tú no lo verificas, puedes interiorizar una idea incorrecta con mucha confianza. Peor aún: como la explicación era clara, te costará más sospechar de ella. Es el equivalente educativo a un bug con buen naming: parece respetable hasta que rompe algo importante.
Reglas prácticas:
- Si el concepto es básico y general, usa la IA para entender y practicar.
- Si el concepto afecta a seguridad, concurrencia, dinero o datos reales, verifica con documentación oficial.
- Si hay código, ejecútalo.
- Si no puedes ejecutar el código, al menos pídele a la IA que trace la ejecución paso a paso y luego compáralo tú.
- Si dos respuestas se contradicen, no elijas la que suena más elegante. Investiga.
Prompt útil para verificar:
Quiero comprobar esta explicación antes de fiarme de ella.
Busca posibles imprecisiones, simplificaciones peligrosas o casos donde no se cumpla:
[pegar explicación]
Formato:
1. Qué es correcto
2. Qué es impreciso
3. Ejemplo donde la explicación falla o necesita matices
4. Versión corregida en 5 líneas
También puedes pedirle que cite documentación, pero recuerda: una cita inventada sigue pareciendo una cita. Si importa, abre la documentación real. Sí, en navegador. Ya sé, qué método tan medieval.
Plantilla para aprender cualquier concepto
Guarda esta plantilla y úsala cuando un concepto se te resista:
Rol: actúa como mentor técnico paciente y preciso.
Contexto:
Estoy aprendiendo [concepto].
Ya entiendo [conocimiento previo].
Me confunde [bloqueo concreto].
Estoy usando [lenguaje/herramienta] y quiero ejemplos en ese contexto.
Tarea:
Ayúdame a entender el concepto de forma progresiva.
No asumas que lo entendí hasta que pueda explicarlo y resolver un ejercicio.
Formato:
1. Explicación en 5-7 líneas
2. Analogía realista
3. Ejemplo mínimo
4. Contraejemplo o error común
5. Pregunta de comprensión
6. Ejercicio pequeño sin solución
Y después de responder al ejercicio:
Esta es mi solución:
[tu solución]
Evalúala con este formato:
1. Qué está bien
2. Qué está mal o incompleto
3. Qué concepto demuestra que entendí
4. Qué concepto debería repasar
5. Un ejercicio similar con una variación
La clave está en cerrar el círculo: explicación, producción, feedback, variación. Sin esa última parte, es fácil confundir familiaridad con comprensión. Familiaridad es “esto me suena”. Comprensión es “puedo usarlo cuando el ejemplo cambia”. No son lo mismo, aunque el cerebro intente venderte el pack completo.
Conceptos clave de esta lección
- Usa la IA como tutor dirigido, no como oráculo
- Las preguntas básicas son valiosas si nombran la confusión concreta
- La técnica Feynman funciona mejor cuando explicas tú y pides corrección
- La cadena del “¿pero por qué?” convierte frases memorizadas en comprensión causal
- El juego de conexiones ata conceptos nuevos a conocimientos previos
- Para verificar comprensión, produce: explica, lee código, escribe código o resuelve ejercicios
- Las explicaciones claras también pueden estar equivocadas; verifica lo importante
- Una buena sesión de aprendizaje termina con feedback y una variación del ejercicio
💡 Desafío: Elige un concepto que te resulte incómodo —recursión, closures, mutabilidad, return, lo que sea— y usa la plantilla final. No pases al siguiente tema hasta que hayas explicado el concepto con tus palabras y resuelto una variación del ejercicio.
Aprender con IA no consiste en recibir respuestas más rápidas; consiste en construir un sistema de práctica más inteligente. En el próximo tutorial entraremos en prompts para generar código, y ahí la exigencia sube: ya no bastará con entender una explicación, habrá que pedir código verificable sin dejar que la IA convierta una función pequeña en una catedral de boilerplate.
¡Nunca dejes de programar!