Lección 2 de 5 · 35 minutos
Leer y entender código que no escribiste
Al terminar esta lección
podrás tomar un programa que no escribiste, entender qué hace línea por línea, predecir qué pasa si lo cambias y explicárselo a otra persona con tus palabras.
Son las diez de la noche, tienes que entregar mañana y le pediste a la IA un programa que calcule el promedio de tus notas. Te lo dio en tres segundos, lo pegaste, corrió, salió el número. Perfecto. Al día siguiente el profesor te dice: "agrégale que también muestre la nota más alta". Y ahí te quedas mirando la pantalla, porque el código funciona pero no sabes cuál línea tocar ni por qué.
Eso le pasa a todo el mundo que empieza a programar con IA, y no es falta de inteligencia: es que escribir código y leer código son dos habilidades distintas. En la lección 1 escribiste tu primer programa. Hoy vamos al revés, que es lo que vas a hacer el 90% del tiempo en la vida real: te llega código hecho —de la IA, de un compañero, de internet, de un proyecto viejo de la empresa— y tienes que entenderlo. Vamos a usar el mismo asistente que te dio el código, pero configurándolo como profesor y no como fotocopiadora.
Por qué copiar código sin entenderlo te deja atrás
La tentación es obvia: si corre, sirve; si sirve, sigo. Y mientras el código funcione, tienes razón. El problema aparece el día que falla, porque el código siempre termina fallando: cambian los datos, cambia el requisito, alguien agrega una línea.
Ahí empieza lo que llamamos programar a ciegas. No sabes qué línea tocar, entonces le vuelves a pedir a la IA que lo arregle. La IA cambia algo, el error se mueve a otra parte, le pides otra vez, y en cada vuelta el programa se vuelve más largo y tú entiendes menos. Es un ciclo que se siente productivo y no lo es: al final tienes cien líneas que nadie —ni tú ni la IA, que no recuerda tus decisiones— sabe explicar.
Hay una razón práctica y muy colombiana para no caer ahí. En una entrevista para práctica o primer empleo, hoy casi nadie te va a pedir que escribas un algoritmo complicado desde cero: saben que tienes un asistente. Lo que sí te van a poner es un pedazo de código del equipo para que digas qué hace, qué le falta y qué pasaría si le cambias tal cosa. Esa es la prueba real, y es exactamente la habilidad que vamos a entrenar.
La buena noticia: leer código se entrena, y con un asistente al lado se entrena mucho más rápido, porque tienes un profesor disponible a cualquier hora que te explica el mismo punto quince veces sin cansarse. La diferencia entre quedar adelante o atrás no está en tener la herramienta —todos la tienen— sino en cómo la usas: para que te dé respuestas o para que te enseñe.
Señal de alarma: si te preguntan "¿qué hace la línea 4 de tu programa?" y tu respuesta es "eso lo puso la IA", todavía no es tu código.
Pedir la explicación línea por línea (y no "explícame esto")
Si le escribes a un asistente "explícame este código", te va a devolver un resumen bonito: "este programa calcula el promedio de una lista de notas y determina si el estudiante aprobó". Suena bien, no aprendiste nada. Ya sabías eso por el nombre de las variables.
Una explicación que sí enseña tiene tres ingredientes, y hay que pedirlos explícitamente:
- Qué hace cada línea, una por una, incluidas las aburridas.
- Qué valor queda guardado en cada variable después de esa línea, con números concretos, no en abstracto.
- Por qué se hizo así y no de otra forma; qué alternativa había.
El tercero es el que la gente nunca pide y es el más valioso, porque el código no solo hace algo: hace algo en vez de otra cosa. Entender esa decisión es entender de verdad.
Dos ajustes más que cambian mucho el resultado. Primero, dile tu nivel de forma directa: "nunca he programado, no asumas que sé qué es un bucle". El asistente ajusta el vocabulario y deja de usar palabras que te tocaría buscar aparte. Segundo, pídele que simule la ejecución cuando haya un ciclo, o sea que te muestre vuelta por vuelta cómo cambian los valores. Ver que suma pasa de 0 a 3.5, luego a 7.7, luego a 10.5, hace clic en la cabeza de una forma que ningún párrafo logra.
Y una advertencia: si algo no te queda claro, no sigas. Repregunta sobre esa línea exacta. No es que seas lento; es que ahí hay un concepto nuevo que el asistente se saltó.
Prompt para copiar: ``` Nunca he programado. Explícame este código línea por línea. Por cada línea dime: (1) qué hace en palabras sencillas, (2) qué valor queda en cada variable después de esa línea, (3) por qué se hizo así y qué otra forma habría. Si hay un ciclo, simula las vueltas con los datos del ejemplo. No uses términos técnicos sin explicarlos la primera vez. [aquí pegas el código] ```
Dale la vuelta: haz que la IA te pregunte a ti
Leer una explicación se siente como aprender, pero es engañoso: reconocer algo escrito es mucho más fácil que producirlo tú. La prueba honesta es intentar explicar el código sin mirarlo. Ahí se cae el castillo.
Por eso el movimiento más útil de esta lección es invertir los papeles: en vez de que el asistente te explique, que te examine. Le pides que actúe como profesor, que te haga una pregunta a la vez, que espere tu respuesta antes de continuar y que te diga si estás bien o mal explicando por qué. Una sola pregunta a la vez es importante; si le pides cinco de una, te las responde solo y volviste al modo lectura.
Las preguntas que más enseñan son las de tipo "¿qué pasaría si...?": qué pasa si la lista está vacía, qué pasa si cambio ese >= por >, qué pasa si muevo esa línea dos renglones arriba. Te obligan a correr el programa en tu cabeza, que es justo el músculo que queremos.
Ojo con un defecto real de estos asistentes: tienden a ser complacientes. Si respondes cualquier cosa, muchas veces te dicen "¡exacto, muy bien!" aunque tu respuesta esté a medias. Contrarréstalo pidiéndolo de entrada: "sé estricto, si mi respuesta está incompleta dímelo y señala qué falta". Y cuando te corrija, no aceptes de una: verifica ejecutando el código.
Cierra siempre con el mismo ejercicio: escribe en tres frases, sin mirar la pantalla, qué hace el programa. Si no te salen las tres frases, todavía no lo entendiste, y eso es información valiosa, no un fracaso.
Prompt para copiar: ``` Actúa como mi profesor. No me expliques nada todavía. Hazme UNA pregunta a la vez sobre este código, espera mi respuesta y solo entonces dime si estoy bien o mal y por qué. Incluye preguntas del tipo "¿qué pasaría si...?". Sé estricto: si mi respuesta queda incompleta, dímelo. [aquí pegas el código] ```
Cambiar cosas pequeñas: predecir, cambiar, verificar
Esta es la técnica central de la lección y es un ciclo de tres pasos que se hace en menos de un minuto:
1. Predecir: escribe (sí, escribe, no lo pienses nomás) qué crees que va a pasar si cambias algo. 2. Cambiar: haz ese cambio, uno solo. 3. Verificar: ejecuta y compara con tu predicción.
Cuando aciertas, confirmaste que entendiste. Cuando fallas —y al principio vas a fallar harto— acabas de encontrar el punto exacto donde tu idea del programa no coincide con la realidad. Ese error vale más que diez explicaciones, porque ya sabes qué preguntar: "pensé que iba a pasar X y pasó Y, ¿por qué?".
Dos reglas para que funcione. Una sola cosa a la vez: si cambias tres y se rompe, no sabes cuál fue. Rompe a propósito: quítale un paréntesis, cámbiale el nombre a una variable en un solo lugar, dividelo entre cero. Ver el error que produce cada daño te enseña a reconocerlo después, cuando aparezca sin que lo hayas buscado.
Sobre el programa de notas de la práctica, estos son cambios chiquitos con mucho jugo:
- Cambiar
>= 3.0por> 3.0y probar con un promedio de exactamente 3.0. - Agregar una nota a la lista y ver que el promedio se ajusta solo (ahí entiendes para qué sirve
len(notas)). - Reemplazar
len(notas)por el número5y volver a agregar una nota: el resultado queda mal, y esa es la lección. - Cambiar
round(promedio, 2)porround(promedio, 0).
Un detalle práctico: antes de romper nada, copia el código original a un lado. Poder volver al estado que funcionaba te quita el miedo a experimentar, y sin experimentar no se aprende esto.
Anota así en un cuaderno o en un comentario: "Predigo: si cambio >= por > y el promedio es 3.0, va a decir 'Debes repetir'". Ejecuta. ¿Acertaste?
Seguir el hilo: variables, ciclos y mensajes de error
Un programa no se lee como un texto, de corrido. Se lee siguiendo el recorrido de los datos. Tres hábitos concretos:
Primero, ubica entrada, proceso y salida. ¿De dónde salen los datos (una lista escrita a mano, un archivo, algo que el usuario escribe)? ¿Qué se les hace? ¿Qué se muestra al final? Casi cualquier programa que veas cabe en ese molde, y tenerlo claro te dice en qué tercio buscar cuando algo falla.
Segundo, sigue una variable a la vez. Escoge una, por ejemplo suma, y anota en una hoja qué valor tiene en cada vuelta del ciclo. A eso se le dice hacer una tabla de seguimiento y es lo que hacen los programadores con experiencia, mentalmente y a toda hora. Con notas = [3.5, 4.2, 2.8], suma va 0 → 3.5 → 7.7 → 10.5. Cuando ves esos números, el ciclo deja de ser magia.
Tercero, lee de adentro hacia afuera. En print("Promedio:", round(suma / len(notas), 2)) hay cuatro cosas anidadas. Empieza por lo más interno: primero se cuentan cuántas notas hay, luego se divide, luego se redondea a dos decimales, y de último se muestra. Los paréntesis te marcan el orden.
Y los errores: en Python el mensaje se llama traceback y se lee de abajo hacia arriba. La última línea te dice el tipo de error (ZeroDivisionError, NameError, IndentationError) y las de arriba en qué línea pasó. No se lo pegues a la IA de una: primero léelo tú, adivina qué significa, y después pídele que te confirme. Casi siempre el mensaje dice literalmente lo que pasó.
Pídele esto al asistente después de leer tú el error: "Este es el error que me salió. Antes de arreglarlo, dime qué significa cada parte del mensaje y en qué línea está el problema."
La IA también se equivoca explicando
Todo lo anterior asume que la explicación es correcta, y no siempre lo es. Hay que ser honestos sobre esto porque es el punto donde más gente sale confundida.
Estos asistentes generan texto que suena plausible, y una explicación equivocada suena igual de segura que una correcta. No hay señal de alarma en el tono. Tres fallas típicas:
- Te explican la intención, no el comportamiento. Si el código tiene un error, la IA muchas veces te cuenta lo que el código parecía querer hacer, no lo que realmente hace al ejecutarse.
- Inventan funciones o parámetros que no existen en la librería que estás usando, con nombres muy convincentes.
- Se pierden en código largo: en un archivo grande pueden atribuirle a una línea un efecto que en realidad ocurre en otra parte.
El antídoto es siempre el mismo y ya lo tienes: ejecutar. El computador no opina. Si la IA dice "esta línea guarda el promedio", ponle un print(promedio) y mira. Un print bien puesto vale más que tres párrafos de explicación, y es la herramienta de depuración que más usan los programadores profesionales, aunque suene demasiado simple.
Dos cuidados adicionales antes de pegar código en un chat. Uno, no pegues claves ni contraseñas ni tokens de acceso: si están en el código, reemplázalos por XXXX antes de copiar. Dos, no pegues datos personales de otras personas —cédulas, correos, teléfonos, notas de compañeros con nombre propio—; la ley colombiana de protección de datos personales aplica también a lo que subes a un servicio de internet, y además simplemente no es necesario: cámbialos por datos inventados y la explicación sirve igual.
Prueba honesta: pídele a la IA que te explique un código donde tú metiste un error a propósito. Fíjate si detecta el error o si te explica el programa "como debería ser".
Práctica: Adopta un programa que no escribiste
Abre el navegador en el computador o el celular y busca Google Colab. Entra con tu cuenta de Google (es gratis) y crea un cuaderno nuevo con Archivo → Nuevo cuaderno. Un cuaderno es una página donde puedes escribir código y ejecutarlo por pedazos.
Pega este programa en la primera celda y dale al botón de ejecutar (▶). Anota en una hoja lo que salió:
notas = [3.5, 4.2, 2.8, 4.9, 3.1] suma = 0 for n in notas: suma = suma + n promedio = suma / len(notas) print("Promedio:", round(promedio, 2)) if promedio >= 3.0: print("Aprobaste la materia") else: print("Debes repetir")(Supongamos que en tu universidad se aprueba con 3.0 en escala de 0 a 5.)
Abre tu asistente gratis (ChatGPT, Gemini o Claude), pega el código y usa el prompt de explicación línea por línea de la sección 2. Lee la respuesta y repregunta en cada línea que no te quede clara al 100%.
Ahora invierte los papeles: usa el prompt de "actúa como mi profesor" de la sección 3 y responde tú las cinco preguntas. Escribe tus respuestas de verdad, aunque dudes.
Aplica predecir–cambiar–verificar tres veces. Antes de cada cambio, escribe tu predicción en una celda de texto del cuaderno. Cambios sugeridos: (a)
>= 3.0por> 3.0y ajusta las notas para que el promedio dé exactamente 3.0; (b) agrega una sexta nota a la lista; (c) reemplazalen(notas)por5y vuelve a agregar una nota.Rompe el programa a propósito: borra los dos puntos del
for, ejecuta y lee el mensaje de error de abajo hacia arriba. Adivina qué significa antes de preguntarle a la IA; luego pídele que te confirme.Agrega tus propios comentarios al código. En Python, todo lo que va después de
#es una nota para humanos que el computador ignora. Escribe con tus palabras qué hace cada bloque; no copies la explicación de la IA.Cierra el cuaderno, tapa la pantalla y escribe en tres frases qué hace el programa. Si no te salen, vuelve al paso 4 con las líneas que se te enredaron.
Al terminar tienes: Un cuaderno de Colab con el programa comentado por ti, tres predicciones anotadas con su resultado real y una explicación de tres frases escrita sin mirar el código.
Dónde se equivoca la gente
- Pedir "explícame este código" a secas y quedar con un resumen bonito que no enseña nada.Pide explícitamente las tres cosas: qué hace cada línea, qué valor queda en cada variable y por qué se hizo así y no de otra forma. Y dile tu nivel: "nunca he programado".
- Creerle a la explicación de la IA sin ejecutar el código.Ejecuta siempre. Mete un `print()` en el punto donde tengas dudas y compara lo que sale con lo que te dijeron. El computador no se equivoca por complacerte.
- Cambiar cinco cosas a la vez, que se rompa, y no saber cuál fue.Un cambio, una ejecución. Guarda una copia del código original antes de empezar a experimentar para poder volver atrás sin miedo.
- Pegar en el chat código con claves de acceso o con datos personales de compañeros o clientes.Antes de copiar, reemplaza las claves por `XXXX` y los datos reales por datos inventados. La explicación te sirve exactamente igual.
Lo que te llevas
- Leer código y escribir código son habilidades distintas; la que más vas a usar (y la que te evalúan) es leerlo.
- La explicación útil pide línea por línea, valores concretos de cada variable y el porqué de cada decisión, no un resumen general.
- Invertir los papeles —que la IA te pregunte a ti, una pregunta a la vez— es lo que convierte lectura pasiva en comprensión real.
- Predecir, cambiar una sola cosa y verificar es el ciclo que revela dónde tu idea del programa no coincide con la realidad.
- Los errores se leen de abajo hacia arriba y casi siempre dicen literalmente qué pasó; léelos tú antes de pegárselos a la IA.
- La IA explica con seguridad aunque se equivoque: ejecutar el código es la única verificación que no opina.
Palabras nuevas
- Variable
- Un nombre que guarda un valor para poder usarlo después. En `suma = 0`, la variable se llama `suma` y por ahora guarda un 0; más adelante ese valor cambia.
- Ciclo o bucle (`for`)
- Una instrucción que repite las mismas líneas una vez por cada elemento de una lista. `for n in notas:` recorre las notas una por una y en cada vuelta `n` vale una nota distinta.
- Condicional (`if` / `else`)
- Una bifurcación: si se cumple una condición se ejecuta un bloque, y si no, el otro. Es lo que le permite al programa decidir entre "Aprobaste" y "Debes repetir".
- Traceback
- El mensaje que muestra Python cuando algo falla. Se lee de abajo hacia arriba: la última línea dice el tipo de error y las anteriores en qué parte del código ocurrió.
- Depurar (debug)
- Buscar y corregir errores en un programa. La técnica más común y más efectiva para empezar es poner `print()` en varios puntos para ver qué valores hay realmente.
Quiz de la lección
Seis preguntas. Nadie te califica: sirven para que sepas si entendiste. Con cuatro buenas vas bien.
Ya sabes leer y modificar código ajeno con criterio; en la lección 3 vas a usar esa habilidad para construir con IA tu propia página web y entender cada pedazo de lo que aparece en pantalla.