domingo, junio 11, 2006

Otro tutorial más...

El exceso de información acerca de alguna cosa puede llevar fácilmente a la entropía. Este riesgo se corre frecuentemente en la comunidad de el software libre y más cuando se refiere a lenguajes de programación. Cada cual tiene una aproximación diferente a la enseñanza de este o de aquel lenguaje y por ende, aparecen cien mil quinientos treinta tutoriales y manuales 'alternativos' (asumiendo que haya uno principal). Todos terminan diciendo casi lo mismo, algunos se enfocan en algunos aspectos, otros dicen las mismas cosas en otro orden...


Como estoy metido en esto de la enseñanza de lenguajes de programación -como profe y como simple gomoso- me concierne hondamente eso del tutorial y creo que sería útil expresar la manera en la que creo -según creencias y experiencias- deben estar ordenados, estructurados o que contenido deben tener los tutoriales, aunque cien mil quinientos treinta otros profes, gomosos y/o desocupados con buenas intenciones hagan lo mismo.


Los contenidos

Hay tres elementos que identifico en los tutoriales que me han gustado, es decir, que han sido efectivos, y si no, al menos divertidos.

  1. La introducción: Como buen curioso, me gusta ver que es y de donde viene lo que estoy aprendiendo, de manera que una introducción descriptiva e histórica es un gancho para el curioso.
  2. Los ejemplos: Los métodos de trabajo, sintaxis, opcodes, objetos, etcétera deben ser demostrados en contexto, dentro de un programa prefabricado, de manera que se pueda ver cómo se interrelacionan los elementos y se construyen los programas (patchers, scripts o similares).
  3. Los proyectos: Nada se aprende si no se aplica, así las aplicaciones iniciales sean banales (no más piensen en el omnipresente hello world!). Son una especie de exámenes para el autodidacta, en el que se tiene que poner a prueba la creatividad con los elementos ejemplificados.


Tres ejemplos de estructuras de la lección

Podríamos dividir el tutorial en dos niveles grandes, el bajo, de la lección particular y uno alto de la organización del conjunto de lecciones. Me gustaría citar tres ejemplos de tutoriales autodidácticos que conozco y que me han parecido en cierta forma efectivos, de los que puedo inferir tres estructuras típicas de lección, con ligeras similitudes y diferencias.

  1. La lección es el ejemplo: los toots de Csound. En este caso, se muestra el código y se describe que es lo que hace, la tarea del autodidacta (me parece mejor que alumno) es copiar el código y hacerlo funcionar (1). De alguna manera no se ve una exhortación explícita a hacer alguna código por fuera del marco del toot.
    Nota: lo que más me gusta independientemente de sus cualidades pedagógicas es el nombre 'toots'.
  2. Ejemplos + proyectos: Los tutoriales de Max. Aquí hay ejemplos precocidos(2) intercalados con ejercicios más o menos de libre realización. Estos tutoriales son especialmente de mi gusto por varias razones, pero aparte de la modularidad, el estar separados en fragmentos autocontenidos es el humor.
  3. La lección es el proyecto: los tutoriales de las aplicaciones de Macromedia. Estos tutoriales están completamente basados en el proyecto. Se propone un proyecto (por ejemplo, hacer una animación interactiva en Director con ciertas características particulares) que se realiza paso a paso -sobre la aplicación. Es efectivo, pero me parece que estimula poco la creatividad por lo determinístico del proyecto.


Organizaciones de alto nivel

Aunque parezca que estoy hablando de síntesis granular, no. Sigo hablando de tutoriales ;-). Como se dijo arriba, la organización de alto nivel es la manera en la que están organizadas las lecciones (o bien, los conjuntos de lecciones más cercanas) unas con relación a las otras.

Aquí se me ocurren de primerazo dos tipos de organizaciones: Lineal y no lineal.

La organización lineal tiene las lecciones dispuestas en un orden -decidido por el redactor- de complejidad o de prerrequisitos para la siguiente. Este tipo de organización es muy práctica para principiantes, ya que se da una guia paso a paso para el entendimiento del lenguaje. En cuanto a los lenguajes de programación, el principio es casi siempre el hello world o algo similar.

Algo que me gusta bastante de esta organización es que si se es lo suficientemente astuto -y por que no, intrépido- se puede hacer una curva de enseñanza que poco a poco vaya dependiendo menos del profesor-tutorial y dando paso a proyectos cada vez más libres, en los que la invesigación propia sea determinante. Como dice Murray Schaffer:

(...)La primera tarea del maestro es programar su propia extinción (3).
La linealidad de un tutorial puede acompañar fácilmente un proceso así y es bastante práctica a la hora de ser utilizada en un entorno de clase, porque se puede decidir hasta donde llegar, dependiendo del progreso del conjunto profesor-alumnos.

La organización no-lineal no tiene un orden específico y a mi parecer presume conocimientos previos para las lecciones. Antes de seguir, no se tome que tomo esta preasunción como algo malo, símplemente es otro tipo de proceso. Un tipo de instructivo al que se podría asimilar esto sería un manual de referencia altamente ilustrativo, pero hay un texto en particular al que me gustaría más asimilar esto, las conferencias de física de Richard Feynman, en las que no recuerdo bien si el mismo Feynman o alguno de sus coeditores dice que las lecciones no tienen un orden particular, pero que presumen un conocimiento de álgebra y de las unidades de medida.

Otro aspecto interesante de la no-linealidad es la posibilidad de un tutorial hipertextual que se adapte a las búsquedas y necesidades del autodidacta.

En cualquier caso de no-linealidad, las lecciones deben estar bastante puntualizadas y ser casi completamente autocontenidas, lo que aumenta su tamaño y puede darse para varios niveles de organización adentro de las lecciones mismas.


Todo esto para...

Toda esta cháchara el respecto de cómo creo se debe organizar un tutorial tiende a la necesidad de expresar las dudas, planes y alguna que otra certeza -si es que las hay- con respecto a la construcción de un tutorial en línea de Pd, que llevo rato escribiendo, aunque barajando sería mejor palabra. En este momento sólo se ha publicado la introducción y un apéndice, pero ahí, va, ahi va...

Siga este vínculo para llegar al tutorial en progreso.

Como siempre, se reciben y solicitan comentarios.


(1) En el caso particular de Csound el poner a sonar los ejemplos -o cualquier código- puede ser de por sí un reto más o menos difícil para el principiante, dependiendo del entorno o la plataforma.
(2) Léase: preporgramados o prefabricados, yo sé... es otra fijación gastro-tecno-erótica...
(3) Schaffer, R. Murray, El rinoceronte en el aula, pp. 17, ed. Ricordi Americana, Buenos Aires, 1998; publicación original, The Rhinoceros in the Classroom Universal Edition, Canada, 1975

No hay comentarios.: