La ingeniería de software no es escribir código: es gestionar la complejidad

Software engineering is about managing complexity

La IA está haciendo visible un malentendido fundamental: confundimos escribir código con construir software. Escribir código es traducir ideas a instrucciones; construir software es decidir qué instrucciones deben existir, cómo interactúan, qué restricciones importan y qué compensaciones son aceptables. La IA es excelente en lo primero, pero la ingeniería comienza en lo segundo. Este artículo explora por qué la complejidad real reside en las decisiones de arquitectura, por qué la IA no puede reemplazar el juicio de ingeniería y por qué el pensamiento algorítmico es más importante que nunca.

La ingeniería es, en gran medida, la disciplina de decidir qué problemas estás dispuesto a tener.
  1. zug_zug

    Lo de la complejidad es absolutamente cierto.

    Sin embargo, creo que se engrandece lo que los ingenieros humanos realmente hacen con comentarios como "Los ingenieros son dueños de las compensaciones". Mi experiencia es que ciertamente menos de la mitad de los ingenieros de software empleados no hacen un análisis real a preguntas como:

    "Dadas estas restricciones, este equipo, este negocio, esta infraestructura, este presupuesto, estos riesgos y la evolución esperada del producto, ¿cuál es la forma más apropiada de implementar X, hoy?"

    Por lo tanto, creo que la IA es más capaz de reemplazar al ingeniero promedio de lo que este artículo admite; sin embargo, la insuficiencia de la "ingeniería promedio" será mucho más evidente ahora: los codebases pueden volverse lo suficientemente grandes/complejos como para ser inmanejables en meses, cuando antes tomaba 5 años [una escala de tiempo donde la rendición de cuentas es efectivamente imposible].

  2. cobbal

    Me pierde en la primera suposición. La gente puede discutir sobre lo útil que es la IA, pero obviamente no es esencial porque de alguna manera logramos escribir código sin ella hace unos años. Incluso diría que el código era mejor entonces.

    Las dos tareas de escribir código e ingeniería de software no pueden separarse sin dañar la integridad del modelo mental del ingeniero. Tener arquitectos que no interactuaban con el código siempre producía desajustes entre el mapa y el territorio.

  3. a2ff6eeb0

    La IA también puede generar la arquitectura por ti basándose en los requisitos, y hacer las preguntas de aclaración necesarias.

    No es tan buena en diseño de sistemas como en escribir código, todavía. Pero parece que es mejor que la mayoría de mis colegas.

    Creo que en unos meses, la arquitectura de sistemas tendrá su momento Claude Code, y los humanos serán superados.

  4. wyum

    La complejidad del software crece superlinealmente, si no exponencialmente, a medida que agregas componentes.

    Hay cosas que un ingeniero puede hacer para aplanar la curva - esa es la idea de gestión de complejidad del OP - pero el crecimiento de la complejidad nunca puede ser lineal mientras estés agregando al software.

    Hice un modelo/teorema para esto que publiqué en X: https://x.com/i/status/2027771813346820349

    La generación de código ha expuesto que la verificación es el problema central de la ingeniería de software. Y creo que siempre lo ha sido.

    Definir qué es "correcto" puede ser bastante difícil, y más aún construir un sistema que se preste a la verificación, y más aún dedicar tiempo a verificar. Liberar software y dejar que los usuarios encuentren errores es, por lo tanto, una estrategia muy eficiente, porque reparte la carga. Pero tienes que caminar en la línea entre perder usuarios y obtener suficiente retroalimentación para encontrar y corregir los errores que importan.

    Mientras nos enfrentamos a si la IA podría quitarnos nuestros trabajos, me consuela un poco la idea de que el mundo podría ser demasiado complejo incluso para la IA más grande y mejor entrenada que podamos imaginar. En cierto punto, necesitas simular el mundo entero (o una parte sustancial de él) y el costo/beneficio de intentar hacer todo eso con computación puede no valer la pena en comparación con usar el mundo real (es decir, los humanos) como tu verificador.

  5. softwaredoug

    A veces estas compensaciones involucran media docena en unas pocas líneas de código. Y ahí es donde dudo en dejar trabajar a un agente. Hará bien en crear código correcto. Y puedes restringirlo un poco para que piense en otra cosa. Pero pierde el hilo, ignora restricciones, hace trampas, ¿y pones complejidad encima para prevenirlo? ¿O solo miras una docena de líneas de código para arreglarlo?

Más de este día

2026-08-27