Aplícalo esta semana
Con otros · ejemplo: Agregado Pedido
Enseñar: pato de goma y diálogo socrático
Explica tu código línea por línea a alguien (o algo) que solo hace preguntas.
Explicar a un pato de goma qué hace cada línea revela supuestos que no sabías que tenías. El diálogo socrático lo lleva más lejos: alguien que no da respuestas, solo pregunta qué pasaría si. Prepararse para enseñar ya mejora el aprendizaje.
- Para quién
- Todos.
- Fuente
- Fiorella y Mayer (2013), The Relative Benefits of Learning by Teaching; Hunt y Thomas (1999), The Pragmatic Programmer
- Estudios controlados con resultados favorables, con matices según contexto.
El plan en el tiempo
Qué haces antes, durante y después. Mueve t y mira qué ya ocurrió.
Antes de encontrar el concepto t<0
Esta metodología no prepara nada antes: llegas en frío al concepto.
El encuentro t=0
- t=0
Lees o escuchas la explicación del concepto
Explicación · 30 min · El primer encuentro: alguien (o un texto) explica el concepto.
Después: consolidar t>0
- t=+1
Explicas tu agregado al pato, línea por línea
Enseñar · 25 min · Preparar y dar una explicación a otro organiza el conocimiento (efecto protegido).
- t=+4
Respondes las preguntas socráticas de un compañero
Enseñar · 25 min · Preparar y dar una explicación a otro organiza el conocimiento (efecto protegido).
- t=+10
Explicas de memoria, sin código delante
Recuperación · 10 min · Sacar de memoria sin mirar fortalece el recuerdo más que volver a ver (efecto de prueba).
Trayectoria frente al método de control
Se aplica en la ruta
Úsala programando, no solo leyendo
Pruébalo ahora
Agregado Pedido
Explica el agregado al pato de goma. Solo hace preguntas.
pedido.py · explícalo línea por línea
1class Pedido: 2 def __init__(self, id: PedidoId, limite: Monto): 3 self.id = id 4 self._lineas: list[Linea] = [] 5 self._limite = limite 6 self._confirmado = False 7 8 def agregar(self, linea: Linea) -> None: 9 if self._confirmado: 10 raise PedidoYaConfirmado(self.id) 11 if self.total() + linea.subtotal > self._limite: 12 raise LimiteExcedido(self._limite) 13 self._lineas.append(linea) 14 15 def confirmar(self) -> None: 16 if not self._lineas: 17 raise PedidoVacio(self.id) 18 self._confirmado = True
El pato pregunta · 1/5
¿Qué problema resuelve esta clase? Dilo sin nombrar ningún patrón.
El pato no da respuestas. Solo pregunta. Lo que descubras al explicar es tuyo.
Cuándo no usarla
Para memorizar detalles: enseñar organiza, no reemplaza a la recuperación.
Señal de que funciona
Encuentras el error a mitad de la explicación, antes de que te respondan.
Tu decisión
¿Enseñar: pato de goma y diálogo socrático te hizo aprender?
Responde después de probar el ejemplo. Se guarda solo en este navegador.