Aprender a programar es la forma más rápida de aprender a pensar
Estudiar filosofía también ayuda, pero lo que sigue es una historia de malentendidos (y una respuesta a todos ellos)
Recuerdo la primera vez que sugerí que la revolución digital era tan insondable, que íbamos a tener que atrevernos a pensar hasta en lo impensable. Por ejemplo, en que los chicos aprendieran a leer, escribir y programar al mismo tiempo.
Han pasado 15 o 20 años. Lo más suave que me dijeron era que estaba rematadamente loco y que buscara urgente un psiquiatra. También me insultaron con tal abundancia de coloración que hasta aprendí una o dos palabras nuevas. Fue más o menos en la misma época en la que un número de personas encumbradas me soltaron la frase "Internet es sólo una moda pasajera”. Quedé tan pasmado que sólo me limité a observar:
–Si no fuera pasajera, no sería moda.
Lo extraño era que ni siquiera fui el primero en asegurar algo así. Una década antes, el gran Antonio Battro ya había dado los primeros pasos en esa dirección. Así que, era claro, había que esperar. Linux en ese tiempo era calificado de comunismo, y Google, Facebook, Twitter y WhatsApp estaban todavía entre las sorpresas que nos habría de deparar el futuro.
Hoy la "moda pasajera" se convirtió en ese conjunto de tecnologías de las que dependen prácticamente todas las actividades del mundo industrializado.
Linux está en unos 2000 millones de smartphones y motoriza la informática de colosos como Amazon y la Bolsa de Londres. Muy comunista todo.
Podría seguir, pero, para resumir, todos esos debates que en los ‘90 parecían razonables hoy huelen a naftalina. Excepto uno, el de si tenemos que enseñarles a programar a los chicos en la primaria (o no).
Débora Slotnisky publicó el miércoles una nota al respecto, hice un comentario y mi cuenta de Twitter explotó. Me asombró, sin embargo, que esta vez –15, 20 años después– había cierto consenso acerca de la conveniencia de darles a los chicos los rudimentos de programación lo más temprano posible.
Pero también hubo descalificación y hasta algún vituperio de parte de los que disienten con esta idea. Voy a contarles un secreto. Cuando hacés un pronóstico tecnológico y te descalifican, lo más probable es que estés en lo cierto. Si además te insultan, es porque tenés razón en un 100 por ciento.
Ahora, dejando de lado los gajes del oficio, el debate –raro como pueda sonar– continúa. Incluso Steve Wozniak, uno de los tipos que más respeto en este ambiente, me dijo en 2015 que en su opinión no había que enseñar programación ni siquiera en los colegios secundarios, salvo que los alumnos fueran a especializarse en cuestiones técnicas. La diferencia entre Wozniak y los deslenguados es que él sostuvo su posición con argumentos.
No obstante, disiento en esto con Wozniak, y me permito hacerlo porque el criterio de autoridad es una falacia lógica. Es decir, el hecho de que sea Wozniak no le da automáticamente la razón. Ejemplo: en julio de 2001, en una reunión de sumario, alguien dijo que Stephen Hawking había pronosticado que el mail estaba a punto de desaparecer. Me preguntaron mi opinión. Dije que eso no iba a ocurrir. Me refutaron con la siguiente frase: “Pero lo dice Stephen Hawing.” Eso es apelar al criterio de autoridad. Y es una falacia porque nada es cierto porque lo diga alguien, sino porque se prueba cierto en la práctica o en un experimento.
Nota de color: Gmail nació en 2004. Hoy tiene 1500 millones de usuarios.
La locomotora mental
Los motivos por los que algunos sostenemos que es necesario enseñarles a programar a los chicos desde la primaria son, por regla general, malinterpretados. Es lógico. Estos malentendidos están en la esencia de la revolución digital. Si fuera fácil comprender por qué hemos insistido tanto con esta idea entonces no estaríamos hablando de computadoras. Estaríamos hablando de máquinas de coser o de locomotoras. No lo digo para desmerecer ni a unas ni a otras. Pero mientras máquinas de coser y locomotoras potencian nuestras capacidades manuales o musculares, las computadoras nos abastecen de poder de cómputo, potencian nuestras destrezas mentales.
Por eso, porque el malentendido ya lleva demasiado tiempo, les propongo desarmar qué es lo que queremos significar cuando hablamos de enseñarles a los chicos a programar desde la primaria.
The Matrix en tu bolsillo
Podemos partir de un axioma: estas tecnologías no tienden a estancarse. Es muy probable que cuando nuestros alumnos de primaria lleguen a la adultez, los lenguajes de programación en boga ya no sean los mismos que usamos hoy. (Aunque, como saben los veteranos, mucho del código que se escribe actualmente está emparentado en mayor o menor medida con C, que nació hace casi 50 años.)
No obstante, en esa vorágine que a veces nos cuesta seguir, hay algo que se ha mantenido constante. Esto es, el significado de la palabra programar. Es ahí, en la profusa incrustación de este término, donde se aloja, en mi opinión, toda la polémica.
No, no pretendemos que chicos de 6 años comprendan herencia, delegación y polimorfismo en un lenguaje de programación orientado a objetos. Y no es que no puedan. Les asombraría el grado de abstracción de que es capaz un cerebro de sólo 6 años, si se lo sabe guiar. No pretendemos eso porque es innecesario. En un curso de manejo no te enseñan que el octanaje de un combustible indica su propensión a detonar bajo presión. Te enseñan para qué sirven los pedales y a meter cambios.
Es exactamente lo mismo. Cuando hablamos de enseñarles a programar queremos transmitirles un concepto que es axial: que nosotros, los humanos, estamos al mando, que la máquina no hace nada por las suyas, que obedece ciegamente lo que diga el código.
Y es axial porque una parte sustancial de la humanidad está usando dispositivos programados por un puñado de personas y compañías. Como en The Matrix, los usan sin darse cuenta de que todo en la pantalla es una ilusión creada por el código. Es un mundo demasiado diferente del de la Revolución Industrial, cuyas prácticas dieron forma a la escuela tal como la conocemos. No entraré en otras muchas reformas que, en mi opinión, debe hacerse en la educación, pero, como mínimo, los chicos deberían crecer sabiendo que estas nuevas maquinarias se pueden programar. Que esa es la gran diferencia con todas las herramientas creadas hasta ahora por la humanidad.
Usuarios o ciudadanos
¿Proponemos enseñarles a escribir código antes de que puedan leer y escribir? Esa pregunta se contesta sola (es decir, o es una tontería o es capciosa), pero de todos modos la responderé. No, no podemos enseñarle a un chico que no sabe leer y escribir a escribir código, porque el código está hecho de palabras reservadas, signos, símbolos y números. Es obvio que no podemos enseñarles a escribir en Javascript o en Python. Pero existen métodos (gráficos, por ejemplo) para que el chico asista a ese milagro de que la máquina haga lo que él quiere que haga (y no al revés). Los robots educativos son otro gran recurso, sobre todo ahora, que los autómatas están tocando nuestra puerta.
¿O sea, quieren enseñar a programar sin que los chicos aprendan a escribir código? No, tampoco. Esta es la típica pregunta del que nunca escribió código. Primero, el código es a la larga lo menos arduo. Un programador es como un músico, no te va a decir “Ah, no, yo toco el piano, pero de guitarra no entiendo nada”. Es al revés. Cuantos más instrumentos sabés tocar, más fácil te resulta aprender uno nuevo. Lo mismo cuenta para el código. Además, no hay un lenguaje. Hay docenas, y uno elige el más adecuado para cada escenario.
No, el código no es la meta. Porque lo absolutamente genial de programar es que impone una forma de pensar muy racional, muy ordenada, muy metódica. Esa disciplina mental es indispensable para escribir buen código, claro, pero lo realmente clave es todo lo que viene antes de eso. Es decir, plantear claramente el problema, desarmarlo en piezas más pequeñas y fáciles de manejar y articularlas para que ese organismo al que llamamos software funcione correctamente.
Dicho más fácil: programar enseña lo mismo que el Discurso del Método de René Descartes. Enseña a pensar.
O sea, no, no queremos formar programadores. Si luego quieren convertirse en desarrolladores profesionales, serán bienvenidos. Le hacen falta a la nación. Pero sobre todo queremos formar seres pensantes, con razonamientos metódicos y válidos, sólidos, cuyos resultados puedan reproducirse fielmente. Podría lograrse lo mismo enseñando filosofía. Me temo que para un chico de entre 6 y 10 años va a ser más entretenida la programación.
No sabemos cómo serán los lenguajes del futuro. No es improbable que las anfractuosidades de los actuales se suavicen. No es imposible que gran parte del trabajo sucio lo hagan las máquinas. Pero formar personas capaces de pensar rigurosamente no parece ser una mala idea. Y el que tengan claro el concepto de que las máquinas hacen lo que les dice una persona establece la diferencia entre el usuario y el ciudadano.
Ah, ¡entonces no quieren enseñarles a escribir código! Sí, pero un poco más adelante. Y vayan preparándose, porque programar es como 10.000 veces más adictivo que jugar con la Play. ¿O no, amigos desarrolladores? ¿O nunca les pasó de no poder parar, de volver a depurar antes de irse a dormir, de soñar con código? El Tetris es un chiste al lado de programar. Este costado de desafío lúdico es otra razón para impartirles este conocimiento cuanto antes. Porque les va a encantar.
En los albores de la revolución digital
¿Pero no es muy temprano incorporar estos conceptos en la primaria? Una anécdota personal ayudará en este caso. No es la mejor forma de razonar, porque se trata de un caso particular, pero al menos echará luz sobre un punto que es crucial (y que, personalmente, me indigna). Los chicos son chicos, no tontos. Son más bajitos, tienen menos fuerza física, sus cerebros están todavía en desarrollo, pero pueden comprender perfectamente qué es programar una máquina. Lo sé por experiencia. Aquí va la anécdota.
En 1967, en los albores de la revolución digital, mi padre trajo una computadora –inmensa y primitiva– a la Argentina. Servía como interfaz entre los operadores y las linotipos. Ducho en ingenierías, pasó por alto el hecho de en español hay reglas de silabeo. En inglés, no. Fue una conmoción. La máquina, que había costado una fortuna, no servía para nada porque cortaba las palabras en cualquier lugar. Yo tenía 6 años y estaba aprendiendo a leer y escribir. Y mi viejo se puso a estudiar el problema (el silabeo en español) y escribió el programa para resolverlo. Le llevó mucho tiempo y recuerdo que en más de una ocasión yo practicaba los palotes mientras él escribía a lápiz interminables listas de instrucciones consultando un gigantesco manual de tapas azules. Obviamente, me intrigaba eso y le preguntaba. Me fue explicando. No, no aprendí Ensamblador, sino lo que mi padre estaba haciendo: enseñarle una nueva destreza a una máquina. Era algo loco para la época. Pero doy fe que hasta un chico lo podía entender en 1967. Mucho más podrán hoy.
Esta experiencia no me causó ningún daño cerebral. A los 15 escribí mis primeros programas. Cuarenta años después, esos aprendizajes tempranos me permiten sentirme cómodo en un mundo que, en mi niñez habría sonado 100% a ciencia ficción. Lo que habría sido muy anormal entonces es para mí muy normal hoy.
Más aún, ya no es ciencia ficción. Lo acepten o no los adultos, estamos en un mundo de máquinas mentales, robots, inteligencia artificial y redes cuya escala desafía la imaginación. Hemos alcanzado un punto en el que prácticamente todo en la civilización es controlado por el código. En un contexto así, entender qué es programar equivale a saber leer y escribir. No importa si tu hijo después se convierte en Shakespeare o en Borges. Pero estoy bastante seguro de que no querés que salga de la escuela primaria siendo un completo analfabeto.