Scott y Mark y la enseñanza de la programación

Scott Hanselmann es un tipo majísimo, con un podcast muy recomendable (de los últimos episodios, me quedo con el del Interim Computer Museum o el de Anne-Laure Le Cunff, pero el nivel medio es alto). Scott es, además, el vicepresidente de «developer community» de una pequeña compañía llamada Microsoft (cosa que le permitió abrir el código del BASIC de Microsoft para el 6502, que enseñó a programar a mucha gente en el Apple II, y los Commodore PET, VIC 20 y Commodore 64, con el que aprendí yo, y que con eso yo ya le estaría agradecido eternamente).

En Microsoft Scott conoce a Mark Russinovich, cuyo LinkedIn dice que es «CTO, Deputy CISO and Technical Fellow, Microsoft Azure«, pero que igual os suena más (a los que tengáis una edad, os guste la informática y uséis Windows) de SysInternals. Y Scott y Mark tienen otro podcast, muy apañado también, Scott and Mark Learn To…, que en los últimos episodios ha hablado bastante de un producto que vende intensamente Microsoft, la programación con IA generativa. Y de todos esos episodios, me quedo con este fragmento y lo que dice Russinovich hacia el final. Os dejo el vídeo en el momento indicado, acompañado de la transcripción en inglés, primero, y la traducción al español, después.

Solo comentar antes, que…

  • ….hablan de informática, pero aplica a muchos otros campos, si es que no a todos,
  • que no es la opinión más original del mundo, pero está bien que lo diga quien lo dice,
  • que lo de que las universidades no tienen un buen modelo es rigurosamente cierto, pero a ver quién es el guapo o guapa al que se le ocurre una solución que no sea brutalmente intrusiva o imposiblemente cara,
  • y que destaco un fragmento de la conversación, pero que también está muy bien (traducido: alineado con lo que pienso yo, que es un tema que también me toca de relativamente cerca) sobre las empresas y lo que buscan / deben buscar al contratar gente joven, y que en general todo el episodio, y todo el podcast, son bastante recomendables.

Y eso, os dejo con el vídeo, la transcripción y la traducción.

Otro día, más.

Transcripción

(A partir de la transcripción de YouTube, corregida y editada ligeramente por mí para hacerla algo más legible (espero). Las negritas son mías.)

—So as we end… we’re at an inflection point. What should university students that are studying CS right now, sophomores, juniors, seniors, in CS, be thinking about as we are in that point?

— I have a friend that’s got a student in computer science that’s a junior and he said he was talking to them and said asking them, do you use AI and he says, like, yeah a lot of my fellow students are using AI. I don’t use AI, because I want to learn, the hard way.

— I think both is the right answer, though, I feel.

— I think both, but here’s what I’ll tell you right now. I think that universities don’t have a good model, you know, consistent.

— They’re behind. Academia might, but research level academia.

— But not for teaching undergrads. And, actually, I think what is coming into view for me is that you need classes where using AI for certain projects or certain classes is considered cheating. Not to say that you don’t have classes and projects in some classes where the student is told to use AI, but you need to have the main basis for the education on computer science and programming to be AI-less, because that’s the only way the student’s going to learn.

— I’ve been saying «drive stick shift». And I get told that I’m being gatekeepy when I say that.

— I don’t think you are, because there is a great study of three months ago from MIT where they took, um, not students, but they took people in careers, already in the workforce, and they divided them into three cohorts and had them write essays from the SAT, and they had one cohort just do it with their own closed book, just write the essay. They had another cohort that got to use Google, and they had another cohort that got to use ChatGPT, and they looked at their EEGs, and they quizzed them afterwards, right after, and then like a week later, and the results were exactly what you would expect. The people that wrote it could answer questions about what they wrote, even a week later, and their EEGs showed that they were burning a lot of wattage. The people that were using ChatGPT, an hour after they wrote the essay, they couldn’t remember what they’d written.

— That’s the thing. It’s just not even there. That makes me really sad. I very much enjoy using AI to brainstorm, to plan, but then I want to do the writing part. To vibe your way through life has me concerned.

— You lose the critical thinking. And they call this critical thinking deficit, that is what it’s creating…

— Which we already have from social media.

— Yeah, we already have. And if you’re talking about the early and career programmers that we’ve been talking about wanting to hire at a company, you want them to know what a race condition is. You don’t want them to have vibed it and AI is like, «Yeah, a race condition. AI will fix that.» Because at some point, as we’ve said, I think with the limitations of AI and software programming, at least for the foreseeable future somebody needs to know.

Traducción

(Con ChatGPT y revisado por mí. Las negritas siguen siendo mías.)

—Así que, para cerrar… estamos en un punto de inflexión. ¿Qué deberían estar pensando los estudiantes universitarios que estudian informática ahora mismo?

—Tengo un amigo que tiene un hijo que estudia informática, está en tercer año, y me dijo que le preguntó: “¿Usas IA?” Y él respondió: “Sí, muchos de mis compañeros la usan. Yo no, porque quiero aprender por el camino difícil.”

—Creo que ambas cosas son la respuesta correcta, sinceramente.

—Sí, ambas, pero te diré algo: creo que las universidades no tienen un modelo adecuado, coherente.

—Van por detrás. Quizás la academia investigadora sí, pero…

—Pero no en la enseñanza de grado. De hecho, creo que lo que se está haciendo evidente es que necesitamos clases en las que usar IA para ciertos proyectos o asignaturas se considere hacer trampa. No porque no debas tener otras clases o proyectos donde se indique explícitamente al estudiante que use IA, sino porque la base principal de la formación en informática y programación debe ser sin IA, porque es la única forma en que el estudiante realmente aprenderá.

—Yo suelo decir “hay que aprender a conducir con cambio manual”. Y me dicen que eso es una postura elitista1.

—No creo que lo sea, porque hay un estudio excelente de hace tres meses del MIT donde tomaron… no estudiantes, sino profesionales ya en activo, y los dividieron en tres grupos para que escribieran ensayos del tipo de la selectividad. A un grupo le dijeron que lo hiciera sin ayuda, a otro que podía usar Google, y a otro que podía usar ChatGPT. Luego midieron sus electroencefalogramas y los evaluaron justo después y una semana más tarde. Los resultados fueron exactamente los que esperarías: las personas que escribieron el ensayo por sí mismas eran capaces de responder preguntas sobre lo que habían escrito incluso una semana después, y sus elecroencefalogramas mostraban mucha actividad cerebral. En cambio, quienes usaron ChatGPT, una hora después ya no recordaban lo que habían escrito.

—Eso es. Es que ni siquiera está ahí. Y eso me pone muy triste. Me gusta mucho usar la IA para generar ideas, para planificar, pero luego quiero escribir yo. Esa actitud de “vibear”2 la vida me preocupa.

—Se pierde el pensamiento crítico. Y eso está generando un déficit de pensamiento crítico…

—Que ya teníamos por culpa de las redes sociales.

—Sí, ya lo teníamos. Y si hablamos de los programadores jóvenes o principiantes que queremos contratar en una empresa, quieres que sepan lo que es una condición de carrera (race condition). No quieres que lo hayan “vibeado” y que la IA les diga: “Sí, una condición de carrera, la IA lo arreglará.” Porque, como ya hemos dicho, con las limitaciones de la IA en la programación de software, al menos en el futuro cercano, alguien tiene que saberlo.

  1. «Gatekeepy» en el original. En este caso «to gatekeep» sería poner barreras de acceso innecesarias, o «pedir carnets». ↩︎
  2. «Vibear» es mi traducción de «to vibe code«, crear programas a base de prompts a IAs generativas, sin escribir una línea de código. ↩︎

Wonderblocks, dibujos animados y programación

I can thank CBBC for getting my kids really into letters (Alphablocks) and numbers (Numberblocks, gosh they LOVE Numberblocks), and colours (hi Colourblocks) and now there are also Wonderblocks (coding!!)Enjoy 20+ mins of Wonderblocks teaching loops with the character "Again": youtu.be/EMLU-NoPoqI

Sara Joy ☠️ (@sjoy.lol) 2025-03-22T14:02:42.705Z

Me entero en Bluesky (¿os acordáis de aquella cosa llamada Twitter?) de la existencia de Wonderblocks, un programa (estrenado a principios de año) de la CBBC (un canal infantil de la BBC) dedicado a explicar a su público (niñas y niños menores de seis años) las maravillas de la programación.

En el «tuit» de arriba tenéis el episodio dedicado a los bucles (está, como mínimo, curioso :-)), y también tenéis la web oficial del programa y el correspondiente canal de YouTube.

Me gustaría pensar que las teles públicas de por aquí ya están hablando con la BBC para adquirir los derechos y traducir el programa (nétese el uso del condicional).

(Y sí, como dice el «tuit», WonderBlocks es heredero de AlphaBlocks, NumberBlocks y ColourBlocks, programas dedicados a las letras, los números y los colores (sorprendente, ¿eh?) y que, según JustWatch, en España solo están disponibles, diría que sin traducir, en un canal de pago dentro de la oferta de streaming de Amazon. (Vuélvase al comentario sobre el uso del condicional del párrafo anterior.))

PS 2025.04.01 Editado para eliminar la relación entre Wonderblocks y MicroBlocks que había comentado en la entrada original, porque todo parece indicar que he alucinado. ¿Seré un modelo grande de lenguaje? 🤔

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…