¿Qué tan cerca estamos técnicamente de desarrollar un software que pueda escribir software, reemplazando esencialmente la mayoría de los trabajos de programación y desarrollo de software realizados por humanos?

Recuerdo haber leído predicciones a mediados de los años 90 de que las herramientas CASE (Ver: Computer-aided software engineering) pronto se desarrollarían hasta el punto de que los programadores ya no serían necesarios para muchas tareas de desarrollo de software. Todo lo que se necesitaría serían expertos en un área de negocio concreta para crear diagramas y la herramienta generaría el código necesario. En caso de que te lo preguntes, las herramientas sólo fueron moderadamente útiles y han caído en gran medida en desuso.

En el momento de la predicción, me reí un poco: sólo unos meses antes, había leído que la misma predicción se había hecho para otra tecnología. Ésta se remontaba a 1959 y permitiría a un no-programador expresar un problema de negocios en una sintaxis simple como la del inglés. El lenguaje era el COBOL, que tampoco eliminó del todo a los programadores.

Creo que el problema es que la gente no acaba de entender lo que hace un programador. El conocimiento de un lenguaje de programación es realmente fácil de adquirir. La parte difícil es aprender a conceptualizar un problema de negocio de una manera estructurada, de modo que se puede traducir en estructuras de datos, algoritmos y, en última instancia, el software de trabajo. Muchos aspirantes a programadores se encuentran en una situación en la que han estudiado un lenguaje y han aprendido la sintaxis, pero no saben cómo empezar a crear una solución real. Acaban de encontrarse con la parte más difícil de ser un programador. No creo que esta parte difícil sea superada por las máquinas en un futuro próximo.