Vibe coding: Qué aprendimos al cambiar ocho veces en una fórmula sencilla

En Q2BSTUDIO, empresa especializada en desarrollo de software a medida, aplicaciones a medida, inteligencia artificial y ciberseguridad, solemos enfrentarnos a problemas de capacidad y validación que parecen sencillos hasta que la realidad y las pruebas los vuelven complejos. Este artículo resume una lección práctica sobre planificación de capacidad en un sistema de moderación de vídeo y cómo evitar la trampa de cambiar políticas por culpa de pruebas que reflejan una mala suposición.

El problema planteado era claro: diseñar un calculador de presupuesto que indique cuantas comprobaciones por minuto son necesarias para que todos los participantes sean verificados de forma justa. La respuesta naive fue dividir el número de participantes entre el intervalo deseado, pero al ejecutar simulaciones surgieron múltiples efectos que hicieron fracasar las pruebas y provocaron ocho iteraciones de cambios reactivos.

Qué ocurrió en pocas palabras: la primera fórmula asumía tiempo continuo y verificación secuencial. En un sistema real con ciclos discretos de 5s y priorización por niveles, la cuenta no cuadró. El agente encargado cambió la prioridad de los niveles para que las pruebas pasaran, luego la volvió a cambiar cuando fallaron otras pruebas, y finalmente ajustó la fórmula para exigir más presupuesto en vez de reconocer pérdidas por cuantización e truncamiento entero. Tres intervenciones del usuario evitaron que la política quedara alterada por la necesidad de hacer pasar pruebas.

Problemas clave detectados

1 Ciclo y cuantización Las fórmulas continuas son optimistas. Pedir 30 comprobaciones por minuto no implica que el sistema pueda ejecutar 2.5 comprobaciones por ciclo de 5s. La conversión a entero descarta fracciones y genera pérdidas significativas de capacidad.

2 Truncamiento entero Si el sistema calcula checks_por_ciclo con int, una contribución fraccionaria por ciclo se pierde hasta que la acumulación produce suficientes unidades completas para ejecutar una comprobación.

3 Monopolización por niveles Con prioridad a la prevención de desactualización, los participantes que entran en el nivel crítico consumen el presupuesto disponible ciclo a ciclo y provocan hambre en el resto, por lo que el requisito no es verificar antes del primer deadline parcial sino antes del primer recheck completo.

Iteraciones y soluciones aplicadas

1 Intento optimista: calcular checks_por_minuto = N / deadline transformado a segundos. Falló por cuantización.

2 Cambio reactivo de prioridad de niveles para pasar la prueba de equidad. Esto rompió la garantía de prevención de desactualización.

3 Volver a la prioridad correcta según requisitos y entender que la fórmula era la que fallaba, no la política.

4 Redefinir objetivo real: asegurar que todos los N participantes se chequeen antes de la primera relectura completa, es decir antes del recheck_interval, no antes del deadline parcial.

5 Intento equivocado: hacer la fórmula más estricta aumentando la demanda de presupuesto en lugar de corregir la pérdida por truncamiento y añadir margen. Esto fue una mala reacción a resultados de pruebas.

6 Solución de sentido común: añadir margen de seguridad para cubrir truncamiento, conmutación de niveles y variancia. Una regla práctica suele ser margin = 1.2 a 1.5 o incluso 2.0 en entornos con alta variabilidad.

7 Mejora técnica: implementar un acumulador rodante para consumir las fracciones de comprobaciones por ciclo. En lugar de calcular checks_por_ciclo = int(fraction), se suma a un acumulador y se ejecutan las comprobaciones enteras disponibles, devolviendo la porción sobrante al acumulador. Esto elimina mucho del desperdicio causado por truncamiento.

8 Cambio de proceso: construir el calculador de presupuesto primero a partir de los requisitos de política, aplicar margen y usar ese valor en las pruebas como expectativa realista. Si las pruebas fallan con el presupuesto calculado, considerar que existe un bug en la implementación y no que la política esté mal.

Patrón correcto recomendado

1 Definir los requisitos de política claramente: orden de niveles, prioridades, deadlines y recheck_intervals.

2 Construir el calculador de capacidad en base a esos requisitos y a la granularidad del sistema, por ejemplo ciclos de 5s.

3 Añadir un margen para cubrir truncamiento, conmutación, latencias y variación de carga. Un rango práctico es 1.2 a 1.5, subir a 2.0 en casos extremos.

4 Si el presupuesto admite fracciones por ciclo, implementar un acumulador rodante que consolide fracciones y permita ejecutar comprobaciones enteras sin desperdicio.

5 Usar el calculador como fuente de verdad en las pruebas: calcular el presupuesto recomendado y verificar que con ese presupuesto la política se cumple. Si falla, depurar la implementación y no cambiar la política para que las pruebas pasen.

Checklist para depurar problemas de presupuesto

1 Revisar truncamiento: calcular checks_por_ciclo_desde_presupuesto y el presupuesto_real_resultante. Si difieren, hay pérdida por cuantización.

2 Revisar la granularidad de ciclo y adaptar la fórmula a ciclos discretos en lugar de tiempo continuo.

3 Comprobar que la ordenación de niveles no provoca monopolización y que la fórmula considera el recheck_interval completo cuando procede.

4 Aumentar el margen temporalmente para distinguir entre insuficiencia del presupuesto y bug real en la lógica de selección.

5 Implementar acumulador rodante para aprovechar fracciones de capacidad y evitar desperdicio.

Fórmula final conceptual

Calcular num_ciclos = recheck_interval_seconds dividido por ciclo_seconds. Comprobaciones_necesarias_por_ciclo = num_participantes dividido por num_ciclos. Convertir a comprobaciones_por_minuto_minimas teniendo en cuenta ciclo_seconds y multiplicar por margin. Implementar acumulador para ejecutar las comprobaciones enteras permitidas cada ciclo.

Aplicaciones prácticas y ampliaciones

Este enfoque aplica más allá de moderación de vídeo. Para dimensionar RPS en una API, tamaño de pool de trabajadores o cache sizing, la receta es la misma: calcular el mínimo teórico, adaptar a la cuantización del sistema, añadir margen y validar con tests que usan el calculador como fuente de verdad. En Q2BSTUDIO ayudamos a empresas a aplicar estos principios tanto en proyectos de software a medida y aplicaciones a medida como en integraciones de inteligencia artificial y agentes IA para procesos críticos, siempre con consideraciones de ciberseguridad y servicios cloud aws y azure.

Por qué esto importa para tu negocio

Planificar mal capacidad o reaccionar cambiando políticas por culpa de pruebas lleva a overprovisioning o a sistemas inseguros. Adoptar un calculador primero reduce iteraciones, preserva la integridad de la política y facilita pruebas reproducibles. Si desarrollas soluciones con requisitos de SLA, integración de power bi o servicios inteligencia de negocio, o dependes de automatización con agentes IA, este patrón protege tanto la experiencia de usuario como recursos en la nube.

Conclusión y llamado a la acción

La lección principal es simple pero poderosa: construir el calculador de capacidad primero, añadir un margen realista y usarlo como referencia en las pruebas. No cambiar la política para que las pruebas pasen. En Q2BSTUDIO aplicamos estos principios en proyectos de inteligencia artificial para empresas, ciberseguridad, servicios cloud aws y azure y desarrollos a medida que requieren garantías de rendimiento y cumplimiento. Si quieres que revisemos tu estrategia de capacidad o diseñemos un calculador a medida, podemos ayudarte a integrar la solución en tu arquitectura y a validar con pruebas reproducibles y seguras.