01 · Punto de partida
De las piezas al aparato
Tenemos sistema, modelo, variables, contornos, ecuaciones y datos. Construir es ensamblarlos en una primera versión que corre de punta a punta: todavía simple, pero completa y verificada. Esa v1 es la base de todo lo que sigue.
- ¿Corre de punta a punta con datos reales?
- ¿Cada pieza tiene su caso testigo?
- ¿Qué quedó afuera y dónde está anotado?
- ¿Otro puede ejecutarla y entenderla?
02 · La primera versión
Mínima, completa, verificada
Mínima
El recorte más chico que responde la pregunta: sin modos extra ni métricas de lujo.
Completa
De entradas a métricas sin huecos: corre con datos reales de punta a punta.
Verificada
Cada pieza con su testigo: transición, contorno y métricas empatan a mano.
| Aspecto | v1 | Final |
|---|---|---|
| Alcance | Un escenario típico | Todos los escenarios |
| Detalle | Grueso, Honesto | El que pida la sensibilidad |
| Pruebas | Testigos a mano | Batería + datos reales |
| Deuda | Anotada y visible | Pagada o justificada |
03 · Ensamblaje
Orden de montaje
- 1Estado y transición.
La regla pura, testeada contra la ecuación.
- 2Contorno y parámetros.
Topes, ventanas y constantes nombradas con sus guardas.
- 3Entradas y salidas.
Series adentro, historia y métricas afuera.
- 4Andamiaje.
Prints, asserts y gráficos provisorios para ver adentro.
- 5Testigos.
Casos a mano que empatan: la v1 queda sellada.
Andamiaje
Para construir
Prints y gráficos provisorios que muestran el interior. Se quitan al terminar.
Estructura
Para quedarse
Transición, contorno y métricas con tests: lo que viaja a la v2.
- Esqueleto
- Estructura mínima que corre de punta a punta.
- Andamiaje
- Ayudas provisorias de construcción y depuración.
- Deuda de modelado
- Simplificación pendiente, anotada con su riesgo.
- Testigo
- Caso conocido que custodia cada pieza.
04 · Regla de montaje
De adentro hacia afuera
Primero la pieza que todo lo toca (la transición), después lo que la limita, luego lo que la alimenta, al final las pruebas que la sellan.
05 · En Python
La v1 entera en veinte líneas
Python en tu navegador. Transición, contorno, entradas, métricas y testigo: el modelo completo.
TOPE = 40 # contorno nombrado
def transicion(nivel, entrada, salida):
return min(max(nivel + entrada - salida, 0), TOPE)
def simular(n0, entradas, salida):
n = n0
historia = []
for e in entradas:
n = transicion(n, e, salida)
historia.append(n)
return historia
print(simular(10, [3, 3, 3, 3], 2))
Sellar con el testigo
def simular(n0, entradas, salida):
n = n0
h = []
for e in entradas:
n = min(max(n + e - salida, 0), 40)
h.append(n)
return h
assert simular(10, [3, 3, 3, 3], 2) == [11, 12, 13, 14]
print("v1 OK")
06 · Exploración
Laboratorio: banco de ensamblaje
Activá las piezas de la v1: transición, contorno y tests. El medidor dice si hay modelo o solo partes sueltas.
Armar la v1
3 piezas · sello de calidad
Modelo sellado: corre entero y verificado.
Transición sin contorno se escapa; contorno sin tests nadie lo cree; tests sin modelo no existen.
Preguntas para explorar
- Apagá el contorno. ¿Qué le pasa a la v1 con entradas grandes?
- Apagá los tests. ¿Sigue siendo v1 o vuelve a borrador?
- ¿Qué deuda anotarías en tu v1 del curso?
Ver respuestas sugeridas
- Crece sin cota: sin tope no hay capacidad ni validez que decidir.
- Vuelve a borrador: sin sello nadie distingue el avance de la suerte.
- Respuesta abierta: lo pendiente con su riesgo, por escrito, junto al código.
07 · Comprensión
Confusiones frecuentes
«v1 es el prototipo tirarle»
No: es la base que crece. El prototipo descartable es otro instrumento, no la v1.
«Completo significa detallado»
Significa sin huecos: corre entero. El detalle llega después, donde la sensibilidad lo pida.
«Los tests vienen después»
Vienen con cada pieza: el testigo nace junto a la transición, no al final del proyecto.
«El andamiaje queda»
Se quita al sellar: prints eternos ensucian salidas y confunden lectores.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: correr la v1
Ejecutá el modelo completo con entradas [3, 3, 3, 3]. ¿Historia?
def simular(n0, entradas, salida):
n = n0
h = []
for e in entradas:
n = min(max(n + e - salida, 0), 40)
h.append(n)
return h
print(simular(10, [3, 3, 3, 3], 2))
Ver solución razonada
Da [11, 12, 13, 14]: transición, contorno y bucle trabajando juntos de punta a punta.
Ejercicio 2: sellar
Agregá el assert que convierte este borrador en v1.
def simular(n0, entradas, salida):
n = n0
h = []
for e in entradas:
n = min(max(n + e - salida, 0), 40)
h.append(n)
return h
assert simular(10, [3, 3, 3, 3], 2) == [11, 12, 13, 14]
print("v1 OK")
Ver solución
Si el assert pasa, hay sello; si falla, hay bug. El veredicto es binario y automático.
Ejercicio 3: anotar la deuda
Declarará la deuda de esta v1 como datos: ¿qué falta y con qué riesgo?
Ver una posible respuesta
deuda = [{"falta": "entradas variables", "riesgo": "subestima picos"},
{"falta": "calibración", "riesgo": "caudales supuestos"}]
print(len(deuda), "pendientes")
Dos pendientes con riesgo declarado: la v1 es honesta y la v2 ya tiene agenda.
09 · Síntesis
Ideas para recordar
- v1 = mínima + completa + verificada.
- Orden: transición, contorno, entradas/salidas, testigos.
- El andamiaje ayuda y se quita; la deuda se anota.
- Sin assert verde no hay v1: hay borrador.
- En Python: funciones puras + bucle + asserts.
En el próximo tema pondremos la v1 a correr en serio: la implementación de la simulación.