Su mensaje ha sido enviado.
Procesaremos su solicitud y nos pondremos en contacto con usted lo antes posible.
El formulario se ha enviado correctamente.
Encontrará más información en su buzón.
Seleccionar idioma
Como indican los informes de toda la industria, ahora hay un sector especializado cada vez mayor de ingenieros que se dedican a corregir los errores de código generados por el AI.
El patrón se ha vuelto notablemente consistente. Las empresas recurren a ChatGPT para generar scripts de migración, integraciones o funciones completas, con la esperanza de ahorrar tiempo y reducir costes. Al fin y al cabo, la tecnología parece rápida y accesible.
Entonces los sistemas fallan.
Y nos llaman.
Últimamente, recibimos cada vez más peticiones de este tipo. No para lanzar un nuevo producto, sino para desenmarañar cualquier lío que haya quedado después de que alguien confiara un modelo de lenguaje a su código de producción.
En este punto, está empezando a parecer su propio nicho de la industria. Arreglar los fallos generados por el AI es ahora un servicio facturable. Y en algunos casos, muy caro.
Informe 2024 de GitClear confirma lo que hemos visto con los clientes: Las herramientas de codificación AI aceleran la entrega, pero también alimentan la duplicación, reducen la reutilización e inflan los costes de mantenimiento a largo plazo.
Que quede claro, sin embargo, que no estamos "en contra del AI". Nosotros también lo utilizamos. Y es útil en el contexto adecuado, con los guardarraíles adecuados. Pero lo que me frustra de la excesiva confianza en el AI y sus implicaciones generalizadas -y probablemente a usted también- es el pensamiento mágico. La idea de que un modelo lingüístico puede sustituir al verdadero trabajo de ingeniería.
No se puede. Y como dice el refrán, la prueba está en el pudín. Cuando las empresas pretenden lo contrario, acaban pagando a alguien como nosotros para que lo limpie.
¿Cómo es uno de estos trabajos de limpieza? Esto es lo que los AI-afficionados no te cuentan en cuanto a tiempo perdido y dinero malgastado.
El mensaje suele llegar así:
"Oye, ¿puedes echar un vistazo a un microservicio que hemos construido? Usamos ChatGPT para generar la primera versión. La empujamos a staging, y ahora nuestra cola RabbitMQ está completamente inundada".
Pero aquí está la cosa: los síntomas aparecen mucho más tarde. A veces días después. Y cuando lo hacen, rara vez es obvio que la causa de fondo sea el código generado por AI. Simplemente parece que... algo falla.
"No se puede externalizar el pensamiento arquitectónico a un modelo lingüístico. AI puede acelerar las cosas, pero siguen haciendo falta ingenieros para construir sistemas que no se vengan abajo bajo presión."
Director Técnico
Tras una docena de estos casos, empiezan a surgir patrones:
Y por supuesto, cuando todo se derrumba, el AI no te deja un comentario diciendo: "Por cierto, estoy adivinando aquí".
Esa parte corre de tu cuenta.
Este vino de una empresa de tecnología financiera de rápido crecimiento.
Estaban desplegando una nueva versión de su modelo de datos de clientes, dividiendo un gran campo JSONB en Postgres en múltiples tablas normalizadas. Algo bastante estándar. Pero con plazos ajustados y pocas manos, uno de los desarrolladores decidió "acelerar las cosas" pidiendo a ChatGPT que generara un script de migración.
A primera vista tenía buena pinta. El script analizaba el JSON, extraía la información de contacto y la insertaba en un nuevo archivo user_contacts
mesa.
Así que lo ejecutaron.
Sin simulacro. Sin copia de seguridad. Directamente a la puesta en escena, que, como resulta, estaba compartiendo datos con la producción a través de una réplica.
Unas horas más tarde, el servicio de atención al cliente empezó a recibir correos electrónicos. Los usuarios no recibían notificaciones de pago. A otros les faltaban números de teléfono en sus perfiles. Fue entonces cuando nos llamaron.
Rastreamos el problema hasta el script. Hizo la extracción básica, pero hizo tres suposiciones fatales:
NULL
o claves que faltan dentro de la estructura JSON.ON CONFLICT DO NOTHING
, por lo que cualquier inserción fallida se ignoraba silenciosamente.Resultado: sobre 18% de los datos de contacto se perdió o se corrompió. No hay registros. No hay mensajes de error. Sólo pérdida de datos silenciosa.
Asignamos un pequeño equipo para desenredar el embrollo. Esto es lo que hicimos:
Dos ingenieros, tres días. Coste para el cliente: unos $4,500 en comisiones de servicio.
Pero el golpe más duro lo recibieron los clientes. Las notificaciones fallidas provocaron impagos y bajas. El cliente nos dijo que gastó al menos $10,000 en tickets de soporte, compensaciones de SLA y créditos de buena voluntad por ese script chapucero.
Lo irónico es que un desarrollador experimentado podría haber escrito la migración correcta en unas cuatro horas. Pero la promesa de velocidad AI acabó costándoles dos semanas de limpieza y daños a su reputación.
Ésta procede de una startup de tecnología jurídica que crea una plataforma de gestión de documentos para bufetes de abogados. Una de sus características principales era la integración con un servicio gubernamental de notificaciones electrónicas: una API REST de terceros con OAuth 2.0 y una limitación estricta de la velocidad: 50 solicitudes por minuto, sin excepciones.
En lugar de asignar la integración a un desarrollador de backend experimentado, alguien del equipo decidió hacer un prototipo con ChatGPT. Introdujeron la especificación OpenAPI, pidieron un cliente Python y obtuvieron un script de aspecto limpio con requests
, lógica de reintento mediante tenacity
, y actualización de fichas.
Parecía sólido sobre el papel. Así que lo enviaron.
Esto es lo que ocurrió en realidad:
X-RateLimit-Remaining
o Retry-After
cabeceras. Seguía enviando peticiones a ciegas.httpx.AsyncClient
, ha implementado un acelerador basado en semáforos, ha añadido un backoff exponencial con jitter y ha gestionado correctamente Retry-After
y cabeceras de límite de velocidad.Dos ingenieros, repartidos en dos días y medio. Coste para el cliente: unos $3,900.
El mayor problema es que su principal cliente, un bufete de abogados con expedientes urgentes, perdió dos plazos de presentación ante los tribunales debido a la interrupción. El cliente tuvo que controlar los daños y ofrecer un descuento para mantener la cuenta.
Todo porque un modelo de lenguaje no entendía la diferencia entre "código de trabajo" y "código listo para producción". Y sin más, otra capa de deuda técnica AI se añadió silenciosamente a la pila.
Lo que da miedo no es que estas cosas salgan mal. Es lo predecible que se está volviendo todo.
Cada uno de estos incidentes sigue el mismo patrón. Un desarrollador pide a ChatGPT un fragmento de código. Le devuelve algo que funciona lo suficientemente bien como para no dar errores. Lo conectan al sistema, tal vez lo limpian un poco, y lo envían, asumiendo que si se compila y se ejecuta, debe ser seguro.
Pero aquí está el truco: Los grandes modelos lingüísticos no conocen su sistema.
No saben cómo interactúan sus servicios.
No conocen su presupuesto de latencia, su canal de despliegue, su configuración de observabilidad ni sus patrones de tráfico de producción.
Generan el código más probable basándose en los patrones de sus datos de entrenamiento. Eso es todo. No hay conciencia. No hay garantías. No hay intuición para el diseño del sistema.
Y el resultado suele reflejarlo:
Lo peor es que el código parece correcto. Es sintácticamente limpio. Pasa linters. Incluso podría ser cubierto por una prueba básica. Pero le falta la única cosa que realmente importa: el contexto.
Por eso estos fallos no aparecen de inmediato. Esperan a los despliegues del viernes por la noche, a las ventanas de alto tráfico, a los raros casos límite. Esa es la naturaleza de la deuda técnica AI - es invisible hasta que rompe algo crítico.
Como ya hemos dicho, nosotros también utilizamos AI. Prácticamente todos los ingenieros de nuestro equipo tienen una configuración similar a Copilot ejecutándose localmente. Es rápido, útil y, sinceramente, una forma estupenda de saltarse las partes aburridas.
Pero aquí está la diferencia: nada llega a la rama principal sin pasar por un ingeniero senior, y en la mayoría de los casos, una tubería CI que sabe qué buscar.
Los LLM son geniales:
Lo que son no bueno es el diseño. O el contexto. O los valores predeterminados seguros.
Por eso hemos creado nuestros flujos de trabajo para tratar los resultados de LLM como sugerencias, no como fuentes de verdad. Esto es lo que ocurre en la práctica:
Bien utilizado, ahorra tiempo. Si se usa a ciegas, es una bomba de relojería.
No estamos aquí para decirle que prohíba las herramientas AI. Ese barco ya ha zarpado.
¿Pero dar acceso a un modelo lingüístico? Eso es buscarse problemas.
Esto es lo que recomendamos en su lugar:
Deja que te ayuden con el código repetitivo. Que propongan soluciones. Pero no les confíes decisiones críticas. Cualquier código generado por AI debe ser revisado por un ingeniero senior, sin excepciones.
Ya sean etiquetas de confirmación, metadatos o comentarios en el código, dejar claro qué piezas proceden del AI. Esto facilita la posterior auditoría, depuración y comprensión del perfil de riesgo.
Decidan en equipo dónde es aceptable utilizar LLM y dónde no. ¿Boilerplate? Claro. ¿Flujos de autenticación? Tal vez. ¿Sistemas transaccionales? Absolutamente no sin revisión. Explicitar la política y parte de sus normas de ingeniería.
Si dejas que el código generado por AI entre en producción, tienes que asumir que algo se romperá en algún momento. Añade comprobaciones sintéticas. Monitores de límite de velocidad. Seguimiento de dependencias. Hacer visible lo invisible, especialmente cuando el autor original no es humano.
Los mayores fallos provocados por el AI que hemos visto no provenían de código "malo". Procedían de errores silenciosos -falta de datos, colas rotas, tormentas de reintentos- que pasaban desapercibidos durante horas. Invierta en la observabilidad, la lógica de retroceso y las reversiones. Especialmente si dejas que ChatGPT escriba las migraciones.
En resumen, AI puede ahorrar tiempo a su equipo, pero no puede asumir la responsabilidad.
Sigue siendo un trabajo humano.
AI puede ayudarle a moverse más rápido. Pero no puede pensar por ti.
No entiende su arquitectura. No sabe lo que significa "hecho" en tu contexto. Y definitivamente no le importa si tu canalización de datos se rompe silenciosamente un viernes por la noche.
Por eso, como directores de tecnología, debemos centrarnos en la resistencia del sistema, no sólo en la velocidad.
Es tentador dejar que AI se encargue de las partes aburridas. Y a veces está bien. Pero todo atajo conlleva una contrapartida. Cuando el código generado por AI se cuela sin control, a menudo se convierte en deuda técnica AI. Del tipo que no ves hasta que tu equipo de operaciones está luchando contra el fuego en producción.
Si ya se ha topado con ese muro, no está solo. Hemos ayudado a equipos a recuperarse de todo, desde migraciones rotas hasta desastres de API. No nos limitamos a refactorizar código. Ayudamos a refactorizar el pensamiento que hay detrás.
Porque, al fin y al cabo, eso es lo que realmente hace que los sistemas sean fiables.
Su mensaje ha sido enviado.
Procesaremos su solicitud y nos pondremos en contacto con usted lo antes posible.
Al registrarse, acepta nuestra Política de privacidadincluyendo el uso de cookies y la transferencia de su información personal.