15 de noviembre de 2026
# El software para personas **no debería ser determinista**

Este es el segundo de los dos posts de este fin de semana. Ayer conté [por qué nadie debería estar tranquilo](14-no-es-momento-de-estar-tranquilos.md), con el caso de quién va a construir el software de las empresas. Hoy toca cómo va a ser ese software.
Cualquier software de negocio está lleno de reglas como esta:
> [!note] Antes de 2026
> ```code
> If cliente.tipo = "VIP" And incidencia.prioridad = "Alta" Then
> plazo = Days(1)
> ElseIf cliente.tipo = "VIP" Then
> plazo = Days(3)
> ElseIf incidencia.prioridad = "Alta" Then
> plazo = Days(5)
> Else
> plazo = Days(10)
> End If
>
> If Today() >= incidencia.fecha_consulta + plazo And Not incidencia.respondida Then
> notifica_responsable("Revisar incidencia " & incidencia.id)
> End If
> ```
Desde este año, la misma regla se puede escribir así:
> [!note] De 2026 en adelante
> ##### "Si no se ha enviado una respuesta en un tiempo razonable, avisa al responsable y pásale la información para que pueda resolverla."
Parece un cambio de sintaxis, del código al lenguaje natural. Pero es bastante más que eso: pasamos de un software determinista a uno no determinista. El primero hace siempre lo mismo ante la misma situación. El segundo puede decidir distinto cada vez.
Para cualquier ingeniero esto es el infierno. Lo no determinista es pérdida de control y de previsibilidad, el antipatrón por excelencia del software. Lo entiendo, pero me parece sobre todo resistencia al cambio. Porque la diferencia de verdad está en pasar de cuatro plazos fijos a *un tiempo razonable*.
¿Y qué es un tiempo razonable?
Pues exactamente eso: el tiempo en que debería haberse resuelto esa incidencia en concreto. Depende de cómo sea la incidencia, del cliente, de la última conversación con él, de su situación y de la mía. De miles de pequeñas señales que no están en ninguna tabla de la base de datos, sino en correos, en chats y en la última llamada.
Así que no habrá cuatro plazos. Habrá uno distinto para cada incidencia, porque las personas no somos deterministas.
Si lo piensas, la regla de verdad siempre ha sido la segunda. Cada `ElseIf` de la primera es un intento de acercarse a ella, y siempre falta alguno: el cliente que llamó ayer enfadado, el responsable que está de vacaciones. Los plazos fijos son la traducción que le hemos tenido que hacer al ordenador porque no sabía qué es razonable. Ahora ya lo sabe, más o menos, si le das acceso a esas señales.
¿Y el control? Sigue haciendo falta, y mucho. Lo que cambia es cómo se consigue: en vez de exigir que el software haga siempre lo mismo, se comprueba con *evals* que en miles de casos decide como lo haría una persona sensata. Es justo el trabajo que [le queda al ingeniero de software](11-cowork-tercera-parte-software-sin-ingenieros.md).
P.D.: el software hecho para máquinas, como el que controla un avión, sí tiene que ser determinista. Faltaría más.