En todo el mundo hay niños y niñas que están aprendiendo a programar, y de hecho ahora en diciembre se celebra uno de los principales eventos en todo el mundo para promover esta materia. Hoy queremos adentrarnos aún más, y como complemento a nuestros consejos y recomendaciones para aprender programación a niños y a adultos, vamos a hablar de cómo iniciar a un niño/a en la programación... desde cero.
Las herramientas y el software se han modernizado a esta nueva etapa de la programación, y con todo ello la metodología y las propuestas también deberán adaptarse a la enseñanza de esta nueva materia. ¿Qué programas o plataformas utilizar? ¿Cómo hacerlo? Hoy te explicamos cómo iniciar a un niño en la programación.
Un vistazo atrás
No hace muchos años que el campo de la programación era exclusivo del mundo más profesional. Los informáticos (y antes de existir la informática como tal, los matemáticos y los físicos) se encargaban de tratar con los ordenadores, de crear los programas a los que luego otros trabajadores sacaban partido.
Los tiempos han cambiado, y la sociedad se ha ido adaptando a ellos. Los primeros usos de la programación como herramienta educativa se remontan a los años 60 y 70 con LOGO, un lenguaje que tardó en llegar a España pero que se caracterizó por las posibilidades de crear pequeños dibujos y recorridos a través de sencillas órdenes, instrucciones de programación, sobre una tortuga.
La programación como herramienta educativa en la actualidad parte de LOGO, un lenguaje creado en los 60 y 70.Aquel LOGO fue la semilla de lo que más tarde, ya en los años 90, germinó en forma de múltiples herramientas destinadas a la educación y formación de la programación de niños y jóvenes, ya sean en forma de lenguajes específicos o de juguetes, como LEGO Mindstorms, que fue un desarrollo de LEGO junto con el MIT. Empezó a entreverse la importancia de la programación como una herramienta para divertirse y también para aprender ciertos conceptos relacionados con el pensamiento computacional.
De LEGO ya sabemos que continúan con gran éxito su saga Mindstorms, con la tercera generación llamada EV3 - y lanzada en 2013 - y las First LEGO League celebrándose por todo el mundo; por su parte, a finales de los 90 empezaron a desarrollarse una serie de lenguajes de programación basados en bloques, tremendamente intuitivos y fáciles tanto de utilizar como de entender, y que por su naturaleza han permitido que cualquier chaval pueda empezar a aprender a programar.
El principal valuarte de estos lenguajes basados en bloques es Scratch, que como decíamos empezó a ser desarrollado en el Lifelong Kindergarten del MIT en el año 1997, pero que no fue hasta el año 2003 cuando se lanzó en su primera versión pública. Tras él, y con la llegada tanto de Internet como de las nuevas categorías de dispositivos (smartphones, tablets) a los hogares, muchas empresas y entidades han aprovechado este nuevo campo del conocimiento para proponer sus propios lenguajes, tutoriales, plataformas o incluso juegos para aprender a programar.
Lo que la programación aporta a un niño/a
El recorrido en el pasado está claro. Primero los pequeños atisbos de que la programación podía ser algo más que una herramienta profesional, y con el paso de los años (¡muchos años!) al final han surgido múltiples iniciativas que afianzan la materia en la educación, tanto dentro de los currículos oficiales como en cursos, talleres y otras actividades externas.
¿Pero por qué aprender a programar? Todos coincidimos en que el pensamiento computacional es el concepto clave de esta materia. La forma de pensar, de aprender a solucionar problemas y crear algoritmos y soluciones, tanto particulares como - sobre todo - generales a esos problemas. Los informáticos tenemos claro cuál es este concepto que nos permite, por ejemplo, tener un problema de cierta envergadura frente a nosotros, y saber dividirlo y resolver cada una de las partes, generalizando esta solución.
Sin embargo, a mi siempre me gusta decir que no es programar por programar; al final la programación es una excusa para mucho más. En el Club de Jóvenes Programadores de la Universidad de Valladolid, taller en el que llevo participando desde 2011, utilizamos la programación como una herramienta para mucho más.
Esto es en parte debido a nuestra propuesta metodológica, que muchos tildarán de peculiar. Sin pupitres individuales, con grandes espacios y mesas con las que fomentar el trabajo cooperativo, por los proyectos planteados que proponemos y que buscan la creatividad y las soluciones diferentes en cada chaval.
La programación es una herramienta que puede fomentar la creatividad a unos niveles extraordinarios, siempre que se sepa cómo hacerlo. No se trata sólo de resolver problemas, si no de utilizar los recursos y las herramientas disponibles para realizar las creaciones que tengamos en la mente. No se trata sólo de saber cómo se programa un Pong, si no de que una vez lo hayas programado sepas ir un paso más allá. Sepas añadir marcadores a cada jugador, tengas la intención de añadir un ranking con los mejores jugadores, o de dar la posibilidad de elegir el color del juego.
Porque la programación no debería ser sólo escribir código, la programación nos permite mucho más... siempre que sepamos cómo llegar a ello. El pensamiento computacional es el rasgo común en el que todos los que estamos involucrados en la docencia de esta materia coincidimos, pero hay mucho más. La creatividad - que precisamente es una de las carencias del sistema actual -, la sociabilidad en aulas, cursos o talleres grupales, o incluso las presentaciones en público, pueden ser algunas de las características que mejoremos gracias a la programación. Que, insisto, no debería ser sólo programar por programar.
Olvídate de enseñar programación como se enseña a un profesional. No es enseñar programación para aprender a programar, es mucho más. Concepto clave, pensamiento computacional -> aprender a resolver grandes problemas, dividirlos en partes y afrontarlas por separado para que en su conjunto den respuesta al problema inicialmente planteado. Juega con varios conceptos como abstracción (imaginación, concentración) y automatización (proponer soluciones que no sólo sean particulares para un problema concreto, si no generales para cualquier problema relacionado).
Fomenta la creatividad si el método es correcto (sobre esto hablaremos más adelante). No se trata sólo de resolver problemas, si no de utilizar los recursos y las herramientas disponibles para realizar las creaciones que queramos; la imaginación debe ser nuestro límite.
Hablamos de aprender a programar de forma individual, pero en talleres o cursos en grupo también puede mejorar la sociabilidad, las relaciones con los demás, presentaciones en público, étc.
Cómo iniciar a un niño/a en la programación
Cuando nos planteamos enseñar programación a un niño es necesario comentar que no vamos a enseñar ni las herramientas profesionales, ni con los métodos para los adultos. Son niños, y por lo tanto sus conocimientos y capacidades en muchos ámbitos son mucho más limitados.
Es por ello por lo que acudiremos a herramientas específicamente creadas para jóvenes, incluyendo niños desde los 5 o 6 años, y hasta adolescentes o incluso post-adolescentes ya universitarios. Un adulto también puede hacer uso de esta guía, si bien es posible que encuentre las primeras fases demasiado sencillas (¡pero ojo! Que no las deje de lado, lo ayudarán a "amueblar" la cabeza).
Las nociones básicas: Code.org
Para aprender los conocimientos básicos de la programación, la forma en la que están estructurados los programas y cómo funcionan, es necesario seguir un pequeño guión que puedan explicar los fundamentos más sencillos. Algo con lo que acompañarle de la manita durante su primera incursión en el campo.
Para mi la mejor plataforma para introducirse en la programación es Code.org, una organización sin ánimo de lucro con la que han colaborado algunas de las principales estrellas del panorama tecnológico en Estados Unidos, y que cuenta con el apoyo de las principales empresas del sector. Ofrece múltiples tutoriales y cursos online completamente gratuitos, entre los que es necesario destacar dos de ellos:
- Hora del Código, un tutorial pensado para tener una duración de una hora en la que ofrece los fundamentos básicos de la programación por bloques. Precisamente la semana del 7 al 13 de diciembre de 2015 se celebra su gran evento anual por todo el mundo.
- Curso de 20 horas, que sigue la filosofía de la 'Hora del Código' pero proponiendo conocimientos más amplios. Puede ser una interesante propuesta para continuar avanzando en la materia y está dividido en cuatro subcursos, disponibles para diferentes franjas de edad y con una versión acelerada algo más corta.
Pero Code.org no sólo son estos dos tutoriales, es mucho más. Cuentan con múltiples tutoriales temáticos y basados en los universos de Star Wars, Minecraft o Frozen, muy atractivos para los chavales y con los que igualmente se pueden obtener las nociones básicas de la programación. Lo malo es que están algo limitados y al final son algo lineales, sin dejar lado a la imaginación y la creatividad. Para ello es necesario ir un paso más allá.
Scratch es ilimitado (casi)
Ese segundo paso es Scratch, un software casi infinita. Como dijimos anteriormente su desarrollo se acerca a los quince años de antigüedad, con lo que es una opción muy asentada en el mercado y con mucho recorrido.
El entorno es similar a la programación de de Code.org (de hecho, Code.org se basó en Scratch) pero con muchas más herramientas, funcionalidades y posibilidades a disposición del usuario. Un Code.org con esteroides, con grandes parecidos con los lenguajes más adultos y profesionales y capaz de atacar múltiples frentes:
- La programación como tal: creación de algoritmos para los movimientos de los objetos o de la interacción entre ellos, concepto de 'tiempo' en la ejecución de un programa.
- El apartado creativo: todo es personalizable, desde los objetos o personajes hasta el escenario.
- Incluso la parte social: la comunidad online de Scratch dispone de 12 millones de proyectos, y de todos ellos podremos ver su código para aprender y tomar ideas.
Scratch es completamente gratuito y puedes probarlo en tu navegador sin necesidad de registrarte (aunque es recomendable hacerlo para guardar tus proyectos 'en la nube'); si lo prefieres, también puedes descargarlo.
Decía antes que las posibilidades de Scratch son mucho más amplias que las de Code.org, que no deja de ser un tutorial guiado y cerrado. En Scratch es el usuario el que decide qué hacer, con lo que el límite lo pone tu imaginación y, en menor medida, tu técnica y de lo que seas capaz de hacer. De hecho las ideas - de ello hablaremos más adelante - son lo más difícil de sacar, mucho más difícil que aprender a programar. A continuación, algunos proyectos muy interesantes y que no requieren conocimientos avanzados para poder crearlos:
No sé qué día se me ocurrió buscar un gif de un dinosario tocando la guitarra, pero lo encontré.
Dibujando polígonos regulares en Scratch, y dándole un toque de color adicional. ¿Por qué no?
El objetivo inicial era crear el movimiento de las agujas del reloj y demás, pero fue mucho más interesante dibujar el entorno del propio reloj. No es fácil y hay que darle un poquito a la cabeza para sacarlo.
Éste es de un compañero y hay que reseñarlo. Aprovechando que se acercaba Halloween, un juego de The Walking Death para pasar un buen rato.
Esto es sólo una selección que de proyectos que hemos creado nosotros, y una fracción de lo que hay por ahí. Hay clones de Minecraft, Super Mario o cualquier cosa que te imagines. Evidentemente tienen su trabajo detrás y el primer día no podrás crear este tipo de proyectos directamente, pero son ideas que pueden funcionar. ¿Ideas?
Propón, crea. Luego, mejora
El principal escollo que nos hemos encontrado en el CJP@UVa a la hora de trabajar con Scratch es la falta de ideas y creaciones por parte de los chavales, quienes suelen limitarse a programar siempre el mismo tipo de cosas, con los mismos algoritmos y mecanismos. Es muy difícil sacarles de ahí, ir un paso más allá. En Scratch - y en general, en cualquier lenguaje de programación - eres tú el que manejas, gestionas y ordenas.
Para en cierto modo solucionar esta carencia se puede plantear un modelo de propuestas e incrementos. Lanzas una propuesta, la programas, y luego vas añadiendo incrementos según sea tu límite en la técnica, creando juegos con diferentes añadidos. Por ejemplo, los juegos Arcade de las máquinas de los 80 y 90 son perfectos para esta técnica.
Vamos a poner un ejemplo que nosotros llamamos tenis, y que se basa en el Pong original. Es muy fácil crear un juego así - nosotros lo tenemos como proyecto de iniciación para el primer día -, pero la idea no es sólo completarlo y terminar. Podemos añadir incrementos casi hasta el infinito:
- Haz que la velocidad de la pelota tenga aceleración, y que su movimiento no sea constante. Así aprenderemos funciones matemáticas que, según la edad, podemos aplicar también física u otras materias.
- ¿Por qué la pelota debe ser una pelota de tenis amarilla? Cambia su color, o haz que sean objetos diferentes (una pelota de baloncesto, la cara de un político corrupto, una chapa); incluso, también puedes hacer que la pelota vaya dejando rastro.
- El impacto 'básico' de la pelota con las barras de los jugadores es algo pobre. Puedes mejorarlo, por ejemplo asignando giros aleatorios en el momento de impacto.
- Si quieres completar el juego puedes crear tablas de puntuaciones y rankings (por ejemplo con un Top3 se pueden aprender estructuras de datos y algoritmos de ordenación, que hay muchos).
- Personaliza el juego con fotos, eligiendo colores de las barras, diferentes fondos, étc.
- ¿Y si con cada fondo la respuesta de la pelota es diferente? Por ejemplo el color de la cancha y su repercusión en la velocidad de la pelota.
- Añadamos un incremento más difícil haciendo que la pelota 'emule' un efecto de rebote sobre el suelo.
- Piensa lo que quieres hacer. Piensa cómo hacerlo. Hazlo.
Evidentemente es necesario tener mucha iniciativa, y en muchos casos el aprendizaje de los más pequeños tendrá que ser acompañado de apoyo y ayuda por parte de los mayores. Pero se puede, aunque es, insisto, lo más difícil.
Cuando ya domines los bloques, hay vida más allá
Los bloques son lo que son. Lenguajes de juguete con posibilidades infinitas, pero limitados en algunos aspectos. Si Scratch se te ha quedado corto puedes ir un paso más allá en la programación, orientándote hacia lenguajes más profesionales.
Por ejemplo, con la gamificación. CodeCombat es un juego para aprender a programar, en versión online y fácil y sencillo de seguir, que nos ayudará a afianzar la sintaxis de lenguajes como Python, JavaScript u otros. Una vez más, es un tutorial pero no es completo y, de hecho, la parte creativa se queda nuevamente fuera. Como él, más sobrios, también Codecademy tiene muchas propuestas y lenguajes que enseñar.
Es importante menciona que para llegar a este punto es necesario haber afianzado la creatividad, saber sacar ideas para poder programarlas. No es sólo clonar o copiar lo que ya existe, si no idear algo nuevo. Si ya has pasado esa fase, el potencial de los lenguajes escritos es muy interesante y pueden ser aderezados con otras plataformas, como por ejemplo con el diseño 3D de Unity que también es gratuito para usos no comerciales.
¿Es que no vas a hablar de la robótica? También. Muchos aseguran que la robótica es ideal para unos primeros pasos, pero a mi personalmente no termina de convencerme. Entiendo que la robótica necesita de la programación, y por lo tanto es complementaria, incluso secundaria; diría que la robótica debe ir siempre después de una fuerte base de programación. Una vez la tengas, por supuesto es un mundo tremendamente atractivo y enorme.
Opciones referentes a la robótica hay muchas. Desde las ya montadas como Mindstorms hasta las DIY basadas en Arduino, que es precisamente otro elemento muy interesante para continuar con el mundo de la programación. Hay muchas ideas, y propuestas dispersas por la red, y sobre esta cuestión hablamos hace unos días con la guía de compras de kits para aprender a programar..
Por último, tirando del hilo de Arduino, la electrónica puede ser un tema muy amplio e interesante, según las inquietudes del chaval, y Arduino - dada su versatilidad y universalidad - es una plataforma ideal para el aprendizaje. Además de barato, muy barato.
Keep Calm and love programming
No te voy a engañar: el inicio es duro y la curva de aprendizaje de la programación puede ser costosa para un niño. Pero si los avances son pequeños y la trayectoria larga, el camino no será tan difícil y merecerá la pena. En cuanto el niño/a coja carrerilla, no podrá parar.
Recuerda que no es aprender a programar para ser el mejor programador del mundo, es por mucho más. Y, de hecho, con las tecnologías y plataformas que existen hoy en día, es lo más costoso: aprender a pensar, aprender a tener ideas o a proponer mejoras para tus proyectos y creaciones.
Esa iniciativa es lo más difícil de conseguir; una vez el niño la tenga, podrá aprovecharla para el MundoReal, para sus clases y con sus amigos. Es la clave de aprender a programar: no es programar el mejor código, o el más bonito, sino por muchas otras cosas más.
Ver 19 comentarios