Se suponía que el compilador también acabaría con la programación
Las afirmaciones de que los agentes de codificación con IA van a “acabar con la programación” se comparan con promesas anteriores de que los compiladores, COBOL, SQL y las herramientas visuales permitirían a los no expertos sustituir a los ingenieros de software; promesas que en su mayoría transformaron el trabajo en vez de eliminarlo. Los comentaristas contrastan los compiladores deterministas con los LLM probabilísticos, y sostienen que las instrucciones en lenguaje natural carecen de los contratos precisos necesarios para automatizar por completo el diseño, la arquitectura y la depuración del software, aunque sí aceleren enormemente la codificación rutinaria. Muchos esperan que la programación y otros trabajos de cuello blanco se reduzcan y se desplacen hacia escribir especificaciones, gestionar agentes y pensar en el producto a un nivel superior, mientras que otros dudan de que los LLM puedan captar de forma fiable requisitos reales y desordenados lo bastante bien como para sacar a los humanos del circuito.
Contexto histórico y olas previas de “fin de la programación”
- Los comentaristas recuerdan COBOL, SQL, BASIC, 4GL, las herramientas visuales y RAD/low-code como intentos anteriores de permitir que “la gente común” programara, ninguno de los cuales eliminó a los programadores.
- Se aclara que la “codificación automática” temprana significaba reemplazar el código máquina escrito a mano, no acabar con la programación en sí; a los compiladores alguna vez se les llamó “codificadores automáticos”.
- Algunos sostienen que las predicciones fueron en parte acertadas: los compiladores eliminaron capas enteras de trabajo manual y crearon una programación más y de mayor nivel.
¿Son comparables los LLM a los compiladores?
- Un lado: la codificación asistida por LLM es solo otra capa de abstracción, parecida al paso de ensamblador a Fortran; la “fuente de verdad” puede desplazarse a especificaciones/pruebas.
- Vista opuesta: mala analogía; los compiladores implementan mapeos precisos y deterministas con contratos bien definidos, mientras que los LLM son estocásticos, difusos y siempre devuelven alguna salida.
- Debate sobre el determinismo: los compiladores modernos son complejos y heurísticos, pero aun así deben preservar la semántica del programa; los LLM no ofrecen esa garantía.
Especificaciones, lenguaje natural y ambigüedad
- Varios sostienen que el lenguaje natural es inherentemente ambiguo; intentar eliminar la ambigüedad termina recreando código o especificaciones formales.
- Otros responden que muchos flujos de trabajo empresariales ya usan reglas parecidas al lenguaje natural en herramientas y flujos de trabajo agentivos.
Calidad y papel del código generado por LLM
- Algunos informan que ya casi no “programan”; los LLM generan la mayor parte de su código, y los humanos se centran en la dirección y la revisión.
- Otros dicen que los LLM sobrediseñan, cometen errores “estúpidos” y producen sistemas desordenados, difíciles de mantener sin restricciones cuidadosas.
- Hay desacuerdo sobre si los mejores modelos ya superan a la mayoría de los desarrolladores; algunos consideran esa afirmación exagerada o dependiente del contexto.
Empleos, economía y flujos de trabajo futuros
- Existe una fuerte preocupación de que la IA reduzca significativamente la demanda de programadores y de otros trabajadores de cuello blanco; se hacen comparaciones con los caballos reemplazados por los coches.
- Contraargumentos: el software nunca está “terminado”, los humanos aún necesitan definir productos, manejar una realidad cambiante y resolver requisitos mal especificados.
- Algunos prevén flujos de trabajo en los 2030 en los que los agentes hagan la mayor parte de la codificación, las pruebas y las operaciones, mientras los humanos especifican el comportamiento, juzgan casos límite y gestionan la “política de oficina”.
- Otros ven el entusiasmo actual como parte de un ciclo recurrente; las herramientas cambian, pero los debates sobre “cómo debe construirse el software” persisten.