¿Cómo podemos hacer que la programación sea accesible para más personas?

Muchos esfuerzos en esta área se centran en la visualización, como el Visual Basic más antiguo o el NoFlo más nuevo (http://noflojs.org/). Si bien esos esfuerzos son algo interesantes, no creo que las visualizaciones sean la clave para hacer que el desarrollo de software sea más accesible.

La razón principal es que el código ya ES una visualización. Una sutileza que a menudo se pierde en las personas es que los lenguajes de programación se crean para humanos, no para computadoras. Se crean para que los humanos puedan expresar flujos complejos y construcciones lógicas de una manera que entiendan, que solo entonces se traduce a un lenguaje que la computadora puede entender.

Si bien es evidente que hay mucho trabajo por hacer para que los lenguajes de programación sean más fáciles de manejar, lidiar con el código simplemente no es LA gran pérdida de tiempo en el desarrollo de software.

Diría que la gran pérdida de tiempo es que nada funciona. Todo está tan roto todo el tiempo. Es extremadamente difícil encontrar herramientas bien documentadas que funcionen como se anuncia y son fáciles de usar. Más a menudo que no, los componentes requieren jugar y hurgar de manera innecesaria. No está resolviendo problemas, solo está perdiendo el tiempo trabajando en torno a la mala artesanía y la falta de enfoque en el consumidor de su componente.

De hecho, siento que lo que se necesita en el desarrollo de software es que alguien intervenga y haga lo que Apple hizo por los teléfonos inteligentes con el iPhone y las computadoras domésticas con el iPad. Sacrificaron algunas cosas que agregaron mucha más complejidad de la que agregaron poder, como el sistema de archivos, y cosas limitadas que eran difíciles de administrar, como la multitarea. Pero lo más importante es que establecieron un estándar de calidad con el software que crearon ellos mismos y establecieron el control sobre el punto de entrada del software a la plataforma con la App Store, lo que les permite hacer demandas de mayor calidad en el software.

Es necesario que haya un iPhone de marcos de desarrollo, con una tienda de aplicaciones equivalente que lo acompañe. Un lugar donde puede obtener componentes de software en un formato estricto que puede adaptar fácilmente a sus cosas existentes, y que es muy probable que funcione como se esperaba. ESO sería un cambio de juego.

La programación consiste en comprender un problema de tal manera que pueda describir la solución a la computadora.
Los humanos se utilizan para comunicarse de manera ambigua e incompleta porque otros humanos lo entienden.
Solo cuando las soluciones a los problemas puedan describirse en una comunicación ambigua, la programación será accesible para más personas.