Cada vez necesitamos más y más software, pero ¿también, al mismo ritmo, vamos a necesitar cada vez más y más programadores? O, visto desde otro punto, ¿habrá suficientes programadores para desarrollar tantas aplicaciones como la sociedad necesita – necesitará?, y sino los hay ¿aparecerán nuevas maneras de crear software sin necesidad de expertos en programación?
Llevo años dándole vueltas a una predicción triste, apocalíptica, que de siempre me ha rondado por la cabeza, pero que no había tenido, y quizás aún no tengo, lo suficientemente estructurada mentalmente como para poder escribirla: ¿llegará el momento en que no sea necesario programar? Bueno, dicho así, el planteamiento es demasiado ambiguo y genérico, déjame que te lo concrete un poco más: ¿llegará el momento en que no necesitemos (tantos) programadores para programar o crear aplicaciones?
La industria lleva años invirtiendo mucho dinero para que no se necesiten (tantos) programadores para crear aplicaciones
Algunos lo justifican en lo que llaman la “ecuación imposible”, aquella que dice que el número de programadores crece lentamente, e incluso en algunos países el interés por las carreas técnicas decae (véase como ejemplo el famoso post sobre el caso de España, el de ya no gusta estudiar informática), mientras que la necesidad de aplicaciones software crece exponencialmente.
Así que, nuestra profesión, la informática, la ingeniería del software, lleva años, muchos, intentando que llegue el día en que no programemos. Suena un poco a suicidio. Pero así es. Esta profesión tiene esas cosas. Si hay un sueño dorado, perseguido desde siempre por miles de investigadores en software, este es… que no se tenga que programar (o qué sea tan fácil que esté a disposición de casi cualquiera). Harakiri.
Mientras lees esto deberías ser consciente de que hay miles de profesionales (y millones de euros) intentando que no programes más, o que no programes como hasta ahora lo hacemos. O que pueda programar (o más concretamente crear) aplicaciones cualquier persona.
Así que, mirando al futuro, se auguran dos posibilidades o soluciones para resolver la ecuación imposible:
a) Incrementar la productividad de los programadores (se entiende que mejorando técnicas, metodologías y herramientas, no, como hacen algunos por aquí, haciendo que trabajen más horas), para que puedan crear más software.
b) Facilitar la programación (o más concretamente “la creación”) de aplicaciones a no-programadores de profesión. En este contexto, un programador profesional es alguien que en su trabajo se dedica a la programación, por lo general usando los típicos lenguajes de programación, un Java, C #, C++, etc., puede que el futuro nos augure un crecimiento exponencial de lo que algunos llaman… la era del “end-user programming” gente que crea programas pero sin ser esta su profesión principal, químicos con formación en programación, abogados con formación en programación, médicos, economistas, etc. (alguno pensará que esto ya pasa todos los días, pero me refiero a que los “no programadores de profesión” programen cosas controlables) Y para los anteriores, por iniciativas que no sea… Pasado, presente y futuro de todo lo ingeniado por el hombre para que llegue el día en que no se programe
Este largo camino de investigación, que se remonta más allá de los 70, ha tenido grandes éxitos, y grandes fracasos, pero, desde luego, mucha constancia, e inversión.
Lenguajes de más alto nivel y generadores de código
En su día se dio un salto dejando atrás el ensamblador, introduciendo los lenguajes de alto nivel, que no evitaron programar pero simplificaron la tarea. Otro salto fue la creación de programas como el Excel, que evitaron tener que programar (o facilitaron la programación) de muchas funciones de cálculo, dejándolas accesibles a muchos perfiles.
Desde hace años, la comunidad que investigaba la creación de herramientas CASE parecía que podía lograrlo, generaban código desde lenguajes gráficos como UML… pero no fue suficiente.
Otras comunidades más recientes como las de MDD, MDA, DSL, y similares, también lo han perseguido. Perseguían, y persiguen, la generación automática, y la creación de aplicaciones por parte de personas sin grandes conocimientos en programación.
Pero hasta la fecha las anteriores iniciativas no han funcionado del todo bien principalmente, principalmente por dos razones: o bien la curva de aprendizaje era demasiado grande o bien el código generado era de muy mala calidad o era muy difícil de mantener.
Concretamente, no han funcionado bien en grandes desarrollos, porque en lo que refiere a pequeños desarrollos han crecido considerablemente, con mucho éxito, las herramientas disponibles para crear, por ejemplo, apps móviles para las distintas plataformas existentes en el mercado sin conocimientos previos de programación: Creapp, Apps Builder (aquí dejo un listado mayor).
“Paquetiza” todo lo que puedas…
Y, desde una aproximación distinta, otras estrategias orientadas a crear paquetes estándar fácilmente parametrizables, como las de reducir al mínimo la programación en la creación de contenidos, con plataformas como wordpress, que ha dejado al alcance de cualquiera disponer de una plataforma de gestión de contenidos casi sin conocimientos técnicos. Personalmente, y es bastante lógico, cada vez te encuentras más con gente sin conocimientos formativos programación desarrollando plugins para este tipo de plataformas.
Toda infraestructura de programación “paquetizala” también, y si es en cloud… mejor
Movidos por esta inquietud, o quizás por estos miedos, hace unos meses Nacho Suarez y yo comenzamos un trabajo de estudio de plataformas en cloud cuyo objetivo fuese que te olvidases de todo lo que te puedas olvidar a la hora de empezar a programar, es decir, que te olvidases de instalar IDEs, herramientas de control de versiones, integración continua, entornos de testing, etc.
Y, aunque aún no hemos terminado nuestra labor, la lista de iniciativas, de mayor o menor calado no deja de sorprendernos.
Concluyendo…
Si bien, si miramos atrás, no podemos negar que muchas cosas que antes requerían de un programador, hoy en día están al alcance de cualquiera, aun queda mucho para que desaparezca “el programador”, aunque solo sea porque se necesitan programadores para crear plataformas para los “programadores no profesionales”.
Aun así, yo, hablando en términos de futuro profesional, me andaría con un ojo puesto en este tema, puesto en el futuro, en tres o cuatro años, intentando posicionarme en entornos progesionales de “más difícil paquetización”.
Y en el posible impacto que este tipo de iniciativas pueden tener en ciertas dedicaciones profesionales de la programación de hoy, y como esto se puede unir a otra gran amenaza para la profesión, especialmente en países como España, y que viene de aquello que hablamos en el post de vamos a competir por un puesto de trabajo con profesionales de todo el mundo, dos temas que dentro de unos años pueden cambiar totalmente el panorama profesional del mundo del software.