Blog

Descubre cómo la IA y el Posicionamiento Orgánico genera Valor Corporativo

Cómo enseñar Python usando Spec-Driven Development

Cómo enseñar Python usando Spec-Driven Development en Empresas

 

Formación en programación · Metodología

Aprender Python suele comenzar de la misma manera: variables, tipos de datos, condicionales, bucles, funciones y, después de varias sesiones, algún proyecto práctico. El problema es que este enfoque obliga al estudiante a aprender primero la sintaxis y recién después entender para qué sirve.

Una alternativa interesante es invertir el proceso mediante Spec-Driven Development (SDD) o desarrollo guiado por especificaciones.

La secuencia

Problema → Especificación → Código → Prueba → Corrección

En lugar de comenzar preguntando «¿cómo funciona un if en Python?», comenzamos preguntando:

¿Qué debe hacer exactamente el programa?

Este cambio aparentemente pequeño puede hacer que aprender programación sea mucho más intuitivo, especialmente para personas que no tienen formación previa en desarrollo de software.

Qué es Spec-Driven Development

Spec-Driven Development propone que antes de escribir código exista una especificación suficientemente clara sobre el comportamiento esperado del sistema. Una especificación sencilla debería responder al menos cinco preguntas:

  1. 1¿Qué problema debe resolver?
  2. 2¿Qué información recibe?
  3. 3¿Qué reglas debe aplicar?
  4. 4¿Qué resultado debe entregar?
  5. 5¿Cómo comprobaremos que funciona correctamente?

Por ejemplo, imaginemos que queremos desarrollar un pequeño programa para controlar el cumplimiento de una meta comercial. La especificación podría ser:

Especificación
OBJETIVO
Determinar si las ventas del mes alcanzaron la meta.

ENTRADAS
- ventas_mes
- meta_mes

REGLAS
- Si ventas_mes >= meta_mes → META CUMPLIDA
- Si ventas_mes < meta_mes → META NO CUMPLIDA

SALIDAS
- porcentaje de cumplimiento
- estado de la meta

CASOS DE PRUEBA
ventas = 120000, meta = 100000 → 120%, META CUMPLIDA
ventas = 80000, meta = 100000 → 80%, META NO CUMPLIDA

Antes de escribir una sola línea de Python, el estudiante ya entiende qué debe ocurrir.

De la especificación al código

Una vez definida la especificación, podemos convertirla progresivamente en Python.

Python
ventas_mes = 120000
meta_mes = 100000

cumplimiento = ventas_mes / meta_mes * 100

if ventas_mes >= meta_mes:
    estado = "META CUMPLIDA"
else:
    estado = "META NO CUMPLIDA"

print(cumplimiento)
print(estado)

Aquí aparecen naturalmente varios conceptos fundamentales de programación:

  • —variables
  • —números
  • —operadores matemáticos
  • —comparaciones
  • —condicionales
  • —salida de información

La diferencia es que ahora cada concepto tiene una razón de existir.

El estudiante aprende un if porque necesita implementar una regla que previamente definió, y no porque aparezca en el capítulo cuatro del curso.

Enseñar Python desde necesidades, no desde sintaxis

Este enfoque permite reorganizar completamente un curso introductorio de programación.

Necesidad Concepto de Python
Guardar información Variables
Realizar cálculos Operadores
Aplicar reglas if, elif, else
Procesar muchos registros for
Almacenar varios elementos Listas
Representar registros Diccionarios
Reutilizar lógica Funciones
Leer archivos Pandas
Manejar errores Excepciones
Verificar comportamiento Tests

La sintaxis deja de ser el punto de partida y se convierte en una herramienta para resolver algo.

Un ejemplo: aprender bucles sin comenzar explicando bucles

Supongamos que tenemos una lista de operaciones comerciales:

Python
operaciones = [
    12000,
    85000,
    42000,
    110000
]

La especificación indica:

Especificación
OBJETIVO
Identificar operaciones superiores a S/ 50,000.

ENTRADA
Lista de operaciones.

REGLA
Si el monto es mayor a 50,000, mostrarlo.

SALIDA
Lista de operaciones que superan el umbral.

Ahora surge una pregunta natural: ¿cómo aplicamos la misma regla a todas las operaciones? En ese momento aparece el concepto de iteración.

Python
for operacion in operaciones:
    if operacion > 50000:
        print(operacion)

El estudiante acaba de aprender un for, y lo hizo para resolver una necesidad concreta.

SDD también cambia el papel de la inteligencia artificial

La aparición de herramientas como ChatGPT, Claude, Gemini o GitHub Copilot introduce un nuevo desafío en la enseñanza de programación. Hoy un estudiante puede pedir «hazme un programa en Python que analice ventas» y recibir cientos de líneas de código en segundos.

Por eso, evaluar únicamente la capacidad de escribir código empieza a perder relevancia. SDD permite cambiar la dinámica: el estudiante asume tres responsabilidades.

01

Especificar

Definir correctamente el problema, las entradas, las reglas y las salidas.

02

Generar o implementar

Construir el código directamente o usar una herramienta de IA para una primera versión.

03

Verificar

Comprobar que el resultado realmente cumple la especificación.

Esto cambia la relación entre el estudiante y la IA. La IA deja de ser simplemente una máquina que «hace la tarea» y pasa a convertirse en un asistente de implementación. El criterio sigue perteneciendo al estudiante.

Una regla sencilla para el aula

Una práctica especialmente útil consiste en establecer una regla:

No se genera código hasta que exista una especificación verificable.

Antes de abrir el editor de Python, el estudiante debe completar cinco bloques:

Plantilla de especificación
1. OBJETIVO
¿Qué debe resolver?

2. ENTRADAS
¿Qué datos recibe?

3. REGLAS
¿Qué lógica debe aplicar?

4. SALIDAS
¿Qué debe entregar?

5. CRITERIOS DE ACEPTACIÓN
¿Cómo sabemos que funciona?

Esta estructura obliga a pensar antes de programar y facilita que el docente identifique rápidamente dónde se encuentra el problema. Si el programa produce un resultado incorrecto, podemos preguntar:

  • —¿la especificación era incorrecta?
  • —¿la regla estaba incompleta?
  • —¿el código implementó mal la regla?
  • —¿faltaban casos de prueba?

Esto genera conversaciones mucho más valiosas que simplemente corregir errores de sintaxis.

Una posible ruta de aprendizaje

Un curso introductorio de Python basado en SDD podría organizarse en ocho sesiones.

S1

Del problema a la especificación

Identificar objetivos, entradas, reglas, salidas y criterios de aceptación.

S2

De la especificación a Python

Variables, tipos de datos, operadores y resultados.

S3

Reglas de decisión

Uso de if, elif y else para representar reglas de negocio.

S4

Procesamiento de múltiples datos

Listas, diccionarios y bucles.

S5

Construcción de funciones

Cómo convertir reglas repetitivas en componentes reutilizables.

S6

Datos reales

Lectura y procesamiento de archivos CSV o Excel utilizando Pandas.

S7

Validación

Casos de prueba, errores, assert y validaciones.

S8

Proyecto completo

Construcción de una solución desde la especificación hasta las pruebas finales.

El resultado es una progresión diferente: problema → lógica → implementación → validación.

Qué cambia para el estudiante

Con este enfoque, aprender Python deja de significar memorizar comandos. El estudiante comienza a desarrollar otras capacidades:

  • —descomponer problemas
  • —convertir necesidades en reglas
  • —identificar entradas y salidas
  • —definir criterios verificables
  • —leer código
  • —detectar errores
  • —probar soluciones
  • —trabajar con asistentes de IA

Estas habilidades son especialmente importantes en un contexto donde cada vez más código puede ser generado automáticamente.

Programar ya no consiste solamente en escribir código

Durante muchos años, aprender programación significaba aprender a producir instrucciones para una computadora. La inteligencia artificial está cambiando parcialmente esa definición: cada vez será más común que una persona describa un comportamiento esperado y que una herramienta genere parte de la implementación.

En ese escenario, saber especificar correctamente un problema se vuelve una competencia central. Por eso, enseñar Python mediante Spec-Driven Development puede ser una forma especialmente útil de introducir programación a nuevos estudiantes.

En lugar de comenzar la clase con «hoy aprenderemos variables», podemos comenzar con algo mucho más cercano a la realidad:

«Tenemos un problema. Definamos exactamente qué debería hacer el programa.»

Y desde allí, dejar que Python aparezca como lo que realmente es: una herramienta para convertir una idea bien definida en una solución ejecutable.

 

¡Comparte esta publicación!
Más publicaciones

Erwin Salas

Vivo y respiro el posicionamiento en buscadores y la inteligencia artificial desde que me despierto por las mañanas.

¡Socialicemos!