Enseñar a Programar es Mucho Más: Que Sólo Enseñar un Lenguaje de Programación

Cuando estamos inmiscuidos en el área de la enseñanza, muchas veces repetimos patrones, y terminamos enseñando de la misma forma en que nos dictaban clase nuestros maestros. Usted, que ya ha aprendido a programar, ¿recuerda sus inicios?Remontémonos a aquella clase de Pascal, Cobol, Fortran, Basic o C. Como podrá recordar, lo que se hacía era básicamente analizar a detalle los resultados, o bien, proporcionar los datos necesarios para generarlos. Posteriormente, se realizaba el diagrama de flujo, lo cual implicaba diseñar la solución, y antes de pasar a construirlo, se verificaba a través de una prueba, que eso realmente estaba correcto. Todos aprendimos, pero, ¿será esta la manera más efectiva de enseñar? Tomemos unos minutos de nuestro tiempo para considerar ciertos aspectos de la enseñanza.

Para poder analizar un problema, encontrar rápidamente una solución y construirla, se requiere del desarrollo de ciertas habilidades. Esto se da a través de un adecuado proceso de enseñanza-aprendizaje. Sin embargo, los cimientos deben definirse desde un primer contacto con algún curso de programación. Por lo general, hay un trabajo previo con problemas razonados donde están involucradas diferentes variables y con aplicaciones prácticas; esto ayudará a que ese primer encuentro se convierta en un reto atractivo.

Para que un estudiante pueda llegar a construir programas sin importar el lenguaje de programación, es muy importante el desarrollo de la lógica. El objetivo no es enseñarle instrucciones como, “imprimir”, “leer”, etcétera. –Cualquiera puede aprenderse líneas de texto y su significado–, sino que debemos enfocarnos en enseñarles cuándo y cómo usarlas, cuándo y cómo combinarlas, incluso mejorar la solución usando otras instrucciones. El alumno necesita entender a detalle el significado de cada tema y complementar esto con su práctica y aplicación, al mismo tiempo que utiliza un lenguaje de programación.

Muchas veces, para los alumnos resulta difícil entender significados como, ciclos, condicionales, métodos, archivos, arreglos, y más aún si esto se combina con la teoría de objetos y cómo pueden ser aplicados. Así pues, surge en el estudiante la típica pregunta: “¿y para qué me sirve esto que me están explicando?”

No hay que olvidar que, cuando el lenguaje de programación es sencillo, esas instrucciones que se aprenden rápidamente se pueden memorizar; pero quizás esto sólo serviría cuando la persona ya tiene un camino recorrido en cuanto a la lógica de programación, de otra forma no lograremos un aprendizaje significativo.

Uno de los puntos que debemos observar con atención, es que siempre se debe tener una estrategia de enseñanza donde se mantenga una relación directa entre aquello que se está enseñando, y la vida real; de preferencia algo que los estudiantes ya hayan experimentado previamente. Por ejemplo, cuál es el proceso que tiene una tienda de autoservicio cuando la cajera pasa el producto por un lector de código de barras, o qué sucede cuando ellos entran a un sitio en Internet para comprar un libro, o bien, qué pasa en un restaurante de comida rápida cuando solicitan algún tipo de alimento. A través de estos ejemplos, entenderán el significado y la aplicación de aquello que se está explicando y así, despertaremos el interés por resolver cierto tipo de problemas.

No será lo mismo si el primer bloque de problemas a resolver que enfrenta alguien que está aprendiendo a programar, son series de Ulam, Fibonnaci, funciones exponenciales, logarítmicas, números primos, o generar las raíces de una ecuación cuadrática. Como educadores, debemos despertar el interés de nuestros estudiantes; de nosotros depende captar y conservar la atención para lograr un nivel de aprendizaje satisfactorio. Muchas veces esto se logra cuando nos enfocamos al desarrollo de juegos, donde ellos tengan la capacidad de cumplir con las especificaciones que se les indicó, y que además, puedan aplicar su maravillosa creatividad, que puedo asegurar que nos dejará asombrados.

Como instructores, siempre hay que considerar el tipo de público que en ese momento tengamos en frente. Además, nos ayuda mucho si mostramos los temas de la manera más gráfica posible, sobre todo cuando se trata de temas abstractos como archivos, arreglos y métodos. Podemos apoyarnos en paquetes que permiten simular o animar la teoría relacionada a estos temas, y que tienen ejemplos representativos y claros.

Otro aspecto importante que convendría considerar en la enseñanza de la programación, es que cuando no existen bases firmes en el área matemática, se le dificulta más al alumno captar rápidamente operaciones tan simples como, cálculo de porcentajes, promedios, frecuencias, divisores, etcétera; todos ellos son conceptos que se enseñan desde la primaria, pero que por no llevarlos a la práctica suelen olvidarlos fácilmente. Es recomendable tener diseñado un curso en un ambiente en línea, más para estos casos, de tal forma que la persona que requiera un refuerzo pueda acceder a manera de autoestudio a aquellos módulos que le ayuden a repasar o entender esos conceptos. ¿No cree usted que los cursos enfocados a desarrollar la lógica de programación, deberían ser parte esencial de los programas académicos desde la primaria?

Si nuestro objetivo es enseñar a programar, y vemos que existen áreas de oportunidad para ello, sería preciso hacer un análisis al grupo de personas que recibimos a través de algún instrumento diagnóstico, así podremos definir estrategias y estilos adecuados de enseñanza-aprendizaje. El diseño de nuestras estrategias nos ayudará a lograr nuestra principal meta: “pensar de forma lógica”, para luego programar utilizando un lenguaje de programación.

En realidad, son muchos los elementos que en un primer curso, los estudiantes de programación tienen que aprender y dominar: la lógica, el lenguaje para programar donde la sintaxis puede ser simple o compleja; los estándares, el desarrollo de la documentación y el entorno de desarrollo. Si logramos que tengan estas bases bien cimentadas, entonces de ahí, se desprenderán la correcta definición y relación que tengamos entre los estilos de enseñanza y aprendizaje.

Todos los que nos dedicamos a la enseñanza de la programación, fuimos inspirados por algún buen maestro, y nuestro deber ahora, es transmitir lo mejor posible esta pasión por lo que hacemos, tomando lo mejor de nuestros instructores, y añadiendo lo que hemos aprendido en el camino. ¿No le gustaría a usted, que cada uno de sus estudiantes por lo menos, conservara una actitud positiva ante lo aprendido? El balón está de nuestro lado.

Algunos puntos clave para tomar en cuenta:
•Analice a su público o grupo.
•Defina sus estrategias de enseñanza y aprendizaje, considere los estilos.
•Apóyese de elementos gráficos, animaciones o simulaciones.
•Tenga como apoyo su curso en línea y retroinforme de manera constante.
•Cree un banco copioso de ejercicios, material de contenido y exámenes.
•Sea sencillo en su explicación.
•Cambie siempre la actitud de su grupo cuando ésta sea negativa.
•Utilice problemas que permitan a la persona establecer una relación con lo real.
•Practique para poder aplicar lo aprendido.
•Y por favor, si tiene dudas al manejar un tema, pida a sus alumnos tiempo para investigarlo, y explíquelo cuando se sienta seguro. Ellos se lo agradecerán.

Acerca del autor
Ing. Ma. del Consuelo Jiménez Fernández es profesor asociado del departamento de Ciencias Computacionales en la Universidad de Monterrey. Ha recibido en más de diez ocasiones el primer lugar en el concurso de investigación vinculada a la docencia de la UDEM, y también ha recibido el premio a la calidad docente. Sus áreas de especialidad son: Metodologías para el Desarrollo de Software, Lenguajes de Programación, y Administración de Proyectos.  Actualmente, es una de las evaluadoras en las propuestas de proyectos para la incubadora en UDEM. cjimenez@udem.edu.mx