Creo que es difícil reemplazarlos a todos, al menos por ahora.
Una parte esencial de la codificación es cristalizar los problemas exactos que estamos tratando de resolver y diseñar un conjunto bien definido de entradas y salidas. Esto debe suceder con cualquier tarea de codificación, y esto implica convertir requisitos vagos a especificaciones bien definidas. Por ejemplo, un cliente puede entrar y pedirles a los desarrolladores que creen un software de contabilidad que produzca el balance general, los estados de resultados y los estados de flujo de efectivo. Ese ya es un conjunto de requisitos relativamente claro. Sin embargo, esto sigue siendo demasiado vago para basar un sistema de software. ¿Qué deben incluir las declaraciones? ¿Cómo se contabilizan los inventarios? Y una vez que comencemos a perforar, se generarán más preguntas y cada una de estas preguntas deberá resolverse para que el producto se entregue a los clientes satisfactoriamente.
Dicho esto, creo que existe la posibilidad. Citando esta historia de The Logic of Science: ET Jaynes, G. Larry Bretthorst: 9780521592710: Estadísticas: Amazon Canadá:
- ¿Hay algún desafío / juego de SQL?
- ¿Qué es un entorno de desarrollo, entorno de preparación y entorno de producción?
- ¿Qué software puedo usar para programar?
- ¿Qué tipo de hardware pueden solicitar los ingenieros de software de Microsoft para usar en el trabajo?
- ¿Es mejor convertirse en desarrollador de software ahora o en el futuro?
A muchas personas les gusta decir: “Nunca harán una máquina para reemplazar la mente humana; hace muchas cosas que ninguna máquina podría hacer”. J. von Neumann dio una hermosa respuesta a esto en una charla sobre computadoras en Princeton en 1948, a la que el escritor tuvo el privilegio de asistir. En respuesta a la pregunta canónica de la audiencia (“Pero, por supuesto, una simple máquina realmente no puede pensar, ¿verdad?”), Dijo:
Insiste en que hay algo que una máquina no puede hacer. Si me dices exactamente qué es lo que una máquina no puede hacer, ¡siempre puedo hacer una máquina que haga exactamente eso!
Entonces, si algún día descubrimos con precisión cómo funciona el proceso de especificación de software, es posible que podamos automatizarlo. Lo que significa “pensar” es el núcleo del problema.