Corrían los años 80 y los ordenadores personales comenzaron a hacerse un hueco en los hogares. Su aspecto y características eran de lo más dispares pero todos tenían un aspecto en común: nadie sabía qué hacer tras encenderlo la primera vez. Tan solo parpadeaba un pequeño cuadrado que parecía indicar que la máquina esperaba algo de ti. Así que tenías dos opciones: o leías un grueso manual o te conformabas con un pisapapeles muy caro. En aquella época todavía la lectura de manuales estaba bien vista, y las madres todavía eran capaces de manejar el video Beta o VHS con soltura.
Estos manuales eran monstruos de 500 páginas [1] que te entretenían durante más de 30 antes de poder tocar una sola tecla. Pero era entonces cuando se abría un mundo de comandos que hacían que poco a poco esa máquina inerte empezara a cobrar vida. Poco a poco aprendías a manejar procesadores de texto, dibujabas con el Dr. LOGO [2] y jugábamos a los primeros videojuegos. En mi caso, con un Amstrad CPC 6128 en mi poder y tras mucho sobar el manual acabé descubriendo un anexo titulado "Que usted lo disfrute" donde aparecían líneas de códigos indescifrables esperando a ser transcritos en el teclado con paciencia. En ese momento no sabías qué ibas a encontrar al final del camino, pero asumías el reto de explorar. El premio era doble: tenías un juego gratis (el gusto por lo gratis es intemporal) y descubrías que existía una forma de crear juegos y estaba a tu alcance. Mi padre, mi hermano y yo nos alternamos durante horas hasta que escribimos "RUN". Y de repente una pelota rebotaba por la pantala rompiendo cuadrados de colores. Y todos sentimos curiosidad por descubrir qué significaba aquel extraño lenguaje que nos daba el poder de controlar una máquina: el BASIC [3].
Algunos decidimos llevar esa curiosidad más allá, devorando los pocos libros y revistas que caían en nuestro poder para aprender a sacarle el máximo partido a la máquina para algún día poder controlarla. Así fue como muchos de una generación empezamos a crear nuestros primeros juegos (o un intento de ellos) y utilizábamos la programación como forma de expresar nuestra creatividad, tan válidas como el dibujo, la escritura, un regate de Mágico González o cualquier otro arte.
Y los profesores vieron que aquello era bueno. Los colegios que podían permitírselo (privados la mayoría) comenzaron a adquirir ordenadores personales y a impartir cursos en horario extraescolar y posteriormente como asignatura opcional en bachillerato. Ya existían por aquel entonces los primeros PCs con MS-DOS que seguía manteniendo la misma cara inerte de aquellos ya obsoletos ordenadores con su cursor parpadeante. No era extraño que en estos colegios pioneros se enseñara LOGO y BASIC. Su valor didáctico era indudable: resolver problemas haciendo uso de una herramienta con tantas posibilidades como una navaja suiza. Estos lenguajes tan básicos exigían al que los programaba pensar de una manera diferente, debiendo conocer qué era capaz de hacer la máquina y qué no. Te obligaba a estructurar la mente de una forma diferente, más creativa, más procedimentada. Y el premio final era suficiente como para que la motivación por resolver problemas no fuera un problema.
Tal fue el impacto de la programación en aquella generación que allá por el año 1997 se creó la I Olimpiada Informática Española [4], la edición española de su homólogo internacional que llevaba celebrándose desde 1989. El objetivo de esta olimpiada era fomentar la programación informática en los alumnos y profesores de institutos así como en las administraciones responsables de la educación [5]. En esta Olimpiada los alumnos debían resolver diversos problemas bien en lenguaje C, bien en Pascal. La mayoría de los institutos enseñaban BASIC con lo que aquellos alumnos que se manejaban con alguno de estos lenguajes era porque habían tomado un libro de la biblioteca municipal o que se había comprado un libro de programación en El Corte Inglés. A pesar de este requisito se consiguieron más de 400 participantes en toda España. Yo era uno de esos 400 y participé dos años seguidos, consiguiendo clasificarme para la fase final en Madrid a mi segundo intento. Aquella aventura no fue más allá de un 10º puesto en la final, pero todo aquello indudablemente marcó mi futuro y el de mucho de los allí presentes. La mayoría comenzamos los estudios de Ingeniería en Informática con la esperanza de seguir encontrando respuestas a nuestras inquietudes y convertir aquella afición en una profesión.
En los dos primeros años, cursas hasta 4 asignaturas de programación, salpicadas por otras 20 que en ese momento te parecen que no tienen nada que ver con la informática (a día de hoy 15 de esas 20 siguen en esa lista). Para mí fue sencillo: te enseñan lenguajes que ya conoces, aprendes algún algoritmo para resolver aquel problema que en su momento te llevó días y te das cuenta que los problemas que se planteaban en aquella Olimpiada eran tan difíciles o más que los que se plantean en la carrera. Para la mayoría de los compañeros el salto era brutal. Programar exige una forma de pensar diferente. No es sólo cuestión de aprender un lenguaje, que es pura sintáxis, sino que debes conocer sus implicaciones, cómo funciona una máquina, y debes comprender que tu forma de pensar y resolver problemas no es la forma en la que una máquina los resuelve. Debes desarrollar una habilidad para comunicarte con las máquinas en su lenguaje. Y ese lenguaje no es sólo C, Pascal o BASIC. Ese lenguaje requiere interpretar tu problema en base a problemas más pequeños, apoyarte en conocimientos matemáticos y comprender que un ordenador es la máquina más tonta del mundo que sólo es capaz de mover información de un lado para otro y hacer pequeñas operaciones aritméticas y lógicas. Y eso no se aprende viendo cómo un profesor habla, viendo cómo resuelve problemas en una pizarra o en su canal de Youtube. A hablar un idioma se aprende hablando, y a programar se aprende programando.
A día de hoy la mayoría de los alumnos que aprenden informática lo hacen sobre un papel. Y no sólo me refiero a la ingeniería informática sino también al resto de ingenierías que imparten programación. Para comprobar si un alumno sabe programar basta con vomitar líneas de código en varios folios y prueba superada (o no). ¿Acaso para demostrar que sabemos conducir nos basta con un examen teórico? ¿Acaso para aprender un idioma nos basta con demostrar que somos capaces de escribir? Y si encima esas pruebas utilizan la técnica de "rellena el hueco" para facilitar su corrección, el atentado contra el aprendizaje es aún mayor. Con este enfoque encontramos a multitud de alumnos que estudia con papeles y que va a tutorías a preguntar a un profesor si su programa funciona, teniendo el compilador al lado. Este tipo de enseñanza no persigue el desarrollo de mentes creativas, la resolución de problemas complejos, ni por supuesto se demuestra efectiva para discernir entre el alumno que es capaz y el que no. Con estas metodologías estamos creando dos universos en la programación: el que existe en el papel (que lo aguanta todo) y el que existe en el ordenador y sólo uno de ellos es real.
El número de alumnos no es excusa para justificar esta metodología. Las propias Olimpiadas y Google Code Jam [6] obtienen los resultados de forma inmediata con sistemas automáticos de puntuación; se organizan cursos masivos online con correcciones masivas. Con el papel lo único que logramos es que el alumno desconozca una parte importante de su práctica profesional, que adquiera un desdén por la programación y trasladamos el problema a años subsiguientes y por qué no, a las propias empresas que contratan a estos graduados. Es más, estoy convencido de que a día de hoy el 90% de los alumnos recién titulados en ingeniería de España son incapaces de resolver cualquier problema de una Olimpiada informática en un tiempo razonable.
Hoy retomo el blog con dos objetivos claros: Despertar el interés por la programacion y enseñar a pensar como un programador.
El año pasado no pude enviar a candidatos adecuados para 6 puestos de trabajo en diferentes empresas que buscaban a programadores excepcionales, con salarios muy por encima de mercado. Esto puede deberse a dos razones: mi incapacidad de encontrar talento existente en la Escuela y la incapacidad de la propia Escuela para crear talento. En cualesquiera de los dos casos, voy a intentar aportar mi granito de arena. Hoy retomo el blog con dos objetivos claros: Despertar el interés por la programacion y enseñar a pensar como un programador a quien se deje. Si no sabes programar, espero que te sirva para lanzarte a la piscina. Si te enseñaron mal, olvídate de todo. Si sabes programar algo, intentaré enseñarte amar la programación. Si ya sabes programar, colabora 😉
Para empezar a profundizar en estos objetivos en los próximos días publicaré distintos retos para cualquiera que se atreva a evaluar sus capacidades de programación, pensaré en voz alta y trataré de enseñar el apasionante mundo de la programación desde una perspectiva diferente. Espero conseguir "que usted lo disfrute".
PD: En algún momento organizaré alguna actividad presencial de la que informaré vía Twitter. Seguiremos informando.
[1] Si tuviste un manual AMSTRAD y eres un nostálgico échales un vistazo aquí.
[2] Aunque no lo creas LOGO sigue vivo. Échale un vistazo a su historia y evolución.
[3] Hay quien todavía usa BASIC en una de sus múltiples reencarnaciones.
[4] La Olimpiada Informática Española sigue existiendo a día de hoy
[5] Hoy mismo se anuncia que la comunidad de Madrid comenzará a impartir Programación este mismo curso en 15 institutos, ampliándolos a todos el curso 2015-16.
[6] Google Code Jam
Pablo Trinidad 4 septiembre, 2014
Posted In: Tecnologería