Enseñando a programar (Parte 1)

El tema que señala el título de este post es un tema amplísimo, del que habría tanto para decir y discutir. Veamos de tratar algunos puntos, que surgen de experiencia personal, e ideas sin probar que van rondando mi cabeza desde hace unos años.


Primero, una aclaración: si bien gran parte de mi actividad semanal (en estos tiempos, más del 60% del tiempo que empleo), está dedicado al dictado de cursos (en empresas e institutos acá en Argentina, o en charlas en distintas ciudades) me considero no un instructor de programación, sino un desarrollador de software que por esos accidentes de la vida terminó dedicando tanta cantidad de sus horas al dictado de clases. Pero no soy una persona pedagógica, o que haya estudiado para enseñar sino, como muchos otros instructores, soy alguien que programa y que muestra algunos temas de programación, desde mi propio óptica personal (hace años que no doy un curso oficial o de Sun o de Microsoft, prefiero dar mis temas a mi forma y con mis temarios).


Segundo: prefiero programar que enseñar. Contrariamente a lo que algunos de Uds. podrían pensar, para mí enseñar no es la mejor forma que imagina de pasar mi tiempo profesional, por lo menos en cursos presenciales de la forma en que me toca ahora dictar. Prefiero escribir, leer, programar ejemplos, pruebas de conceptos, aplicaciones completas, describir temas en posts, antes que estar dictando una clase presencial (una charla es otra cosa: es más interesante, es para presentar un tema, y llamar a la acción a los asistentes, sin tener que seguir por semanas hablando de lo mismo). Cuando tengo, digamos, un curso para las 18:30, ya sé que ese día no puedo trabajar hasta las 18hs en un proyecto, o no puedo irme a almorzar tarde, o no puedo salir de viaje a otra ciudad, o no puedo…  o voy a salir demasiado tarde para ir a cenar tranquilo, o pasar por tal lado, o … y mil cosas más. Un curso es un clavo en el medio de cualquier agenda a armar. También pasa que un curso que no es nocturno, parte al medio cualquier día de trabajo, especialmente cuando trabajo en un equipo Scrum. Como los cursos tienen días ocupados durante varias semanas, también se me complica organizar cualquier visita al interior de mi país, para dar una charla sobre un tema. En definitiva, curso presencial con muchas clases, es un incordio para cualquier agenda.


Y una de las cosas que más me cansan, a esta altura de mi vida, es hablar, hablar y hablar durante horas en un curso. Vuelvo a mi cubil, a veces, bastante cansado y congestionado, nada más de hablar. Imagino que en cualquier momento comienzo a dar una clase mostrando cosas en el proyecto y explicando lo que hago escribiendo en el Notepad… :-)


Hechas esas confesiones personales, respiro hondo, y paso a comentar algunos problemas que detecto en los cursos que conozco, los míos.


Muchos de mis cursos se pueden circunscribir a estos tipos:


- Grupo de gente que conoce algo de programación, que pueden estar en distintos niveles, y quieren aprender un tema de tecnología, ejemplo: ASP.NET o JSP.


- Curso con máquina o sin máquina y proyector


Bien, comienzo por los temas que veo que no están del todo bien y se pueden mejorar, o cambiar completamente por otro “approach”.


Notemos que los cursos presenciales tienen un gran problema: son, justamente presenciales. Hay que combinar los horarios de todos los que quieren participar, reservar tal tiempo a tal hora y lugar; también tienen que estar todos presentes. Esto es un resabio de como se enseñaba en las universidades que comenzaron a aparecer en la Edad Media: como no había libros, el papel no existía o era caro y los profesores escasos, la única forma de enseñar era presencial: juntar un grupo que tenía que escuchar a un profesor mientras daba un tema. En aquellos años incluso se estudiaba para ejercitar la memoria ante la escasez de elementos para tomar apuntes.


Pasaron los siglos y veo seguimos con el mismo esquema. Algunos problemas derivados de esto:


- Cada asistente tiene que venir, a cada clase. Si llueve, si está complicado en el trabajo, si se enferma, por lo que fuera se pierde una clase que en generle al es irrecuperable presencialmente. Tiene que estar disponible cada día al horario en que se dicta el curso, por varias semanas a veces. Y si un día se le complica asistir lo más probable es que falte o que llegue tarde y no pueda aprovechar bien la clase.


- Cada asistente mismo tiene que estar con el ánimo más despierto, durante varias horas, para captar todo lo que se dicta en el curso.


- Como un curso presencial implica asignar recursos escasos, como lugar, proyector o máquinas, sala, etc., entonces cada clase dura por lo menos 3 horas durante las cuales o se dan demasiados temas, de tal forma que no hay tiempo de asimilar, o se dan pocos y el curso se encarece por durar más tiempo.


- El instructor tiene que explicar algo que ya explicó, probablemente, cuarenta veces.


- Como los asistentes, el instructor también tiene que estar con todas las luces, explicar de forma clara y tener todas las neuronas prendidas en cada clase, que se repite y repite a lo largo del año.


- No siempre el lugar de dictado es el adecuado: o no está cerca o no tiene todos los elementos en condiciones.


- No todos los asistentes tienen el mismo nivel de conocimientos inicial con lo que no todos van aprovechando el contenido de la misma forma.


- Si trabajan con máquina, el curso se alarga. Se necesita más tiempo para corregir ejemplos en cada máquina. También pasa que algunos asistentes terminan antes y otros quedan trabados. Coordinar las distintas velocidades es difícil de manejar. Muchas veces sugiero trabajar de a grupos, con poco éxito. Pasa cuando los asistentes son particulares que no se conocen entre sí y hay una máquina por persona: la gente prefiere encarar por su cuenta, en solitario, cada ejercicio. Esto trae como consecuencia que la clase se alarga. O hay que alargar el curso completo, con el consiguiente aumento del costo final.


- Aun teniendo práctica para captar un tema, un asistente puede necesitar su tiempo para entenderlo. Necesita practicar y jugar con un ejercicio un tiempo. No siempre es posible disponer de ese tiempo: muchas veces porque hay que seguir con otro tema.


- Si no trabajan con máquina, muchas veces los asistentes no se toman el tiempo para practicar. Hay varias razones: están tomando el curso en el trabajo pero no tienen máquina adecuada para practicar. O están tapados de trabajo y no tienen tiempo. O sus jefes no les asignan tiempo para practicar. O podrían practicar en una máquina personal, al volver a casa, pero ahí también: hay otros temas de que ocuparse. Me ha pasado dejar ejercicio a un curso y que de los veinte integrantes sólo uno o dos practicó algo entre dos clases. Cuando esto se repite, a lo largo de las clases, llega un momento que el contenido que se trata no se asimila porque no se practicó lo anterior. Llegados a ese punto, sin práctica de lo ya tratado es difícil captar todas las facetas del contenido nuevo. También a algunos asistentes se les complica instalar todo lo que necesitan para practicar. Una vez, recuerdo, puse un ejercicio entre clases en un curso de cuarenta personas. Lo escribí mal planteado a propósito. A la siguiente clase, solo uno de los asistentes se dio cuenta del problema: era el único que lo había encarado.


- El lugar de dictado puede estar a varios kilómetros de donde un asistente vive y trabaja.


- Si el curso es en el propio trabajo, un asistente puede sufrir interrupciones, o por tener un tema “urgente” para solucionar, debe abandonar la clase.


- Si el curso es en el trabajo, pero después o antes de hora de oficina, a muchos no les es fácil participar por tener otras actividades o no poder llegar más temprano.


- De vez en cuando me pasa que algunos asistentes no tienen mucha motivación para hacer el curso: los “mandaron” al curso y no tienen un soporte, un apoyo, de parte de sus empleadores, para sacar provecho del mismo (especulo, pero eso puede ser también un “test de proactividad” de su empleador o contratante).


- Otras veces, el asistente está motivado porque necesita trabajar pero hace tiempo que no toma un curso. Las tecnologías nuevas lo sobrepasan y termina necesitando de más tiempo para aprovechar el contenido.


- Si el curso es por cuenta de cada integrante, no lo paga una empresa, entonces probablemente tenga que asistir después de hora un día de semana o un sábado. En esos horarios también tendrá que pelear su tiempo con otras actividades, familiares, o de estudio formal.


- El temario es introductorio para un lenguaje de programación, pero no se enseña a programa. Se pide explícitamente que se conozca de programar y de base de datos. Y algunos asistentes no tienen esos conocimientos en firme.


- Otro caso es cuando el temario es intermedio o avanzado.  Puede pasar que de los que asisten, algunos ya saben varios puntos del temario y se aburren. Mientras, otros necesitan repasar o incluso aprender un tema, porque no llegan al nivel que se necesita para el curso. Esto pasa cuando los cursos son para asistentes de distintas empresas o que se inscriben por su cuenta.


- Cuando el temario lo arma una empresa, el que arma el temario pide todos los temas habidos y por haber, pero luego no se asigna tiempo para que los asistentes practiquen en el medio del trabajo de cada día.


- Prácticamente todo el material que doy queda disponible en mi sitio personal. A la quinta o sexta clase del curso, alguien se acerca y me pregunta: ¿dónde puedo bajar los ejemplos? Yo me pregunto entonces: ¿cómo hizo para seguir las anteriores clases, si nunca repasó los ejemplos que YA se dieron? Detecto acá que no han tenido tiempo para practicar entre clases.


Y en mi caso en particular, muchas veces los cursos no se abren por falta de inscriptos: se necesita un número mínimo para costear los activos inmovilizados (proyector, máquinas si es con práctica, lugar, instructor) que no siempre se cubre. También me pasa armar una lista de correo para los asistentes del curso (por ejemplo, en los míos de Java) . Luego de dos años, les cuento que solo cuatro personas, entre decenas que asistieron, se inscribieron para hacer más preguntas.


No quisiera afirmar que siempre es así como describo arriba. Pero me asombra la cantidad de veces que algunos de esos “anti-patrones” aparecen, por lo menos, en muchos de los cursos que me ha tocado dictar. Así que pienso, desde hace algún tiempo, que debo mejorar en algunos temas. O motivar más, o hacer algo para que estos anti-patrones no aparezcan tan frecuentemente. Una sorpresa agradable: los cursos de Scrum son los más participativos de todos: son casos donde prácticamente no prácticamente no aparecen estos “issues”.


Y un tema, disculpen, más personal: otra “constante” que detecto. Ante un curso de cuarenta personas, pregunto cuántos conocen mi blog. Sólo uno levanta la mano. Pasan las semanas, y al final del curso, después de dos meses, pregunto de nuevo. Y ahora, son 1 o 2 las manos levantadas. Así que algo tengo que hacer: o mejorar los contenidos o escribir más claro o de temas que les interesen más. Muchas veces escribo para que lo explicado quede más claro. Si algo no se entiende en una clase presencial, quisiera que se pueda leer y releer por acá. Pero veo que he tenido poca llegada en ese tema, por lo menos en los asistentes a mis cursos presenciales.


Pero también detecto y especulo un patrón: los que programan y no leen blogs (mío o de cualquiera), en general, no se mantienen actualizados y necesitan cursos presenciales. Los que programan y leen blogs son otro grupo: se mantienen actualizados y no necesitan cursos presenciales, apenas algunas charlas introductorias como primeros pasos en un tema. Luego, ellos mismos aprenden de una nueva tecnología, patrón, estilo arquitectónico o herramienta.


Habiendo repasado estos puntos, ¿cómo se podría mejorar? Tengo algunas ideas al respecto, tomadas de otros ámbitos, y de lo que veo que puede funcionar, pero son temas para seguir en la segunda parte de este post. Mientras tanto: ¿tienen alguna sugerencia?


Nos leemos!


Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

This entry was posted in 1389, 1390, 1391, 3463. Bookmark the permalink.

6 Responses to Enseñando a programar (Parte 1)

  1. Omar Vasquez says:

    Yo creo que lo más difícil es motivar a que la gente aprenda, ya que cada uno tenemos distintas motivaciones por el mismo contenido.

  2. Tordek says:

    El tiempo no espera a nadie. Eso es obvio. Por mucho que se planee, siempre va a faltar.

    Por lo menos, se puede tratar de reducir eso, planeando para menos tiempo… digamos, asumimos que el 10% de los días no van a pasar. Después, si llueve o algo, tenemos un “colchón” para acomodar las clases al cronograma…

    Las prácticas no se pueden asumir que van a hacerse afuera: se sabe que no. La tarea no sirve, y hay más de un estudio con respecto a eso. El trabajo en clase sigue siendo lo mejor, y yo estoy a favor de grupos—pero grupos de no más de 3 personas—.

    Con respecto a los materiales, depende mucho… pero si los trabajos son en papel hay que evitar transformarse en un profesor imbécil que dice “Uh, te olvidaste un punto y coma en esta línea. No compila. Está todo mal.”… ¡Para eso tengo un compilador!

    La programación en general está llena de temas que dependen de otros temas… no se puede explicar Scope sin definir un Bloque, no se puede explicar Clausura sin Funciones de Primera Clase… y demás… No es posible que un alumno que falta a la mitad de las clases, y no hace trabajos en casa entienda un tema sin su base previa. (Aunque es totalmente posible que ese alumno lo sepa de antes, debería demostrarlo mediante los trabajos.)

    Un artículo que leí hace poco mostraba que en las clases de programación hay una tendencia a que las notas se dividan en “dos jorobas”: hay un montón de gente a la que le es natural, y sale siempre bien, y otro montón de gente que no puede entender. Proponía que los recuperatorios se hagan inmediatamente después de los exámenes (2 o 3 clases después; para repasar), y simplemente reprobar a los que fallen todos los recuperatorios. La gente que no puede terminar de comprender un tema no va a poder entender un tema que necesita el anterior como base.

    Con respecto a los materiales… un mayor incentivo (no hay soluciones absolutas, creo) sería poner todos los materiales del curso en un solo lugar; hacer el cursado imposible sin entrar al menos una vez… aunque los que dependen de las fotocopias se van a quejar.

    Y, con respecto a que conozcan el blog… si sabés cómo conseguir más visitas, tirame un cable, que me servirían mucho.

    P.D.: (Sueno muy hijo de puta cuando hablo de esto, pero es que realmente me causa dolor físico.) Por favor, mejorá tu forma de escribir. La coma no se usa para insertar pausas arbitrarias en una oración; se usa para separar cláusulas, o hacer acotaciones parentéticas. En la primera oración del post, “El tema que señala el título de este post, es un tema amplísimo, del que habría tanto para decir y discutir.”, cometés el pecado más grande de la coma: separar el sujeto (“el tema [...] de este post”) del prédicado (“es [...] amplísimo”).

  3. Roberto Adrián Farias says:

    Al respecto sólo diré que enseñar en un trabajo muy complicado y una de las razones creo que es la diversidad de tipos de alumnos que participan en un curso con diferentes conocimientos, formas de aprender (algunos más teóricos, otros prácticos, algunos prefieren el trabajo en grupo, otros no, etc.), y uno de los retos más grandes creo que es lograr o mantener la motivación en ellos, y definir una estrategia de enseñanza acorde a las preferencias de cada uno (lo ideal). Tal como se menciona en el artículo la presencialidad tiene muchas desventajas por lo que Creo también que todo se puede fortalecer proveyendo un ambiente no presencial mediante la conformación de grupos virtuales, el uso de foros, wikis, repositorio de archivos compartido, blogs y otras herramientas colaborativas de interacción. Este todo un tema.

  4. Me encanto la reflexión, espero ansioso la segunda parte.

    Siempre me encuentro con los mismos problemas que comentas. Es todo un tema lograr una buena clase llegando a alcanzar que todos aprendan y nadie se aburra.

    Particularmente aplico las siguientes guias para mis cursos.

    – No mas de dos horas por clase, si dura más se empiezan a dormir.

    – Sin máquinas, la única máquina es la mia con la que hago la presentación y los ejemplos los escribo yo con la ayuda de los alumnos, de manera de no perder tiempo en las practicas.

    - Pizarron, siempre disponible

    - Prácticos pos clase obligatorios, que reflejen lo visto en la clase y cuestiones adicionales para investigar

    - Últimamente me di cuenta que debo armar los cursos con una duración que no pasen de un mes (por ejemplo 8 clases de 2 veces por semana), dado que después de ese tiempo muchos pierden la motivación o se les complica continuar. Para temas largos los divido en varios niveles independientes donde cada uno decide el nivel que pretende asistir, evitando de que los que saben algo se aburran con las cosas elementales.

    - Google Groups y Google Docs es un fiel aliado para trabajar y acompañar a los alumnos con su autoaprendizaje.

    Saludos

  5. Paco Marquez says:

    Es dificil que la situación cambie pronto, la economía, los intereses personales, en si las limitaciones que existen en este momento hablando de paises de latinoamerica no creo que puedan generar un cambio tan rapido como se necesita.
    Todo esta creo yo en hacer cultura en las personas (se que se oye facil y ya varios lo pensaron), pero asi es, no podemos obligar a nadie a que se mantenga actualizado, no podemos obligar a las personas a que realizen las actividades o pongan atención dentro de los cursos; muchas veces estas capacitaciones son pagadas por la empresa y de esa manera el vale madrismo por asi decirlo sale a flote.
    Todo esto debe empezar desde mas abajo Secundarias o primarias tal vez, y aun asi debe ser por que los instructores les inculquen a los alumnos el esfuerzo y el desempeño de estar siempre en la lecturay de compartir lo que realizan.
    No es nada facil, es mas no veo cuando se pueda lograr esto… pero las ideas estan si empezamos a concientisarnos uno por uno tal vez algun día seremos mayoría.
    Por el momento seguimos siendo flojos y conformistas, y digo “seguimos siendo” por que la mayoría asi lo demuestra.

  6. Gsouto says:

    Si queremos mejorar la enseñanza me parece útil partir del análisis de las necesidades y características de aquellos a quienes todo ese esfuerzo va dirigido.

    1.- El inteligente, interesado en su trabajo, que ama lo que hace.
    Sumamente ocupado porque trabaja y estudia todo el día no tiene tiempo de hacer cursos presenciales y tampoco los necesita porque se mantiene actualizado con libros o buscando información en línea.

    2.- El inteligente pero no demasiado interesado o trabajando en algo que no es su interés principal y necesita mejorar.
    Es altamente probable que realice cursos presenciales para que le den una orientación sobre el tema y después seguir por su cuenta.
    Este es posible que se le acaben las ganas de aprender en la 3ra clase, o no tenga tiempo para ir siguiendo el curso. Son muchos y por ahí aprenden algo.

    3.- El tipo que necesita capacitarse rápido por cuestiones laborales urgentes.
    Este necesita que le inyecten los conocimientos, si pudiera ser por ósmosis mejor. Es el que sigue los ejercicios y probablemente los blogs.

    4.- El tipo mediocre que lo mandan, o que sabe que si no aprende algo “fue”.
    No se sabe muy bien si el sostiene la silla o la silla lo sostiene a el.
    Siempre existe la probabilidad de que algo le quede en la cabeza o logre interesarlo.

    En fin con tanta diversidad, depende del docente preparar el mejor material posible, dictar la clase con la mejor disposición posible porque eso es lo que hace al docente ser el mejor en lo que hace. No poner demasiados contenidos, ni muy pocos y darle para adelante. Caminante no hay camino se hace camino al andar.
    En cuanto a los alumnos… habrá alguno que los haga sentir que valió la pena el esfuerzo, unos cuantos a los que realmente les sirva, muchos que solo habrán perdido el tiempo y alguno que otro que muchos años después se acuerde de algo que aprendió y le traiga buenos recuerdos.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>