Con su pregunta, creo que está preguntando cuánto desarrollo futuro podrá minimizar la cantidad de trabajo que un desarrollador de software tendrá que hacer. Incluso si tiene una IA que puede escribir todo su programa, aún tiene que decirle qué hacer, al igual que para un fabricante de automóviles automático, todavía tiene que darle un plano, y ese plano requiere algo de trabajo.
Y si tiene una IA, aún tiene que enseñarla y tendrá que aprender a través de varios proyectos. Por lo tanto, no creo que una IA sea adecuada para este tipo de trabajo, sino un enfoque más determinista, utilizando generadores de código. Estos generadores de código pueden volverse muy complejos, pero no necesariamente tienen que emplear aprendizaje automático.
Dicho esto, ya existe investigación en las áreas llamadas Diseño de software orientado a funciones y Diseño de software orientado a aspectos. Estos tratan con el ensamblaje de aplicaciones de software seleccionando algunas características que debería tener, y luego se genera el código para eso. El objetivo es tener implementaciones para varias características que aparecen repetidamente en un dominio particular y ensamblarlas como bloques de construcción, según sea adecuado para su aplicación particular. Para el desarrollo web, por ejemplo, las características incluirían transacciones, estadísticas, escalabilidad, registro y cualquier cosa que pueda considerar como características recurrentes de diferentes aplicaciones web.
Las características y los aspectos son diferentes a los componentes, ya que generalmente son preocupaciones transversales. Tomemos, por ejemplo, el registro. No puede simplemente tomar una biblioteca e incluirla en su aplicación y decir que tiene un registro ahora. Debe distribuir sus llamadas de registro por todo su código, y ahí es donde los generadores de código son útiles. Recientemente escuché sobre todo esto en esta entrevista de dos partes en Software Engineering Radio .
Parece que este tipo de investigación está bastante de moda en Europa, y en Alemania en particular, incluso en la industria, como puedo decir por experiencia personal. La generación de código puede ser útil para generar el código de infraestructura necesario, de modo que el desarrollador pueda concentrarse exclusivamente en implementar el comportamiento específico de su aplicación y no molestarse con los mismos problemas secundarios en cada proyecto diferente.
Queda por ver cuánto se puede reducir ese código específico de la aplicación. Ciertamente no se puede eliminar por completo, solo se reduce a algún tipo de plan, como mencioné al principio.