La mejor forma de aprender a programar

No nos andemos con rodeos: la mejor forma de aprender a programar es programando. Es más, yo diría que es la única forma de aprender de verdad a hacerlo.


Esto puede parecer una perogrullada, algo obvio. Sin embargo no lo es tanto si examinamos detenidamente de qué manera aprende programación un porcentaje muy elevado de personas.


Muchos aspirantes a aprender un lenguaje de programación, tecnología o entorno nuevos lo que hacen es recibir clase en un aula.


Que quede claro que estoy hablando todo el tiempo de gente con poca o nula experiencia real en la tecnología concreta que está intentando aprender.


Ir a un centro a formarnos -o que los docentes vengan a nuestra empresa- tiene la principal ventaja de ser muy cómodo para el que se forma. En un tiempo reducido se reciben de manera condensada muchos conocimientos. Esto puede estar bien y ser lo más adecuado si ya tenemos mucha experiencia y queremos aprender rápidamente los fundamentos de una tecnología “para saber por dónde pisamos”. También si el objeto del estudio es sumamente concreto y lo que aprendemos es de aplicación directa a nuestro trabajo diario o a un proyecto.


Pero cuando estamos en un aula  lo que estamos haciendo es atender a un profesor, tratar de hacer rápidamente las prácticas que nos indique, e intercambiar preguntas -en el momento- con el docente. Éste tiene que repartir su atención además entre otras 10 o 12 personas que siguen el mismo curso (por regla general no es económicamente rentable hacer grupos de menor tamaño de 10 personas).


Además tenemos un tiempo limitado. Si el curso es de 30 horas docentes a realizar en una semana, tendremos 6 horas de clase cada día (con sus correspondientes descansos e ineficiencias de grupo), y ¿después qué? ¿Qué pasa al terminar?: pues generalmente que a partir de ese momento estaremos “solos ante el peligro”. Durante los días que dura el curso se nos somete a un bombardeo de información que no tendremos forma de asimilar y madurar en tan poco tiempo. Además es muy probable que no tengamos tampoco tiempo de practicar lo aprendido en solitario, más allá de los ejemplos guiados del aula.


¿Alguien cree seriamente que, sin ser un programador experimentado, uno se puede preparar para ser programador profesional en cualquier tecnología con 30 horas de clase? ¿Y presentarse y aprobar una certificación oficial?


Yo digo que difícilmente.


El cono de Dale


Edgar Dale fue un pedagogo estadounidense conocido por su famoso cono de la experiencia. Estudió las diversas formas de aprendizaje para analizar la profundidad de retención que se conseguía con cada una. Reflejó los resultados de su estudio en un Cono o Pirámide del aprendizaje que revela claramente la efectividad de cada método.


Esta es mi interpretación (con PowerPoint, no doy para más) del famoso Cono de Dale:


 Cono_de_Dale
Pulsa para aumentar


Cada franja del cono representa una forma de aprender. Las etiquetas de la izquierda muestran acciones que se realizan habitualmente cuando estamos aprendiendo programación (leer un libro, asistir a clase…) y  las de la derecha reflejan el porcentaje de efectividad de cada una de estas acciones.


Como vemos lo más efectivo es, claro está, el hacer uno mismo lo que está intentando aprender. Para ello, primero, necesitamos adquirir unas nociones previas mediante lectura, visionado de demostraciones prácticas, etc…


La mejor metodología de aprendizaje


Según lo anterior, creo firmemente que la mejor forma de aprender es la que he representado en el diagrama de flujo siguiente:


 SecuenciaAprendizajeTIC
Pulsa para aumentar


En una formación normal de aula disponemos de las partes superiores de la pirámide del aprendizaje, es decir, leer, oír, ver y oír + ver. Pero es mucho más difícil que tengamos las partes correspondientes a la base, que son las realmente efectivas.


Estas actividades de la base de la pirámide, bien hechas, serían las que están dentro del recuadro grande en el diagrama, y son inherentemente cíclicas: es un bucle del que no deberíamos salir hasta haber practicado lo suficiente.


Y esta es nuestra responsabilidad, no la del profesor. Sin mucho trabajo propio es imposible aprender bien, por muy bueno que sea el docente. El profesor en esta fase debe ser un apoyo para ayudarnos con las dudas que nos tienen que surgir necesariamente al practicar. Sin dudas no hay aprendizaje.


El problema para ejecutar la parte del bucle en un aula es el tiempo. Ni más ni menos. Por eso un curso técnico impartido en un aula es difícil que nos llegue a calar lo suficiente como para decir que estamos preparados.


e-Learning


Consideremos ahora el mismo curso que, en lugar de ser en un aula, lo recibimos on-line, a través de contenidos en una plataforma de e-Learning y con el apoyo de un tutor para resolver dudas y poder plantearle discusiones.


En la plataforma tendrías un material formativo teórico constituido por texto+imágenes, así como vídeos o demostraciones demostrando lo anterior en la práctica. Podremos volver sobre ellos tantas veces como queramos, sin tener que perdernos ningún detalle. Es importante que este material separe el grano de la paja, ofreciendo información relevante y ordenada que te sirva como guía durante el aprendizaje. Internet está lleno de material que podemos usar para aprender, pero es muy difícil encontrarle un hilo, una coherencia, por eso esta parte reviste una especial importancia.


Por otro lado no estamos supeditados a unas horas concretas para aprender, practicar o preguntar. Tenemos mucho tiempo para repetir el ciclo del aprendizaje práctico del diagrama anterior y fijar los conceptos.


Surgirán dudas. Estas dudas las tendremos que preguntar formulándolas de una manera bastante precisa, pues no es lo mismo que decirlas a la cara de palabra, y esto es otra forma más de aprendizaje, pues nos obligará a reflexionar y concretar los detalles de la tecnología.


El tutor contestará las dudas al mismo tiempo que seguimos practicando y/o estudiando en paralelo. No interrumpes el estudio (el tuyo y el de los demás) como en un aula donde las dudas son síncronas, ya que on-line la comunicación suele ser asíncrona (mensajería, foros). La excepción son casos muy particulares que puedan requerir de un diálogo en directo para una duda concreta difícil de resolver (chat, videoconferencia).


Este ciclo de aprendizaje práctico y auto-estudio guiado es el que considero que es más efectivo para aprender cualquier disciplina técnica.


Una vez que tienes las bases claras usando esta metodología, te han proporcionado en realidad los fundamentos para que puedas volar por tu cuenta, nutriéndote de los vastos repositorios de información que existen en Internet.


¿Y tú qué vas a decir, si te dedicas a eso?


Alguno a estas alturas estará pensando que, dado que mi empresa se dedica en gran parte a la formación on-line de programadores ¿qué voy a decir yo?


Sin embargo la cuestión es justo al revés: mi empresa se dedica con especial hincapié a la formación on-line para programadores precisamente porque creemos en que es la mejor manera de aprender este tipo de disciplinas. Por supuesto también impartimos formación presencial, pero en menor cuantía, y verdaderamente considero que en algunas materias o con determinado tipo de gente -ya experimentada- puede ser más rápida, y muy efectiva también.




Por supuesto, la formación on-line no será efectiva si no hay un compromiso y un interés por parte del alumno, e insistimos mucho sobre ello en los papeles de metodología que le enviamos a los alumnos al empezar un curso. Pero es que es la única manera.


Me consta que hay muchísima gente por ahí que han tenido malas experiencias con la formación on-line. Es más, a nosotros nos vienen bastantes “rebotados” de otros proveedores, lo cual es una suerte puesto que lo normal sería que no quisieran volver a saber nada de formación on-line, dada la mala experiencia previa.


El hecho de que la formación on-line no sea todavía la principal vía de formación de los programadores en particular y los técnicos en general no deja de llamarme la atención, puesto que, por todo lo expuesto, el e-learning tutelado de calidad es sin duda el método más efectivo y rentable de aprender.


Y tú ¿Qué opinas de todo esto? ¿qué experiencia has tenido con la formación on-line?


Me interesará mucho saberlo.

Sin categoría

3 thoughts on “La mejor forma de aprender a programar

  1. Es muy interesante el estudio que haces de todo este asunto.

    Estoy de acuerdo en parte, pero creo que habría que matizar ciertos aspectos.

    Demuestras de una manera bastante sólida la efectividad de la base de la pirámide y estoy de acuerdo con que esa base es la que más calidad de aprendizaje aporta. Ahora bien, el matiz viene por el hecho de que esa pirámide sólo representa rendimientos de absorción puros en una campana de vacío, sin las consideraciones que rodean a los seres humanos reales. Estas consideraciones pueden ser el hecho de que no todo el mundo tiene la disciplina y responsabilidad como para sentarse a seguir un curso de cabo a rabo al que nadie le obliga a asistir ni tiene el más mínimo compromiso adquirido (más que su pago). Puede parecer absurdo, pero seguro que estás de acuerdo conmigo en que es así, de hecho lo mencionas en el post. También puede ocurrir que haya gente que quiere que se incida de otra manera, con otros ejemplos sobre algo concreto porque no lo entiende, esto puede resolverse en el aula, etc.

    Por otro lado, estoy tan de acuerdo con lo expresado respecto al valor de la base de la pirámide que me ha hecho reflexionar sobre que tal vez sea eso lo que hace que la mayoría de expertos actúen de forma autodidactas llegado a un nivel y su rendimiento asimilando nuevos conceptos sea tan alto. Es decir, normalmente un experto se forma a sí mismo cuando aparece AJAX leyendo e investigando sobre el tema y trabajándose el XMLHttpRequest a pelo para ver cómo funciona todo. Quién le enseña? él mismo. Pero ese experto cumple la condición necesaria de antes: aparte de una gran base, tiene mucha disciplina y responsabilidad derivada posiblemente de la pasión y curiosidad que le despierta el tema, lo que le lleva a desmenuzarlo hasta los átomos y a dominarlo. Esta motivación puede ser bien diferente a la de otra persona cualquier que quiera aprender algo.

    Es decir, la conclusión es que puede ser más cómodo para muchas personas con sus circunstancias personales, de tiempo, disciplina personal y motivación seguir un curso presencial que online (sí, aunque el online sea más flexible).

    Por otro lado, también estoy de acuerdo en que asistir a una charla, un seminario o un curso sobre algo concreto cuando ya se tiene mucha experiencia es algo ideal porque la absorción es muy rápida si el formador es bueno. Se va a tiro hecho, las preguntas son muy orientadas y pulidas y hay una gran base y background comunes que facilitan la transmisión del conocimiento y su recepción.

    El último matiz que te hago es sobre el intangible del formador y cómo enfoque la formación. En mi opinión, lo más valioso de un curso presencial, aparte de los contenidos en sí mismos, son las experiencias reales del formador sobre lo que explica.

    Es decir, lo ideal es que el formador conecte lo que explica con «una vez en un proyecto en el que participé se almacenaban en Session objetos no serializables por diseño y cuando hubo que escalar a una granja de servidores no se podía serializar la Session para el State Server y hubo un problema importante de diseño con la arquitectura que tenía que haberse tenido en cuenta al principio». Eso vale mucho, es un gran valor añadido que sólo se puede tener en un curso presencial, el anotar la formación con diversas píldoras de este tipo que desgranen experiencias reales, indicar por dónde ir y por dónde no ir, lo que tú consideras más conveniente según tu experiencia, etc. Son las clásicas cosas que ahorrarán tiempo y dan un conocimiento muy difícil de conseguir con material teórico, ya que sólo se adquiere en la práctica. Es por eso que siempre digo que un formador debe conocer bien a fondo y tener experiencia en lo que enseña, porque si no, no podrá completar la experiencia formativa con esos intangibles de valor añadido que, sinceramente, para mi es de lo que más vale.

    Cuánto te ahorras si alguien te dice: no uses @@identity en una BBDD SQL Server sino SCOPE_IDENTITY(), porque una vez en un proyecto con replicación SQL con 10 publicaciones y 200 suscriptores de un sistema crítico, cascó todo el sistema porque un procedimiento almacenado usando @@identity cogía identificadores incorrectos que habían sido creado por debajo por los triggers de la replicación, no por la aplicación.

    Cuánto vale eso? Ése es el tipo de comentario y experiencia que espero en un curso de SQL Server cuando se explique cómo obtener un ID de una nueva entrada creada en una tabla. Creo que en esto, la figura del formador es insustituible por algo online, con tutor o no. Una cosa es resolver dudas y otra enriquecer la formación constantemente con este tipo de ejemplos.

    Creo que ambos tipos de formación tienen sus ventajas e incovenientes, no diría tan claramente que uno es superior a otro 🙂

    Muy buen post e interesante estudio.

  2. Hola Jose:

    Muchas gracias por la aportación.

    Estoy totalmente de acuerdo contigo en tu reflexión y, de hecho, en el texto ya pongo como condición indispensable:

    «la formación on-line no será efectiva si no hay un compromiso y un interés por parte del alumno, e insistimos mucho sobre ello en los papeles de metodología que le enviamos a los alumnos al empezar un curso»

    En ese caso pienso que es mejor la formación presencial, ya que aprenderán menos pero al menos aprenderán algo.

    En cuanto a lo de los auto-didactos, también lo digo en el post:

    «Una vez que tienes las bases claras usando esta metodología, te han proporcionado en realidad los fundamentos para que puedas volar por tu cuenta, nutriéndote de los vastos repositorios de información que existen en Internet.»

    Internet, libros, seminarios cortos, etc… una vez que tienes las bases y experiencia suficientes puedes volar sólo, aunque pudas recurrir a un curso de vez en cuando también.

    Finalmente, respecto a lo que aporta el profesor en el aula te diré que, efectivamente es así pero que también en muchos casos -lamentablemente- el que te imparte la formación presencial es formador pero no tiene experiencia práctica en el mundo real, por loque poco puede aportar en ese aspecto.

    Además, en formación on-line también existen muchas de esas aportaciones. Yo puedo hablar por los cursos que tutelo yo, pero aparte de tratar de incluir consejos de ese estilo en el material teórico, en los foros y mensajes con los alumnos doy muchos consejos y «trucos» de ese estilo, muchos de los cuales luego convierto en post en este blog. Es más, lo bueno de la formación on-line en este aspecto es que vas enriqueciendo los cursos con las aportaciones que surgen de interaccionar con los alumnos, añadiendo enlaces nuevos, preguntas frecuentes e incluso he llegado a añadir puntos del temario o incisos en el índice que sirgen de esta experiencai e interación conlos alumnos.

    Lo bueno de esto en e-learning es que todos los alumnos ACTUALES Y FUTUROS sacan partido de esto, no sólo los que están en el momento oyendo a un profesor, que quizá en la siguiente clase no diga lo mismo.

    Yo no soy una persona de absolutos en absoluto (jeje), quiero decir, que no creo que nadie jamás esté en la posesión de la verdad absoluta ni que tampoco haya una receta milagrosa para nada en esta vida. Y la formación no es una excepción, por lo que el e-learning no es la solución para todo el mundo ni para todo tipo de formación. Ni mucho menos. Pero en determinadas disciplinas como la programación, con alumnos que estén motivados para trabajar, estoy convenido que es la mejor manera de aprender 🙂

    Un saludo!

    JM

  3. Buenas!
    Estoy bastante de acuerdo con el artículo y con las apreciaciones de José.

    En mi caso puedo opinar des del lado de quien ha impartido varios cursos de formación presenciales (aunque ahora hace tiempo que estoy ‘fuera’) y en general puedo decir que en un gran porcentaje esos cursos sirven para muy poco.
    Pero muchas veces no es ni el formato del curso lo que condiciona el aprendizaje, sinó elementos externos como:

    .) La motivación de los asistentes
    .) Niveles diferentes (gente con conocimientos previos, gente sin ellos)
    .) Nivel del formador

    Yo he dado muchos cursos que se dan «para rellenar», porque la empresa prometió x horas de formación que deben cumplirse sí o sí. Así la empresa puede cobrar subvenciones y todos contentos… bueno, todos no: a algunos de los asistentes les da igual el curso y es difícil lidiar con ello.

    Con lo de los niveles diferentes ocurre lo mismo: muchas veces en los cursos de formación los «requisitos previos» no están especificados, por lo que tienes a gente que no sabe apenas nada del tema junto con otra que domina bastante más: Y como adaptas el curso? Que haces si 3 se quedan atrás y otros 3 se aburren?

    Y lo del nivel del formador… bueno, sólo decir que no siempre tiene el nivel que se supone que debería tener 🙂

    Pero aún así, un BUEN curso presencial, con un buen formador, alumnos motivados y alineados y temario específico creo que es un buen recurso. Pero un recurso que debería ir enfocado a buscar la excelencia en ciertos aspectos MUY concretos, más que en aprender. Para aprender se requiere TIEMPO, lo que NO hay en un curso presencial.

    Quien realmente aprende, es quien decide dedicar horas él mismo, leyendo libros, blogs Y PRACTICANDO un montón de veces hasta que se le van quedando los conceptos… hasta que aprende.
    Para estas personas un soporte en curso on-line les puede venir bien, no lo niego, pero no se: me da a mi que en los tiempos que corren, con la de blogs buenos que hay por ahí y channels9… quien quiere se busca la vida.

    Por desgracia hay mucha gente que se cree que por realizar un curso de 20 horas ya sabe algo, y como además tenemos la desgracia de un sistema de certificaciones patético que da soporte a esta visión… pues así vamos.

    Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *