Saltar al contenido principal

Aprender a programar

Desde que empecé a dar clases de programación en la  Facultad de Ciencias de la Universidad Nacional Autónoma de México ha crecido en mí la creencia de que aprender a programar no es cuestión de aprender un lenguaje, sus detalles y sus trucos, sino de aprender una manera de pensar. Posteriormente, cuando tuve oportunidad de leer una cita de David Hume en las paredes de la Universidad de Edimburgo,

El espíritu de la época afecta todas las artes… y trae consigo mejoras para toda arte y ciencia,

entendí que en este caso se usaba para hacer referencia a  pensar computacionalmente como el espíritu de una nueva era. Lecturas posteriores, como la del artículo de  Jeannette M. Wing en  Comunicaciones de ACM, han reforzado mi creencia de que aprender a programar implica el desarrollo del pensamiento computacional, entendido como

un conjunto de actitudes y habilidades aplicables universalmente que todas las personas, no solamente los científicos de la computación, debieran estar ansiosas por aprender y usar.

Por supuesto, mi pensar refleja solamente una creencia generalizada que ha conducido a iniciativas de grandes organizaciones para promover el aprendizaje de la programación entre niños y jóvenes, así como el desarrollo de lenguajes y aplicaciones para aprender a programar, como fue el caso de  Logo a finales de los años 60 y posteriormente  AliceScratch y  RoboMind, entre muchos otros.

Hace menos de tres años, cuando mi hijo cursaba su último año de primaria, su escuela me dio la oportunidad de tener una sesión con el grupo para introducir la programación. Usé RoboMind, introduje lo básico de su operación y los invité a programar el robot para dibujar una cara feliz. La respuesta de los niños fue excelente, al punto que ¡tuve que cargar a uno de ellos para separarlo de la computadora y darle a otros compañeros la oportunidad de participar en la tarea!

Todo esto lo traigo a colación porque la semana pasada tuve la oportunidad de asistir al  V Coloquio Nacional de Educación Media Superior a Distancia para escuchar la conferencia del Ing. José Luis Chiquete “Aprender programación: Beneficio en EMS” y participar a continuación en una mesa de análisis junto con los doctores Alejandro Pisanty Baruch y Xicotencatl Martínez Ruiz. En conjunto, el ponente y los panelistas presentamos al público asistente varias razones por las cuales es importante aprender a programar en bachillerato, o antes.

La razón más evidente tiene su origen en el mercado laboral: la demanda de programadores es mucho mayor que la oferta y la distancia entre ellas sigue creciendo. Si los jóvenes aprenden a programar en bachillerato pueden trabajar como programadores en caso de no continuar con sus estudios, de manera complementaria a éstos, o bien continuar con estudios profesionales en áreas como la ingeniería de software o las ciencias de la computación. De esta manera atendemos la necesidad de programadores en dos niveles, técnico y profesional, aumentamos la oferta y podríamos incluso bajar el precio de los servicios de programación, con el consecuente beneficio para la industria de desarrollo de software. Desde esta perspectiva es indispensable promover el aprendizaje de  programación útil, que permite el desarrollo de aplicaciones reales, como podrían ser aplicaciones para la web, para la nube o para los dispositivos móviles.

Una razón menos evidente se deriva de la creciente digitalización de nuestro entorno de vida. En siete u ocho años, cuando los jóvenes que hoy inician bachillerato concluyan sus estudios profesionales, la digitalización será mucho mayor, de una manera que no imaginamos todavía, como pocos imaginaban la situación actual hace diez años. Si aprenden a programar desde ahora, estarán en condiciones de participar en la construcción del entorno digital, no solamente vivir en él y consumir sus servicios y productos. Desde esta perspectiva es importante promover el aprendizaje de la programación como una preparación para estudios posteriores, profesionales y de especialización en el área. Podríamos pensar entonces en aprender lenguajes como C#, Java, Python, Rubi, o incluso Prolog, acelerando de esta manera la formación de futuros líderes del desarrollo tecnológico de nuestro país.

Una tercera razón, todavía menos evidente, parte precisamente de la concepción del pensamiento computacional como una manera de ver el mundo a nuestro alrededor que nos permite modelarlo en términos computacionales para comprenderlo, resolver problemas, procesar información y, en general, apoyar nuestros procesos de vida, trabajo y estudio con elementos y entornos digitales. Es la forma de pensar que nos permite comprender qué es un virus informático, generalizar la teoría la evolución para someterla a juicio vía simulaciones y atender así los problemas de la duración y la complejidad del proceso, resolver conjeturas matemáticas mediante procesos computacionales y construir modelos de inteligencia artificial para comprender mejor la natural.  Desde esta perspectiva, aprender a programar es parte esencial de la formación de verdaderos ciudadanos digitales, capaces de comprender la naturaleza del entorno digitalizado en que nos toca vivir y en condiciones de ventaja para habitarlo.

El espíritu de la era digital

El filósofo escocés David Hume escribió “El espíritu de la época afecta todas las artes… y estimula la investigación y el desarrollo”. Pocas dudas quedan que el espíritu de nuestra época se ha conformado por tres elementos clave:

  • el pensamiento computacional,
  • las tecnologías de información y comunicación y
  • la digitalización masiva de la información.

El primero abstrae y formaliza el concepto de máquina. El segundo ha hecho posible construir modelos físicos extremadamente eficientes de este concepto abstracto. El tercero ha alimentado al segundo y de esa manera ha permitido construir ese espacio intermedio entre pensamiento y realidad que hoy conocemos como ciberespacio. El pensamiento computacional ha permeado las ciencias, las ingenierías e incluso las artes. Las tecnologías de información y comunicación han pasado de ser las herramientas del siglo XX a convertirse en el entorno del siglo XXI, en el cual se desarrollan gran parte de nuestras actividades económicas, empresariales, laborales, sociales y culturales. La acumulación de cantidades exorbitantes de información digitalizada accesible de manera global —salvo limitaciones debidas a las también exorbitantes desigualdades sociales y económicas que nos afectan— está generando sociedades donde la información es un bien común y la economía asume el conocimiento como uno recurso de gran valor.

El contexto informático es sumamente dinámico y en los últimos cinco años ha experimentado una transformación profunda debido a cuatro factores principales:

  1. La consolidación de Internet como espacio de interacción por comunidades amplias y geográficamente distribuidas, especialmente en la forma de redes sociales. Ejemplos notables de servicios de redes sociales son Facebook, abierto al público en general en 2006 y con 901 millones de usuarios mensuales (Facebook, 2012), y  Twitter, iniciado en 2006 y con más de 140 millones de usuarios intercambiando arriba de 340 millones de mensajes diariamente (Wikipedia contributors, 2012a).
  2. La inclusión en Internet de la capacidad de ejecución de procesos y provisión de software como servicio, transformándola en una supercomputadora global: La Nube (Armbrust et al., 2012). Ejemplos notables de este desarrollo son aplicaciones en línea como la suite de oficina de Google (Google Docs, docs.google.com), la herramienta para la gestión de tareas Remember The Milk (www.rememberthemilk.com) y la herramienta MindMeister (www.mindmeister.com) para la edición colaborativa de mapas mentales, las cuales cuentan además con interfaces para la programación de aplicaciones que utilicen sus servicios.
  3. La proliferación de dispositivos móviles de gran capacidad (ej. tabletas, teléfonos inteligentes, reproductores personales de música, localizadores geográficos) y facilidades para su conexión inalámbrica a Internet y que convierten a esta última en una red ubicua.
  4. La popularización de nuevos mecanismos de interacción humano-computadora, que representan nuevos retos y oportunidades para el área. Ejemplos notables de estos mecanismos son las pantallas de interacción táctil (Bachl, Tomitsch, Wimmer, & Grechenig, 2010), particularmente en dispositivos móviles, los dispositivos con sensores de movimiento como el Wiimote (Wikipedia contributors, 2012b) y Kinect (Microsoft Corporation, 2012), así como mecanismos para el reconocimiento de voz y lenguaje hablado.

Consecuentemente, se hace necesaria la revisión de lo que se puede considerar alfabetización hoy en día, considerando el espíritu de la era digital, que no solamente debe incluir la apropiación de las tecnologías de la información y la comunicación sino que ésta debe ser de modo que sea tolerante a su dinámica acelerada. Asimismo, la alfabetización debe considerar la formación del pensamiento computacional, incluyendo la formación en algoritmia y programación como parte de la educación básica, así como el desarrollo de competencias para la gestión y el procesamiento de información.

Referencias

Armbrust, M., Fox, A., Griffith, R., Joseph, A. D., Katz, R., Konwinski, A., Lee, G., et al. (2012). A view of cloud computing. Communications of the ACM, 53(4), 50-58. doi:10.1145/1721654.1721672

Bachl, S., Tomitsch, M., Wimmer, C., & Grechenig, T. (2010). Challenges for Designing the User Experience of Multi-touch Interfaces. Workshop on Engineering Patterns for Multi-Touch Interfaces 2010. Berlin: ACM SIGCHI Symposium on Engineering Interactive Computing Systems.

Facebook. (2012). Key Facts. Facebook Newsroom.

Microsoft Corporation. (2012). Kinect for Xbox 360. Xbox.

Wikipedia contributors. (2012a). Twitter. Wikipedia, The Free Encyclopedia.

Wikipedia contributors. (2012b). Wii Remote. Wikipedia, The Free Encyclopedia.