En la entrada anterior decíamos
“el planteamiento más frecuente y el menos reflexivo, ha consistido en favorecer el aprendizaje de la programación de forma progresiva. Proponiendo a los niños tareas de programar, desde las más sencillas y más lúdicas hasta las más complejas y aburridas (más aburridas a fuer de ser más reales o de ser aplicadas a temas menos motivadores). Éste es el planteamiento típicamente conductista.”
Este es el tipo de planteamiento que está detrás de inducir a
los niños a hacer muchas líneas de programa y a hacerlas muy rápidamente, sin
pensar previamente mucho en el problema a resolver, sin diagramas, sin diseño,... Es la idea que hay detrás de los concursos de programación, de enseñar a
programar a través de juegos, etc.
Es un planteamiento competitivo que deja a fuera a muchos niños
y que posiblemente haga odiosos a los programadores, o al menos les haga ser
para muchos unos frikis. O unos tipos raros con un perfil difícil de tener. En
definitiva puede llegar a ser un planteamiento por muchas razones excluyente.
Pero volvamos al principio, antes de empezar a escribir código
de forma compulsiva. Lo importante es saber lo que tienen en la cabeza, lo que
piensan los que tienen éxito en hacer programas potentes. Lo importante no es
el software que escriben sino lo que piensan. Y sobre todo la forma en que
piensan.
Este es principio básico del "pensamiento
computacional", y saber de memoria toda la sintaxis y las primitivas de
Java que hay en el mundo y por haber no le sirve de nada a los muchachos si no
pueden pensar en buenas maneras de aplicarla.
Desgraciadamente la forma más frecuente de enseñar a programar y
la que se está empezando a utilizar en nuestro país, léase lo que se ha hecho
en la Comunidad de Madrid, está en la clave señalada: Echar a los alumnos de
secundaria por el camino más áspero de la programación per se. Dejando
excluidos a los que no valen para programar directamente, y creando el estereotipo de que la programación es solo cosa de los programadores.
Luego nos extrañamos que las empresas no contraten a
informáticos, que han aprendido de forma vinculada a lenguajes y programas
efímeros, y que no tienen flexibilidad mental para adaptarse a nuevos
entornos, no solo de programación, sino de problemas, y sin embargo contraten a
matemáticos o a físicos que sí tienen esa competencia de resolver problemas en
entornos cambiantes.
Sin embargo tenemos referencias (Raja, 2014) de investigaciones que ponen
de manifiesto que si se empieza por el pensamiento computacional en vez de por
la elaboración de códigos, desvinculando la iniciación a ser diestros con el
ordenador, tal como se entiende habitualmente, se evita el principio de
discriminación que hace que algún tipo de niños y de niñas se inhiban. Supone
pues un principio de democratización del aprendizaje. Esto supone además que
los que en un futuro pueden ser bibliotecarios, médicos o artistas pueden ser
también buenos programadores. Y por ende podría ampliar la base de conocimiento
que se vuelca al mundo de la computación, lo que constituye el motor y el
combustible de la Sociedad del Conocimiento.
Pensemos en un ejemplo de pensamiento computacional (en una
época en que no había ordenadores) utilizado por un lego, un médico
especializado en epidemias, para resolver un problema crucial. Hoy
probablemente esto no podría haber sucedido así. Los programadores no tienen
conocimientos de epidemiología, y los epidemiólogos no tienen por lo general
pensamiento computacional (Koch and Denike, 2009, a través de Raja, 2014).
En 1854 , un médico de Londres llamado John Snow ayudó
a sofocar un brote de cólera que había matado a 616 vecinos. Dejando
de lado la teoría predominante de la época, la Teoría miasmática de la enfermedad, que aseguraba que las enfermedades se producián por emanaciones
surgidas del terreno, indagó las costumbres y los rasgos de la forma de vivir
de los enfermos. En un mapa levanto columnas con la ubicación de los muertos,
la frecuencia (¿no nos recuerda un infograma?):
Mapa
obtenido de
"On the Mode of Communication of Cholera,"
1854 Fig. 1. En Rev. Henry Whitehead mapped almost 700
cholera deaths, sewer lines, and both the incorrect location of the old plague
burial site (oval) and its correct size and location a block from the Broad
Street pump in this 1855 map (Koch and
Denike, 2009) y en JOHN SNOW'S MAP 1
(Broad Street Pump Outbreak, 1854)
Observó que las columnas crecían alrededor de una bomba de agua
en Broad Street en el Soho (ver el mapa) que además estaba cerca de un pozo
negro con fugas. La hipótesis que formuló es que la causa de la enfermedad
estaba en el agua. Implicitamente estaba aplicando principios que ahora
son clásicos de pensamiento
computacional entraron: Cruzar dos conjuntos de datos para obtener un
conocimiento nuevo (cruzar la ubicación de las muertes con las ubicaciones de las
bombas de agua), contrastar el resultado por iteraciones sucesivas y y el
reconocimiento de patrones. Cuando se clausuró la bomba el brote cesó.
Continuamos en la próxima entrada con la definición de pensamiento computacional.
Referencias.-
Koch,
T., & Denike, K. (2009). Crediting his critics' concerns: Remaking John
Snow's map of Broad Street cholera, 1854. Social science & medicine, 69(8), 1246-1251. http://www.albany.edu/faculty/fboscoe/papers/koch2009.pdf
Raja,
T. (2014). We can code it!. http://www.motherjones.com/media/2014/06/computer-science-programming-code-diversity-sexism-education.
Este comentario ha sido eliminado por el autor.
ResponderEliminarTengo dos problemas con esta nota. El primero se relaciona con una especie de exaltación del buen programador como arquetipo de pensador computacional. El segundo, con el ejemplo de pensamiento computacional que se propone.
ResponderEliminarPensar computacionalmente implica ver el mundo en términos computacionales, de representaciones discretas (estructuras de datos digitales) y procesos algorítmicos (programas), pero no necesariamente conocimiento suficiente de un lenguaje de programación. Si bien el autor hace énfasis en "lo que piensan" los programadores y no en los programas que escriben, no deja de haber un énfasis en la relación entre la programación y el pensamiento computacional.
Ahora bien, es precisamente cuando el autor trata de despegarse de la programación y sostener el pensamiento computacional en sí mismo cuando comete el error de confundir el pensamiento científico y el razonamiento lógico matemático con el pensamiento computacional. Un mejor ejemplo hubiera sido el trabajo contemporáneo de Charles Darwin, que tras observar un sinnúmero de especies animales, su distribución geográfica y sus condiciones de vida, aventuró una explicación computacional de su existencia, la teoría de la evolución, como lo sugiere Daniel Dennett en Darwin's Dangerous Idea: Evolution and the Meaning of Life.
Ahora bien, es precisamente cuando el autor trata de despegarse de la programación y sostener el pensamiento computacional en sí mismo cuando comete el error de confundir el pensamiento científico y el razonamiento lógico matemático con el pensamiento computacional. Un mejor ejem https://coaching-mastery.com/como-saber-si-puedo-vender-mi-coche-por-partes/
ResponderEliminar