Cosas que no se arreglan con frambuesas…

Supongo que la mayoría habéis oído hablar del lanzamiento del Raspberry Pi y su enorme éxito (‘pi’, en inglés, suena exactamente igual que ‘pie’, y por tanto a un anglosajón el nombre del cacharro le suena a ‘tarta de frambuesa’, y de aquí el terrible título de esta entrada). Vaya por delante que opino que el Pi es una idea fantástica y tengo pendiente comprarme uno.

Pero (porque si no hubiese pero no habría entrada en el blog, claro).

Como con cada cacharrito nuevo, bien hecho y bienintencionado, todos nos alegramos, pero en seguida surge esa tendencia bipolar nuestra de opinar que o bien no va a servir de absolutamente nada o bien va a solucionar todos los males del mundo. Que la experiencia demuestre que prácticamente nunca se da ninguno de esos dos casos, y que todo son grises y casi nada blancos y negros no significa que tengamos que aprender. Si lo hiciéramos esto no tendría ninguna gracia ;-).

Leía el otro día un interesantísimo artículo sobre el tema en el Guardian (de verdad, de muy recomendable lectura, con muchos aspectos en los que coincido y algunos con los que no) y allí, a medio artículo, me encuentro con lo siguiente:

Eben Upton, a friendly, upbeat man (everyone involved with the RPi is friendly) is a designer of microchips for Broadcom and the main designer of the RPi. In the early- to mid-2000s, he was in charge of undergraduate admissions to computer science at Cambridge. He noticed a massive drop-off in the numbers and, especially, quality of undergraduates between 1996, when he graduated, and 2005.

«The students just couldn’t program, and that’s because they hadn’t been in the presence of programmable hardware,» he says. «It’s not so much an education as an environment thing. I was self-taught, so were all of my friends. But in the consumer device world we’re in today, where the majority of devices are tablets and phones and set-top boxes and games consoles… these are all machines that you can use to consume, but most of them won’t let you produce.»

…y no puedo evitar pensar dos cosas: por un lado, que creo que su retrato de la realidad es prácticamente impecable y, por otro lado, que evidencia algunos de los problemas de la enseñanza de la informática programación en la universidad. Los que el Raspberry Pi, casi seguro, no va a solucionar.

Me suena. Upton y yo debemos tener aproximadamente la misma edad. Y tuvimos de niños un ‘8 bits’ (yo un maravilloso Commodore 64, pero también podría haber sido un Spectrum ZX o, teniendo en cuenta que él es británico, un BBC Micro). Un ordenador que lo primero que te enseñaba era un entorno para programar en Basic (o lo que se entendía por un entorno en los 80). Además, los juegos que usábamos eran desarrollos modestísimos (en cuanto a recursos humanos y económicos y tiempo de desarrollo, que no en cuanto a talento), que te permitían soñar con hacer, algún día y con mucho esfuerzo, algo similar. Y eso no hacía que te pusieras automáticamente a probarlo, pero lo facilitaba. Y en los quioscos había un buen número de publicaciones que, además de enseñarte qué juegos había en el mercado, venían con programas que podías teclear (cuando llegaron las revistas con cinta, con los programas ya tecleados, fue el acabóse, pero también hay que decir que si te dan el programa ya tecleado, la probabilidad de que te lo mires a fondo es bastante más baja que si lo tecleas). Ese, curiosamente, es un aspecto en que los tiempos pre-www no me parecen inferiores a los actuales.

Cuando esa generación llegó a la universidad, había una parte (no necesariamente grande, pero seguro que tampoco era pequeña) que entraba sabiendo programar. Con vicios adquiridos, desde luego, pero que ya había dado los primeros pasos. Y tener unos cuantos estudiantes en el aula que ya saben hacer lo que les quieres enseñar es, creedme, una bendición. Además, había otro colectivo que, en algún momento de sus vidas, había sentido curiosidad por qué es programar, lo había intentado, se había estampado contra la pared (no es una metáfora excesiva: puede resultar doloroso) y lo había dejado… antes de engrosar los números de estudiantes que abandonan, frustrados, en primero de carrera.

Con la popularización de las consolas pero, sobre todo, con la llegada de ordenadores, sistemas operativos y software cada vez más sofisticados, programarse las cosas uno mismo dejó de tener ningún sentido práctico. Además, los usuarios ven software que está a años luz de lo que podrían lograr ellos con tiempo y esfuerzo. Consecuencia: el número de estudiantes que llega a primero de informática teniendo nociones de programar se ha reducido (aunque sigue habiéndolos, naturalmente) y el colectivo de los que han abandonado antes de llegar a la línea de salida se ha visto reducido también notablemente. El resultado lo comenta Upton: desplome del rendimiento académico. Nótese, además, que un desplome rápido nos impide echarle la culpa (como solemos hacer en la universidad) a la educación primaria y secundaria y también elimina la posibilidad de que sea la actuación del profesor (que difícilmente va a empeorar tan sensiblemente en unos pocos años).

Pero… ¿por qué pone esto en evidencia los problemas de la enseñanza de la informática? Pues… si el hecho de que lleguen menos estudiantes con conocimientos previos hace caer el rendimiento de las primeras asignaturas de programación… igual eso significa que antes tampoco es que estuviéramos enseñando a programar muy bien, ¿no?

Paréntesis. Cuento entre mis amigos a muchos buenos profesionales de la enseñanza de la informática. Y es probable que esto lo acabe leyendo alguno más. El párrafo anterior, además de constatar una opinión personal fuerte, tiene el ánimo de encender la discusión constructiva :-). Me encantará reconocer que me equivoco si alguien aporta suficientes argumentos sólidos en contra.

En cualquier caso, y volviendo a lo que íbamos… Me da a mí la impresión de que el infierno se congelará mucho antes de que la enseñanza primaria o secundaria asuman la enseñanza de la programación como materia obligatoria (sí: a pesar de que algún país está en ello). Me lo parece, sobre todo, por un motivo perverso: meter la programación en un currículo, en cualquier currículo, iba a ser una buena idea socialmente, pero iba a tener efectos nefastos sobre los números del rendimiento académico en escuelas e institutos. Y mucho me temo que nuestras «cabezas pensantes» se preocupan mucho más de algo fácilmente cuantificable y que tiene visos de ir mal que del beneficio social, que va a resultar mucho más difícil de medir y, de regalo, va a ser demasiado lento como para sacarle beneficio electoral.

Pero sí estoy de acuerdo en que exponer a los potenciales informáticos de mañana al «arte de programar» cuanto antes es una maravillosa idea. ¿Por qué no creo en el Raspberry Pi como solución a ese problema? Por dos motivos principales:

  • Este problema, al menos en el primer mundo, no es de fractura digital: desde luego que hay niños y adolescentes en el Reino Unido (y en España, asumiendo que aún seamos primer mundo) sin acceso a un ordenador, y ese es un problema importante, pero dudo muchísimo que el acceso universal vaya a mejorar sensiblemente los números de la universidad.
  • Sí, el Raspberry Pi es un ordenador que da acceso rápido a un entorno de programación… pero eso no es todo lo que hace falta. Y, la verdad, ni siquiera es la característica más destacada ni el motivo que va a animar a casi nadie a comprarse uno.

El Pi es el ordenador ideal para el «hobbysta» del primer mundo, que ya sabe que quiere hacer cosas (y probablemente hasta qué cosas), y una solución como mínimo interesante para intentar atacar el problema de la fractura digital en los países menos favorecidos. Sólo por ello ya es una idea fantástica. Y si encima pensamos en las vías nuevas que abre un ordenador de tamaño, consumo y precio tan reducidos… Pero insisto: uno de los problemas que no va a solucionar es el de conseguir más y mejores programadores en ningún país europeo.

Y es que tener tener el entorno disponible es tan solo una parte del problema. Y hay otros factores me parecen tanto o más importantes. Si tantos nos animamos a dar nuestros primeros pasos con el 64 o el ZX, además de por tener un cacharro a mano, era porque disponíamos de un lenguaje sencillo, de muchos ejemplos de código de calidad razonable que permitían hacer cosas divertidas y vistosas con relativa facilidad y de muy rudimentarias y poco conectadas comunidades de práctica (para muchos, alrededor de algo tan tremendamente lento y poco conectado como las revistas mensuales y en papel).

¿Podemos conseguir eso hoy? Desde luego. Hay muchas vías para comenzar a programar. Una muy popular es Processing (no, no consigo venderme la idea de los lenguajes diseñados para enseñar a programar, por mucho que lo intento), que seguramente conoce todo el que se haya interesado alguna vez por el tema. Pero yo tengo entre ceja y ceja que el entorno de desarrollo está en todos los navegadores, y que el lenguaje de programación, casi universal, se llama JavaScript (antes de hacerme una lista de los múltiples crímenes de JavaScript como lenguaje de programación, por favor considerad cómo el lenguaje de programación de la generación de los 8 bits, ese que hacía que el rendimiento en la universidad fuera más digno… era BASIC, por el amor de Turing). Y pienso en JavaScript porque, además de contar con un intérprete en cada navegador (y por tanto en cada ordenador, básicamente, más en cada tableta y en cada smart- y not-so-smart- phone), contamos con entornos de desarrollo en línea que, sin ser comparables a lo que espera el programador profesional, sí son bastante mejores que aquellos de que disponíamos en los 80 (mi favorito es jsFiddle.net y lo será aún más cuando salga de alfa y comience a funcionar mejor en navegadores no-Webkit, aunque JS Bin es una alternativa sólida) y bibliotecas (que en jsFiddle se pueden añadir trivialmente) como, sobre todo Processing.js (el primo web de Processing), y en menor medida Raphaël, three.js o Kinetic, que permiten comenzar a usar y modificar código ajeno para obtener deprisa resultados vistosos que te animan a continuar y profundizar. Y, además, te permiten guardar, mostrar y compartir tu código. E iniciativas como Codecademy demuestran, incluso, que alrededor de JavaScript se puede montar un entorno de aprendizaje atractivo…

¿Encontraremos una vía para que los niños de hoy puedan aprender a programar? ¿Será JavaScript? ¿Será por otro lado? Más vale que le demos vueltas, porque un trocito significativo de nuestro futuro depende de ello…