Haciendo la programación sencilla y divertida

Hace unos días me encontré con este artículo en la sección de hacking de ReadWriteWeb en el cuál entrevistan a Max Ogden. La entrevista es buena, pero me gustaría destacar una de las preguntas  donde responde como empezó a programar creando mapas de StarCraft que tenía eventos asíncronos como parte del creador de mapas. Después de eso, comenta, programar es como StarCraft sin Aliens.

How did you get started with Web development, and programming in general?

In high school I started taking classes, I actually got hooked by playing Starcraft back in 1999. The custom level editor has elements of event-driven asynchronous programming and I started geeking out on custom Starcraft maps. And then realized that programming is just Starcraft without the space aliens.

Esto me genera 2 preguntas importantes: cuál será la manera correcta de ensenarle a un niño a programar y, qué tan importante es la idea de eventos asíncronos (event-driven programing) en la programación.

El primer lenguaje de programación que utilicé fue logo writer, cuando tenía 6 o 7 años, no me preocupaba mucho la idea de programación, ciclos y funciones, solamente me interesaba hacer que la tortuguita pintara cosas y crear dibujos en la pantalla, me ayudó a generar una idea analítica desde una edad temprana. Creo que lograr introducir estos conceptos a edad temprana y poder hacerlo sin que parezca forzado es la opción correcta. Si a esa edad un niño tiene que entender el concepto de clases y sintaxis será complicado retener su atención.

La importancia de event-driven programing implica por un lado una gran simpleza que puede ser explicada con ejemplos del mundo real, y por el otro, como explica Douglas Crockford en esta plática, tiene un gran poder. En otro post, Nicholas C. Zakas explica la importancia de Loose coupling en Javascript para hacer arquitecturas escalables.

Al entender estos conceptos hacer programación en Javascript es relativamente fácil. Me gustaría poder explicarle esto un niño algún día y contribuir en alguna librería para crear juegos con puro drag&drop.

Espero que la entrevista y los materiales complementarios les parezcan interesantes y los pongan a pensar un rato sobre como hacer la programación algo divertido para niños y adultos.