Recientemente estuve en un desayuno de la Academia de Informática Mexicana. Se hace una vez al mes y siempre es invitado algún conferenciante a que hable de algún tema relacionado, desde luego, con el cómputo. En esa ocasión la que expuso fue una doctora en educación, la cual tiene experiencia con la enseñanza de la programación. Hizo una exposición sin duda interesante, pero al final, ya habiendo terminado todo, hablé con ella. Le dije que en mi opinión es un cuento eso de que los niños pueden programar. Ella insistía que no. Así que tuve que elaborar:

Una cosa es enseñar a programar a un niño los rudimentos de un lenguaje de programación y otra es saber programar. La razón es simple: un niño, incluso habiendo terminado la secundaria, no tiene el «background» de matemáticas, el formalismo que se requiere ara entender ciertos temas. Sí, hacer un loop tampoco es ciencia espacial, pero entender estructuras dinámicas, árboles, apuntadores, objetos, encapsulamiento, herencia, polimorfismo, etcétera, no es algo que pueda enseñárseles a los niños porque simplemente es como hablarles en chino. Para ello se requiere de cierta preparación.

Y si hablo de esto es que leí en un sitio (ver referencias), exactamente lo que siempre he pensado programar no es fácil, dejémonos de ese mito de una buena vez.

Programar es difícil, complicado cansado y exasperante muchas veces. Algunas veces el código parece cristalino y simple de entender, otras veces no hay manera de saber qué está pasando y por qué un programa no hace lo que queremos. Para colmo, la documentación en muchos casos es mala, insuficiente y si todo esto fuera poco, las máquinas son estúpidas y de pronto, en el peor de los momentos, se congelan.

Pero el saber programar tiene sus pros: Uno puede conocer gente que sabe mucho más y que siempre está en la mejor disposición de ayudar. Escribir programas da la sensación del crear cosas que uno jamás hubiese esperado que eran posibles. Uno se siente poderoso. Además, cuando uno programa empieza uno a entender cómo funcionan muchas cosas en el cómputo. Se pueden usar herramientas nuevas, rutinas, bibliotecas de funciones que hacen tareas complicadas pero que para el programador muchas veces es simplemente hacer una llamada a la función adecuada. Y de pronto, hay días que uno se levanta con la solución a un problema en el código. En última instancia el programar tiene sus recompensas, empodera al programador y al final del día vale la pena.

Todo esto lleva tiempo y mucho esfuerzo. Hay que leer código de otros, ver videos sobre cómo otros han hecho alguna parte interesante en programación, ver las mejores técnicas que hay para hacer el código limpio y fácil de entender, etcétera. Es como todo, hay que trabajar duro para que las cosas salgan bien.

Y no se me mal interprete. Yo creo que sí, hay que enseñarles a los niños a programar computadoras, usando cualquiera de los lenguajes modernos. Hay herramientas como Scratch que además, hacen la tarea a los que aprende mucho más fácil, quitándoles ciertas dificultades como la sintaxis del lenguaje. Hay sí, que meter más jóvenes al mundo del cómputo, a la programación, porque es una tarea fascinante, no exenta de problemas pero como ya escribí, llena de recompensas.

Lo único que pido es dejar atrás todas esas mentiras y mitos. Parafraseando a Winston Churchill: Sólo les puedo ofrecer «Sangre, esfuerzo, lágrimas y sudor» (en inglés blood, toil, tears and sweat).

Referencias:

Hanselman (blog) 
Wikipedia