Porque el futuro nos exige cada vez más cosas y todas distintas, preparar a nuestra generación de relevo es ir un pie adelante con el avance. Además, la capacidad de creación junto a la tecnología es infinita, ¿por qué no darle la capacidad de crear herramientas a todos esos pequeños? Reflexionemos sobre esta nueva meta con este artículo de Andoni Sanz:

Lo que empezó siendo un tímido fenómeno hace algunos años se está convirtiendo en una parte importante del curriculum educativo. Estamos hablando de enseñar a programar un sistema informático, sea éste un ordenador, un dispositivo móvil, un wearable o una placa Arduino, en edades cada vez más tempranas.

Steve Jobs (Apple) ya profetizó la expansión de esta disciplina a nivel mundial y apuntó muy acertadamente: “toda persona debería aprender a programar porque también enseña a pensar”. Pero no sólo el fundador de Apple ha tenido voz al respecto; fas de este fenómeno crecen sin cesar. La BBC, por ejemplo, lanzó el año pasado una campaña en favor de aprender programación (http://goo.gl/AHvVpV @Wired). De la misma manera, muchos gobiernos, como la Comunidad de Madrid (http://goo.gl/Jp3qg6 @elpais_espana) o la Comunidad Foral de Navarra (http://goo.gl/et8UCD ), han decidido apostar fuerte y han incluido una asignatura de programación y robótica en sus currículums educativos. EnEEUU varias fuerzas políticas se unieron en el 2014 para promocionar The Hour of Code(http://goo.gl/THaKfi @theverge), proyecto que involucra a 33.000 escuelas de más de 150 países; y en Europa se celebra anualmente la semana de la programación. Incluso el mundo de la moda ha tenido representación de la mano de top models como Karlie Kloss, animando a niñas a aprender (#codewithkarlie). Y recientemente el gigante Microsoft se ha aliado con CoderDojo para también promocionar la enseñanza de la programación.

¿Cuáles son las virtudes de programar desde el colegio?

Comencemos a descubrir las virtudes:

Pensamiento computacional

Programar supone hablar el mismo idioma que la máquina. A esto se le llama pensamiento computacional y requiere de múltiples habilidades.

Por un lado, es necesario aprender a analizar problemas, descomponerlos y buscar soluciones compatibles: no es lo mismo diseñar software para un móvil, un robot o un PC, que tienen características y dispositivos distintos. Durante la fase de análisis se identifican los elementos, sus relaciones o los flujos de datos, entre otros, y para ello se utilizan una serie de herramientas, como diagramas que representan las entidades del sistema. El proceso en sí exige una capacidad analítica y de abstracción importante. Este análisis no es tanto informático, sino que puede extenderse a otras disciplinas.

Por otro lado, se trabajan las estrategias de resolución de problemas. Por ejemplo, si se quiere desarrollar un juego como el tres en raya, una vez hecho el análisis de sus elementos y reglas, se pasará al diseño de las mejores estrategias para ganar. Éstas últimas se expresarán de forma algorítmica, esto es, a modo de conjuntos de pasos basados en secuencias, repeticiones y condiciones.

Aunque parezca estrictamente informático, usamos algoritmos todo el rato para resolver problemas cotidianos, lo cual significa que desarrollar la habilidad de identificarlos (metacognición) y refinarlos puede llegar a mejorar la propia vida personal y académica. Es más, muchos alumnos no alcanzan su máximo potencial porque, simplemente, o utilizan incorrectamente o no saben usar sus propios recursos mentales. Volverse consciente de ellos, analizarlos y reconstruirlos puede suponer una gran diferencia, y en ello también ayuda la programación.

Un ejercicio de análisis y diseño interesante consiste en plantear un escenario doméstico diario: el desayuno. Se introducen los actores (los propios alumnos en sus casas), y los elementos compartidos (utensilios, microondas…) y se les pide que analicen la situación para después hacer un diseño algorítmico en donde el uso de los recursos esté optimizado; o dicho de otra forma, cómo organizar el desayuno para que nadie tenga que esperar a que quede libre el microondas o el exprimidor. Estos ejercicios no requieren de elementos tecnológicos y juegan con la transversalidad al tratar temas de otras asignaturas, como una dieta sana o la importancia del desayuno.

Después de todos esos pasos previos de análisis y diseño, la última fase consiste en la programación o codificación propiamente dicha. Es un acto de creación en sí mismo, en donde el alumno va a poder ver e interactuar en vivo con su trabajo, y que generalmente supone un momento de regocijo para su creador, especialmente cuando se programan videojuegos. Conseguir que el personaje se mueva correctamente, introducir la gravedad para que caiga desde una altura, o que interactúe con el medio son retos que provocan gran satisfacción.

Hay que aclarar que los requerimientos y exigencias que supone la programación son mayores que los que pueden encontrarse en otras asignaturas. Programar líneas de código exige ser estricto y ordenado, ya que el propio ordenador también lo es a lo hora de interpretar el programa, y no se da pie a indeterminaciones o interpretaciones subjetivas. Algunos lenguajes, como Scratch, suavizan estas condiciones añadiendo una capa gráfica que permite desarrollar rápidamente de forma visual encajando bloques de código, y que es más adecuado para primaria. A medida que los alumnos desarrollan sus capacidades de programación también se desarrollan a su vez otras de gran interés, como la identificación de patrones o la extrapolación de soluciones.

Creatividad

La programación y la creatividad van de la mano. Si la resolución de problemas necesita una buena dosis de ella, el diseño de interfaces, videojuegos o elementos multimedia necesitan aún más.

La plataforma de programación que se elija también impondrá sus propias necesidades creativas. La informática ha evolucionado en pocos años y a lo largo de su vida ha ido creando nuevas formas de entender la creación de programas, dando lugar a las generaciones de los lenguajes. Por ejemplo, elegir Java implica saber programar pensando en objetos, por lo que el diseño de la solución se verá condicionado a tal característica. Otros lenguajes, como Logo, requieren de inteligencia espacial y geométrica para su uso; o con Scratch la programación estructurada por bloques tendrá todo el protagonismo. Sin olvidar los lenguajes de recuperación de datos como SQL o las funciones Google Sheets o Microsoft Excel.

Excelencia

Si algo es cierto acerca de la programación es que un mismo problema puede implementarse usando docenas de soluciones distintas, desde las peores que consumen tiempo y recursos de forma ineficiente, hasta las mejores que literalmente “vuelan”.

Por tanto una programación eficiente consiste en la utilización apropiada de los recursosde la máquina, la mejora de los algoritmos, de la velocidad, del peso o cantidad de líneas de código del programa, la posibilidad de reutilización, la escalabilidad o posibilidad de hacerlo crecer, la claridad del código, etc.

Todas esas buenas prácticas pueden usarse como medidores dentro de la asignatura, extendiendo los beneficios pedagógicos más allá del simple “funciona”, esto es, funciona sí, pero bien, rápido y eficientemente. Estos medidores ayudan por ejemplo en competiciones entre equipos que buscan el mejor algoritmo a un problema (programación competitiva), en donde pueden aplicarse mecánicas de gamificación como retos, premios, o ranking (http://goo.gl/6TlHCs).

Autonomía

Generalmente cualquier docente busca que sus alumnos sean autónomos en su trabajo. Si bien es cierto que al comienzo la dependencia es grande y tienen que enfrentarse a todo tipo de problemas, una vez superada la curva de aprendizaje son capaces de trabajar con bastante autonomía.

Los entornos de desarrollo con tutoriales y ayuda incorporada, así como sistemas de depuración, promueven una mayor autonomía del alumno, ya que el propio entorno le da pistas de lo que hace mal, por lo que será interesante tenerlo en cuenta a la hora de decidir qué herramientas usar.

Habilidades lógicas

Un programa informático se compone básicamente de variables, secuencias, condicionesy repeticiones (y hasta objetos). Normalmente se representan mediantes algoritmos,grafos o tablas, en donde se observa cómo se modifican los valores de las variables según qué acciones se ejecutan, al estilo de la máquina de Turing.

Todas estas relaciones lógicas pueden plasmarse en papel. Una vez más no es necesario el uso de un ordenador para diseñar un programa. Los ejercicios pueden ser cercanos a la vida real. Por ejemplo, puede diseñarse un objeto denominado persona, con la variable energía, y las acciones comer, correr y dormir, y construir un grafo que muestre los cambios de estado de la variable en función de las acciones. Cuando se hace el trabajo de análisis y diseño sobre papel, especialmente cuando no se tiene mucha experiencia, la programación suele ser más sencilla.

Alumnos con necesidades educativas especiales

La escuela incluye a todo tipo de estudiantes. En ocasiones muchos de ellos no pueden seguir adecuadamente el ritmo de la clase, o simplemente les es completamente imposible seguirlo (por ejemplo, los alumnos autistas http://goo.gl/xTU8qB). Con asignaturas como la programación esto no suele representar tanto problema, ya que es muy sencillo establecer distintos tipos de complejidad en las unidades didácticas, y se pueden usar todo tipo de recursos, desde ordenadores hasta papel.

Por ejemplo, imaginemos que queremos enseñar Logo para desarrollar habilidades geométricas y espaciales. Se pueden diseñar tarjetas con las instrucciones básicas de movimiento, y trabajar los ejercicios por parejas. Uno actuará de tortuga (el puntero de Logo que traza líneas), y el otro le indicará las órdenes usando las tarjetas. Este enfoque además de poderse usar en etapas como infantil donde aún no saben leer, también trabaja otros aspectos como la inteligencia kinestésica.

artículo original de www.educacontic.es, puedes continuar leyendo aquí.