Modelos de aprendizaje para el programador ágil ¿Cómo ser efectivo en nuestro aprendizaje constante?

Cómo podemos evolucionar como profesionales en nuestro sector y cómo abordamos o gestionamos el conocimiento que podemos encontrar a nuestro alrededor, es algo que personalmente me lleva obsesionando desde hace mucho tiempo.

Con la carga habitual del trabajo, la vida personal y el resto de actividades que componen nuestro día a día, es todo un reto poder diseñar un plan de crecimiento profesional a corto, medio y largo plazo de una forma verdaderamente efectiva.

En este artículo, analizaré algunas de las prácticas con las que he experimentado en algún momento de mi carrera profesional y que en mi opinión, pueden ayudar a conseguir centrar nuestros objetivos de aprendizaje.

Motivaciones

Estamos en un sector en el que el ritmo de evolución de los entornos y tecnologías es verdaderamente difícil de seguir.

Evidentemente, estamos en un sector en el que el ritmo de evolución de los entornos y tecnologías es verdaderamente difícil de seguir. Por una parte, esto hace que poco a poco nos especialicemos de alguna forma en una serie de disciplinas en las que queremos alcanzar la maestría. Para llegar a dicha maestría, debemos completar un largo camino en el que tendremos que dedicar muchas horas de nuestro a tiempo antes de poder ser considerados de alguna forma maestros en la materia. Es en este contexto en el que estamos pensando a largo plazo.

Esta especialización tan clara nos lleva a colgarnos etiquetas que nos imponemos a nosotros mismos y que nos marcarán profesionalmente en nuestro entorno y proyectos. Por supuesto, no digo que la especialización sea mala para nada, sino que existen una serie de skills que analizaremos más adelante que añadirán valor a mi perfil profesional en el futuro con independencia del entorno o el framework que esté utilizando hoy. ¿Qué más da si ahora estoy trabajando con Android, Python o PHP? Como profesional, estos entornos no tienen porque definirme.

Y es que hay muchas teorías sobre la "zona de confort", "pensar fuera de la caja" y otras situaciones en las que se busca que el trabajo en distintas disciplinas pueda con el tiempo enriquecer nuestra área de interés personal, complementándola y haciéndonos en definitiva profesionales más completos y capaces de generar soluciones más globales.

Si crees como yo que hay que trabajar para todos y cada uno de los estadios del proceso de aprendizaje, sigue adelante y exploremos posibilidades juntos :)

Mecanismos generales de aprendizaje

conocer como funcionan estos modos de procesamiento del conocimiento por parte de nuestro cerebro nos puede ayudar a crear las condiciones necesarias para conseguir ser más efectivos en el modo de aprendizaje

En el excelente curso de Coursera "Learning how to learn", podemos aprender como funciona a nivel cognitivo el proceso de aprendizaje humano cuando afrontamos tareas ya aprendidas de nuestro día a día, en contraposición a la incorporación de nuevo conocimiento o habilidades que no poseemos.

En pocas palabras, nuestro cerebro actúa en dos modos muy distintos y nos permite de esa forma ser más efectivos en cada uno de estos escenarios. El primero es más mecánico y se activa cuando ejercitamos habilidades ya adquiridas frente al segundo que es más deductivo y que aparece cuando nos preparamos para aprender algo nuevo. Es por esto que, conocer como funcionan estos modos de procesamiento del conocimiento por parte de nuestro cerebro nos puede ayudar a crear las condiciones necesarias para conseguir ser más efectivos en el modo de aprendizaje, haciendo que nuestro cerebro esté más tiempo en su modo "aprender".

NOTA: Si te gusta la perspectiva de "aprender a aprender", quizá te interese saber que uno de los libros en los que se basa el curso es A Mind For Numbers.

Al margen de entender el proceso cognitivo con el fin de sacarle el máximo partido posible, otro aspecto a tener en cuenta es en qué nivel de experiencia nos encontramos ahora mismo dentro de nuestros propósitos de maestría a largo plazo. Es curioso, pero raramente esta percepción coincide con la realidad de forma exacta tal y como analiza Pragmatic Thinking and Learning.

En este libro, se explora el Dreyfus Model of Skill Acquisition, el cual define una escala de referencia en la que situarnos en función de nuestras habilidades adquiridas (en el libro se sugiere que en muchos casos la práctica deliberada nos puede llevar a la maestría en un plazo no muy inferior a las 10.000 horas de dedicación en un área determinada), dejándonos ver que en muchas ocasiones creemos ser expertos en una materia cuando no somos más que principiantes avanzados o simplemente hemos conseguido algo de competencia.

Planificación personal

Está claro que únicamente disponemos de unas horas para dedicar al proceso semanalmente, así que es importante ser efectivo

En base a los mecanismos descritos anteriormente podemos planificar nuestro tiempo de aprendizaje a corto, medio o largo plazo.

Está claro que únicamente disponemos de unas horas para dedicar al proceso semanalmente, así que a continuación me gustaría compartir con vosotros alguna de las formas de planificarnos que más efectiva ha resultado ser en mi caso (evidentemente, no lo toméis como un dogma, ya que este tipo de técnicas pueden tener un efecto distinto según la persona o el contexto).

El principal objetivo consisten en prestar atención a qué parte de nuestro tiempo dedicamos al aprendizaje. Como a largo plazo queremos convertirnos en maestros en nuestra área y sabemos que este proceso será costoso, podemos ir sumando conocimientos poco a poco dedicando la mitad de nuestro tiempo disponible. Durante esta porción de tiempo, iremos incorporando a nuestro background capacidades que nos ayudarán a largo plazo y que no dependen del entorno o lenguaje en el que voy a trabajar: Arquitectura, Patrones, Testing, paradigmas de desarrollo como orientación a objetos, programación funcional o programación reactiva son algunos ejemplos representativos.

Al mismo tiempo, como no queremos descuidar el medio plazo, comenzaremos a adquirir conocimientos que tengan una durabilidad más baja pero que me ayuden a complementar mis habilidades principales con aspectos más técnicos pero igualmente necesarios. En este sentido podemos incluir conocimientos de base de datos, lenguajes en los que estoy centrado, herramientas para mi entorno de desarrollo ágil, nuevos protocolos, etc, dedicando una porción del tiempo más reducida que en el caso anterior y que puede estar alrededor de una tercera parte.

Por último y para satisfacer las necesidades técnicas más concretas, en el tiempo restante dedicaré mi tiempo de estudio a frameworks específicos que necesite, lenguajes nuevos o entornos de los que aún no se nada, pero de los que me gustaría tener al menos algo de criterio en el futuro. Podemos incluir incluso temas no relacionados directamente con tecnología y sí con el diseño, las artes, el UX, organización y colaboración en equipos, etc, con el fin de no renunciar al pensamiento paralelo y/o a pensar fuera de la caja.

NOTA: El reparto del tiempo disponible que hemos realizado es meramente ilustrativo y no debe ser tomada al pie de la letra, ya que en función de nuestra situación u objetivos deberemos adaptar el proceso de forma conveniente.

Gestión de materiales

Con el fin de llevar un tracking de todos los materiales que emplearemos en cada uno de nuestros escenarios de foco, es interesante trabajar con herramientas como Pocket, la cual nos permite almacenar, clasificar y etiquetar los contenidos que queremos consumir. Disponer de etiquetas como longterm, mediumterm o shortterm pueden ayudarnos en el proceso de clasificación.

En cualquier caso, sea vía Pocket o con cualquier herramienta, no viene mal tener unas reglas de adición de contenido a la misma con el fin de que no metamos contenido sin parar y luego seamos totalmente incapaces de procesarlo.

En este sentido, una manera de mantenerlo bajo control puede ser la siguiente: Encontramos un recurso interesante y antes de nada hacemos una lectura en diagonal del mismo. Si el contenido se puede procesar al instante y extraer la idea en menos de 5 minutos, lo consumimos y no lo añadimos a la pila, si en la exploración realizada vemos que es interesante pero largo, entonces ya decidimos añadirlo a Pocket y lo planificamos según el esquema de etiquetas que hayamos decido.

Esto mismo es factible en el caso de los vídeos de charlas o conferencias en los que habitualmente la decisión de ver un vídeo supone un "compromiso" de 40 minutos a 1 hora de nuestro tiempo disponible (un gran compromiso en realidad). Para evaluarlo podemos hacer un visionado en diagonal, el cual podría realizarse dando algunos saltos y visionando partes concretas o pasando parte del vídeo a una velocidad más elevada.

Mentoring

Como en nuestro aprendizaje no tenemos que estar siempre solos, hemos podido comprobar con los años cómo la aparición de la figura del mentor puede acelerar en gran medida el proceso de aprendizaje.

Dentro de Agile como disciplina general, es sorprendente lo presente que está la figura del mentor, el cual puede guiar a sus aprendices en el proceso de mejorar como desarrolladores con el fin de que puedan ganar experiencia de forma rápida y efectiva.

Lamentablemente, este modelo no está del todo extendido, por lo que tendremos que acudir a las comunidades locales de nuestro interés para buscar este tipo de figuras si en nuestro entorno habitual o laboral no están disponibles.

Proyectos como la Devscola de Valencia son un claro ejemplo de este tipo de iniciativas que se promueven dentro de la comunidad sin un coste asociado.

Aprendizaje colectivo

Al margen de tener la suerte de encontrar un mentor o de cómo puedo gestionar mi tiempo como aprendiz, existe un último escenario en el que puedo seguir desarrollándome: Las actividades alrededor de las comunidades. El aprendizaje colectivo.

Katas y Coding Dojos

Las Katas son un mecanismo por el cual podemos ejercitar nuestras habilidades con el código afrontando un problema cuya complejidad permite que nos centremos en cómo hacemos las cosas en lugar de en resolver el propio problema. En este sentido, podemos aprender mucho asistiendo a los Coding Dojos que organizan algunas comunidades locales con el objetivo de practicar con una Kata establecida previamente haciendo pair-programming y TDD.

Durante estos practicas deliberadas, tendremos la posibilidad de aprender nuevas técnicas programando con otros, podremos probar distintos lenguajes, distintas aproximaciones al problema o incluso distintos paradigmas de programación. Es una manera segura y divertida de aprender.

Mob Programming

Quizá estamos acostumbrados a las revisiones de código en las que mediante algún mecanismo como el "pull request", revisamos el código del resto de nuestros compañeros intentando aportar nuestro conocimiento a la hora de mejorar la calidad del mismo. Este espacio en el que entre todos razonamos acerca del código del proyecto puede potenciarse aún más si, además de revisar cada uno el código individualmente, nos reunimos todos delante de un proyector y lo hacemos juntos. A esto se denomina "Mob Programming" y si aún no lo habéis probado en vuestros equipos, os aseguro que es una de las maneras más productivas que he visto de hacer equipo, compartir una serie de criterios y maneras de ver el código y, en definitiva, de revisar y planificar el refactoring de las partes de nuestro código que lo requieran.

Conclusiones

La gestión del proceso de aprendizaje puede ayudarnos a cimentar nuestro futuro éxito profesional. Conocer nuestras limitaciones y habilidades es fundamental a la hora de planificarnos, así que reflexionar acerca de cómo lo hacemos o de cómo lo vamos a hacer en el futuro nos puede ayudar a optimizar nuestro tiempo, por muy limitado que sea.

¿Estás preparado para pasar al siguiente nivel?

Ver todos los comentarios en https://www.genbeta.com

VER 0 Comentario

Portada de Genbeta