No todo el mundo necesita programar (aunque es divertido)

Últimamente ha habido bastante revuelo en twiter y algunos blogs sobre si aprender a programar es algo que debería hacer todo el mundo. Eso en parte viene por iniciativas como CodeAcademy y su Code Year que han hecho que hasta Mike Bloomberg, el alcalde de Nueva York, manifestase su intención de aprender a programar durante este año.

Algunos, como Jeff Atwood, han mostrado su disconformidad con esta idea, aunque luego lo haya matizado. Otros, como Jon Galloway han dejado claro lo muy a favor que están.

Lo cierto es que, después de leer unas cuantas opiniones al respecto y pensar un poco sobre ello, debo decir que estoy más cerca de la postura de Jeff Atwood: programar no es algo tan útil com para que todo el mundo deba aprenderlo.

A veces tendemos a considerar nuestro trabajo como algo fundamental y somos capaces de ver su impacto en muchas áreas de la vida, pero es no deja de ser deformación profesional. Supongo que le pasa a todo el mundo, no sólo a los que nos dedicamos a esto y que, en general, cuanto más sabes de algo, más capaz eres de ver su interelación con otras cosas.

El principal argumento a la hora de defender la utilidad de que todo el mundo sepa programar es que hoy en día la tecnología es cada vez más fundamental en nuestras vidas y el software que es algo de lo que cada vez dependemos más.

Además, hay multitud de problemas cotidianos que pueden resolverse con un par de líneas de código pero que, por desconocimiento, se acaban haciendo de forma manual y repetitiva. He visto a mucha gente renombrar una a una las fotos que acaba de copiar de su móvil al PC, cuando hacer eso con un simple script batch es trivial (y sí, también existen cientos de aplicaciones para hacer eso de forma trivial sin tener que programar nada).

Sin embargo, ambos argumentos me parece un poco débiles. El hecho de utilizar algo no implica tener que entenderlo “a bajo nivel”. Todo nuestro mundo se construye a partir de abstracciones que nos permiten olvidarnos de lo que hay por debajo (empezando por nuestras propias herramientas: los lenguajes de programación).

Uno de los ejemplo más claros (y que más ha salido en las discusiones que he leído) es el de los coches. Muchos de nosotros somos capaces de conducir un coche, pero no tenemos ni idea de cómo repararlo y, ya ni hablamos de entender cómo funciona. Yo sé que tengo un pedal que cuando lo aprieto el coche corre más, pero para mi es magia; no sé qué hay detrás del pedal.

Por otra parte, que programar nos puede ahorrar tiempo en tareas cotidianas es cierto, pero también es verdad que programar es complicado. No me refiero a los conceptos básicos, me refiero a recordar las reglas de sintaxis, las funciones disponibles, etc. Es una cosa que si no utilizas con frecuencia, se olvida y al final tardas más tiempo en recordar cómo se hacía que en hacerlo a mano. ¿A quién no le ha pasado tener que hacer un replace en un fichero y, con tal de no tener que recordar cómo funcionaban las expresiones regulares en el editor de turno, acabar haciendo el replace a mano?

En el otro lado, el de los que no creen que todo el mundo deba aprender a programar, también hay algunos argumentos discutibles. En su post Jeff Atwood explica que puede ser problemático tener más gente inexperta creando código y más código en el mundo.

No me gusta esa visión, me parece un poco elitista. Suena un poco a “dejadnos el código a los que sabemos”. Me recuerda a los periodistas diciendo hace unos años “no escribáis blogs, dejandos la comunicación a los que sabemos”. Hay sitio para todos, para que mi madre sepa hacerse una macro en Word y para que yo me gane la vida desarrollando software.

En cualquier caso, y aunque crea que no todo el mundo necesite programar, sí creo que se debería dar una mayor formación básica sobre informática. Es demasiado frecuente encontrar gente joven que sabe “manejar” un ordenador, pero no entiende conceptos básicos que sí son necesarios para desenvolverse con soltura.

Qué es internet, qué es un dominio, la diferencia entre una aplicación de escritorio y una aplicación online, dónde se almacenan las datos, … son conceptos que, actualmente, mucha gente no tiene claros y ayudarían a evitar muchos de los problemas a los que se enfrentan continuamente los usuarios inexpertos.

Aun así, no hay que olvidar una cosa: más allá de su utilidad, programar es divertido. Como actividad intelectual me parece muy gratificante, no deja de ser una forma accesible de crear algo (a veces incluso algo útil), y a casi todo el mundo le gusta la sensación de crear cosas.