¿Cuál será el futuro del desarrollo de software en 2023? ¿Seguirá siendo necesario contar con un grupo de desarrolladores profesionales para el software personalizado, se creará a partir de UML o un lenguaje de nivel superior, o algo más?

El futuro del desarrollo de software probablemente tendrá una o más de las siguientes características:
– Altamente paralelo. El código secuencial quedará relegado a una minoría del código.
– Alto nivel. La tendencia de los lenguajes es facilitar el desarrollo a costa del rendimiento.
– Funcional. La programación funcional da tantas ventajas que no se puede ignorar, no está claro si esto ocurrirá en un lenguaje puro o mixto.
– La programación lógica hará posible su regreso, sin duda estilos más declarativos.

La fuerza impulsora es el límite en el rendimiento de un solo hilo de las CPU. Esto impulsa la necesidad de un mayor paralelismo en el software. El estado actual de tener un puñado de núcleos será un paso relativamente pequeño hacia el futuro de las CPUs masivamente paralelas.
Los lenguajes imperativos actuales no manejan bien el paralelismo, por lo que tendremos que desarrollar todo un nuevo conjunto de primitivas paralelas que sí funcionen de forma paralela a los datos (piense en map/reduce/filter/scan). Los programas se construirán sobre esta premisa y empezarán a cambiar la forma en que la gente piensa en la programación, que pasará de ser un diagrama de flujo secuencial a ser paralelo e impulsado por los datos.
Al mismo tiempo, habrá que pensar en cómo describir los patrones de acceso a los datos que realiza el software. Esto será esencial para reducir la sobrecarga de las comunicaciones para el software paralelo.

Los lenguajes de programación funcional ya nos dan algo de lo anterior y son ‘naturales’ para hacerlo, especialmente cuando se complementan con estructuras de datos inmutables como Clojure.

En cuanto a la mayoría de sus puntos anteriores, estoy completamente en desacuerdo. El software no puede convertirse en ‘estandarizado’. El software resuelve problemas. A menos que los problemas estén estandarizados, esto no sucederá.
La programación gráfica tiende a no funcionar muy bien (véase LabView). Funciona bien para soluciones muy simples, pero rápidamente se descontrola. El texto tiende a funcionar bien para esto, así que no veo que eso cambie.