Enseñar a programar, "desprogramar" y todo lo demás

Dentro de poco se celebra el Open Space de ‘Enseñar a programar’ en Valencia y estuve preparando una sesión sobre algunas reflexiones tras escuchar el título del Open Space.

Aunque finalmente no voy a poder acudir, voy a recoger las ideas por aquí, porque me gustaría dejar constancia de lo que pienso ahora mismo y revisarlo con los años para ver si sigo convencida de las mismas cosas o algo ha cambiado, ya que no dejamos de aprender continuamente, de vivir experiencias, de conocer las de otros y todo nos influye.

¿Qué se entiende por “enseñar a programar”? Nunca he enseñado a alguien desde cero, ni mentorizado a alguien que está aprendiendo. ¿Qué enseñaría a alguien que empieza desde cero? ¿Qué es lo que más me ha resultado útil a mí? ¿Por dónde empezaría? ¿Sería suficiente con “enseñar a programar”?

Después de darle muchas vueltas, ya tenía una propuesta de título para la sesión: enseñar a programar, “desprogramar” y todo lo demás ;)

Enseñar a programar

En algunos centros de formación comienzan enseñando a programar en algún lenguaje de programación. O bien, enseñan a manejarse en un stack determinado.

¿Empezaría por ahí? Conociendo mi humilde experiencia, creo que no.

¿Por qué? Porque me gustaría enseñar a programar de forma agnóstica sin estar atada a ningún lenguaje de programación.

Me gustaría proporcionar cierta base que permita a la persona situar lo que está aprendiendo y poder encajar otras piezas de puzzle más adelante.

No me gustaría “dar forma” a un “doer”: a una persona que simplemente programa lo que otros le piden que programe.

¿Por dónde empezaría?

Por una breve historia de los paradigmas y lenguajes de programación, así como algunas de las características más relevantes, ventajas, desventajas, …

Después indicaría qué dos lenguajes de programación aprenderían. ¿Dos? Sí, porque si se aprende únicamente uno, se corre el riesgo de no atreverse a aprender ningún otro lenguaje, encontrar la zona de comfort y no atreverse a salir de ahí.

Pero antes de empezar a programar en esos lenguajes, enseñaría a programar en un pseudolenguaje.

Y cuando pienso en enseñar a programar realmente estoy pensando en:

Es cierto que la mayoría de todo eso se podría enseñar con un lenguaje de programación real, pero me gustaría no “acoplar” la enseñanza de programar con un lenguaje de programación en particular.

Y siempre tendría en cuenta código productivo y código de test para que de forma natural aprendan a no desvincularlos, o bien, a entender que programar no sólo se refiere al código productivo.

Enseñar a “desprogramar”

Con esa palabra tan rara (y que me perdone la RAE) quiero comunicar que no sólo se trata de programar, escribir, crear, sino que también hay que aprender a:

Y todo lo demás

¿Qué es todo lo demás?

Y creo que me dejo lo más importante para el final: rodearse de buena gente de la que aprender, ya que el aprendizaje no tiene fin.

Otros enfoques

Después de estas reflexiones, me doy cuenta de que le podría haber dado otros enfoques diferentes: