El trabajo del ingeniero de software moderno es desarrollar el harness
Escribir código ya no es el único cuello de botella en el desarrollo de software porque las inteligencias artificiales pueden generar implementaciones en segundos. Para que ese trabajo sea seguro y útil, la verdadera tarea del ingeniero moderno consiste en construir un harness o sistema de restricciones y retroalimentación.
Resumen
- El concepto de harness se extiende más allá de las pruebas tradicionales para convertirse en el conjunto completo de reglas, entornos y verificaciones que guían tanto a humanos como a inteligencias artificiales.
- Los modelos de lenguaje son muy rápidos pero carecen de juicio sobre las reglas de negocio, por lo que necesitan un camino guiado para producir cambios pequeños y seguros.
- Un buen sistema de trabajo combina especificaciones versionadas, entornos reproducibles y puertas de calidad automáticas para reducir la incertidumbre en cada entrega.
- Los límites de acceso claros son indispensables para evitar que las herramientas autónomas manipulen datos sensibles o ejecuten comandos riesgosos sin supervisión.
- Las herramientas de asistencia pueden cambiar con el tiempo, pero los criterios estrictos de calidad y las evidencias técnicas deben mantenerse independientes de cualquier IDE.
Escribir código sigue siendo una parte importante del trabajo, pero ya no es el único cuello de botella. Los asistentes y agentes de inteligencia artificial ya pueden proponer implementaciones, refactorizar archivos y ejecutar tareas repetitivas con gran rapidez. Eso no elimina la ingeniería: desplaza el foco hacia definir el problema, establecer límites y comprobar que una solución realmente merece llegar a producción.
Ahí es donde entra el harness, que es el conjunto de contexto, reglas, entornos y ciclos de retroalimentación que guía el trabajo tanto humano como asistido por IA. En la práctica, esto significa convertir una solicitud amplia en un cambio que se puede ejecutar, observar y revisar de forma controlada.
De las pruebas a un sistema de trabajo
En el ámbito tradicional de las pruebas, un test harness o estructura de pruebas es el armazón que permite ejecutar un sistema en condiciones controladas preparando dependencias, inyectando datos y observando el resultado. En un equipo que utiliza agentes, la idea se amplía porque el harness también incluye la definición de lo aceptable, las restricciones de seguridad, los comandos confiables y las verificaciones que respaldan una entrega.
La IA acelera; el harness da dirección
Los modelos de lenguaje son excelentes para explorar alternativas, pero no tienen una comprensión garantizada de las reglas de negocio, las consecuencias operativas o las particularidades de un repositorio. Un resultado que compila todavía puede incumplir una regla de producto, exponer datos sensibles o romper una integración poco utilizada. Por eso, el objetivo no es pedirle a la IA que haga todo, sino ofrecerle un camino seguro para producir cambios pequeños, verificables y fáciles de cuestionar.
Un buen harness no sustituye la revisión técnica ni las decisiones de producto. Reduce la incertidumbre y genera evidencias mediante pruebas automáticas. Cuando las pruebas fallan, el agente recibe una señal específica para corregir; cuando pasan, el equipo todavía evalúa si la solución cumple con la intención, la seguridad y el mantenimiento futuro.
Qué compone un buen harness
La implementación varía según el proyecto, pero estos componentes suelen marcar la diferencia:
- Especificación y contexto versionados: requisitos de negocio, convenciones del repositorio, criterios de aceptación y ejemplos reales cerca del código. Las instrucciones breves y específicas son más útiles que una petición genérica de implementa esto.
- Entorno reproducible: dependencias, variables de ejemplo y comandos claros para ejecutar el proyecto. Los contenedores, que son entornos virtuales aislados que empaquetan una aplicación con todo lo necesario para correr, y los scripts de inicio ayudan a acercar el entorno local, la integración continua y la producción.
- Puertas de calidad automáticas: formato, tipos, linters que son herramientas para analizar código automáticamente en busca de errores, pruebas unitarias, de integración, de interfaz y compilación. Cada verificación debe ser lo bastante rápida para el ciclo de desarrollo y lo bastante confiable para no convertirse en ruido.
- Límites de acceso: permisos mínimos, secretos fuera del contexto del agente y atención a instrucciones incluidas en contenido no confiable. Cuanta más autonomía tenga el agente, más explícitos deben ser sus límites para archivos, red y comandos.
- Observabilidad del cambio: un diff que muestra exactamente las líneas añadidas y borradas, registros útiles, resultados de comandos y una explicación objetiva de lo modificado. Esto acelera la revisión humana y hace que una reversión sea menos arriesgada.
Las herramientas son interfaces, no el proceso
Herramientas como Claude Code, los agentes de VS Code y plataformas como Google Antigravity pueden leer el proyecto, modificar archivos, ejecutar comandos e iterar a partir de la retroalimentación. Estas capacidades solo son confiables cuando se encuentran con un proyecto bien preparado. El mismo harness debe servir para cualquier herramienta: el modelo o la interfaz de desarrollo pueden cambiar; los criterios de calidad no deberían hacerlo.
| Sin un harness claro | Con un harness bien diseñado |
|---|---|
| Solicitud amplia y contexto disperso en conversaciones | Criterios de aceptación y convenciones cerca del código |
| Cambio grande, difícil de revisar y reproducir | Diff pequeño, comandos deterministas y retroalimentación rápida |
| Confianza basada en parece que funciona | Evidencias: tipos, pruebas, compilación, revisión y monitoreo |
La habilidad que gana importancia no es solo escribir el próximo fragmento de código. Es diseñar un sistema de trabajo en el que las buenas soluciones se conviertan en el camino más fácil y los fallos aparezcan temprano. La IA puede acelerar la ejecución; la responsabilidad, el criterio y el contexto siguen siendo humanos.