Apprentices Patterns Parte 1/3

2015-09-07

En nuestro club de lectura hemos estado leyendo Apprenticeship Patterns. En general, me encanta la concepción que tiene de lo que es el Software Craftsmaship. Cómo aprendiz de este movimiento estoy aprendiendo mucho de este libro. El libro te expone una serie de patrones contextualizados con los cuáles puedes actuar efectivamente ante diversas situaciones que cómo aprendiz te encontrarás en tu camino hacia la maestría. Muchas de las cosas que el libro expone ya las ponía en práctica y está súper bien encontrarte con esto en un libro de aprendizaje ya que obtengo feedback y me encuentro con otros puntos de vista. No obstante, muchas de las prácticas de aprendizaje expuestas en el libro no las conocía o bien no terminé de verles el potencial hasta que las leí en el libro. A nivel general, lo que más me está aportando el libro es que después de haberlo leído seré mucho más efectivo a la hora de aprender. Y para mí aprender efectivamente es una de las habilidades más importantes para un craftsman.

Iré escribiendo los patrones que me voy encontrando en el libro ya que el leerlos me está permitiendo conocerlos pero el escribirlos aquí es el primer paso para interiorizarlos y empezar a practicarlos. Sin más, empiezo con el primer patrón:

YOUR FIRST LANGUAGE

Este patrón principalmente habla de la elección de tu primer lenguaje. Muchas veces haces esta elección basándote en un puesto de trabajo en el cuál quieres entrar. O incluso en el puesto de trabajo en el que ya estás. Otras veces sin embargo, simplemente eliges por el cuál empezar cuando estás dando tus primeros pasos en la programación. Lo más importante que transmite este patrón sin importar en cuál de estas situaciones estés es que este primer lenguaje debes dominarlo. De esta manera podrás centrarte en mejorar skills concretas de la programación.

Me parece relevante mencionar el hecho de que también te bases en los desarrolladores que tienes alrededor de ti para aprender un lenguaje. Recientemente decidimos aprender JavaScript por encima de Ruby, basándonos en que podremos exprimir más el conocimiento de nuestros mentores en el primero.

THE WHITE BELT

El problema presentado es que cuando empiezas a tener un amplio conocimiento sobre algo determinado (pongamos un lenguaje) te cuesta más adquirir nuevos conocimientos. Incluso más que cuando no sabías nada sobre el tema concreto. Ponerse el cinturón blanco va sobre olvidar lo que sabemos y reconocer que en este nuevo tema somos completos novatos. Habrá ocasiones que lo que hemos aprendido en un campo concreto no nos servirá en el que tratamos dominar ahora. En estos casos debemos aceptar que venimos de lugares muy distintos y que debemos tener la mente abierta para asimilar y entender el cambio. (Ejemplo: ¡No intentes programar en JavaScript cómo si fuese Java!).

Es un muy buen ejercicio intentar que todo lo que aprendemos nos enseñe a pensar de otra manera. Los frutos de ver otros puntos desde los cuáles enfocar los problemas podremos aprovecharlos incluso en las herramientas que ya habíamos dominado.

UNLEASH YOUR ENTHUSIASM

¡Desatemos nuestro entusiasmo! Nuestro entusiasmo como aprendices es lo que nos permite aprender a un ritmo tan rápido y entre más desatemos este entusiasmo a mejor ritmo aprenderemos. No debemos permitir que nadie nos quite la pasión por lo que hacemos. Cuando entramos en un nuevo equipo una de las principales cosas que podremos aportar es transmitir nuestro entusiasmo. Debemos intentar decir lo que pensamos ya que un punto de vista externo e inocente puede ayudar mucho al equipo a mejorar y cuestionarse sus prácticas u soluciones. No obstante, debemos ser conscientes de que hay ocasiones de presión en las cuáles debemos tener cuidado de no descentrar o retrasar al equipo.

Los aprendices son una parte esencial del Software Craftsmanship ya que ellos aportan su entusiasmo y ganas de aprender infectando a todos los demás. – Pete McBreen

CONCRETE SKILLS

Aunque una de las principales habilidades que tenemos los aprendices es aprender rápidamente, a veces no será suficiente. A lo largo del camino te puedes encontrar con empresas que quieren aprendices pero esperan algo más que el entusiasmo a cambio. El conocer tecnologías, haberte enfrentado a diversos problemas, conocer buenas prácticas de desarrollo… son skills que en tus primeros pasos dentro del equipo pueden ser muy útiles para que colabores aunque sea de manera indirecta en algunas ocasiones.

Una buena forma de escoger nuevas skills puede ser echar un vistazo a los CV de aquellos desarrolladores que aprecias y que tienen habilidades que te gustarían adquirir. Luego puedes practicar estas habilidades en pet projects, katas, leyendo…

EXPOSE YOUR IGNORANCE

No tener miedo a exponer nuestras debilidades e ignorancia es algo básico para poder mejorar. El exponer que no sabemos algo nos da la oportunidad de que un compañero, mentor y/o alma gemela pueda explicarnos y/o enseñarnos aquello que no entendemos. Cuando se nos encarga una tarea en la cual desconocemos cómo hacer algo debemos hacer ver que el proceso de aprendizaje también está dentro de la realización de esta. Exponiendo tu ignorancia es la única forma de que la empresa pueda ver tu habilidad de aprender y cuánto mejoras día a día. Además muchas veces al exponer tus debilidades también ayudas a tus compañeros, ya que tus preguntas pueden hacerles pensar e interiorizar mejor un concepto para poder explicártelo a ti.

A parte de preguntar otra forma de exponer tu ignorancia es publicar una lista con aquellas cosas que no entiendes. El objetivo es que esa lista se actualice a medida que te enfrentas a tus debilidades y aprendes de ellas.

CONFRONT YOUR IGNORANCE

El contexto de este patrón está relacionado con el patrón anterior. Has encontrado brechas en tu conjunto de habilidades pero no sabes muy bien cómo empezar. La solución es simple en vez de estar preguntándote por cuál empezar coge una cualquiera y empieza. Hay muchas maneras de mejorar en una habilidad concreta: leer artículos, leer libros, hacer katas (personalmente me gusta extender el cometido de una kata para poder practicar cosas concretas en ella), pequeños pet projects… Muchas veces no alcanzaremos un nivel muy alto en estas debilidades puesto que tenemos que invertir también el tiempo en otras. Pero te sorprenderá saber que muchas veces en las primeras 20 horas que le dediques a una debilidad podrás alcanzar un nivel competente en ella.

Además, lo más probable es que tus nuevos conocimientos revelen nuevas carencias ¡No olvides actualizar tu lista!

THE DEEP END

Este trata de no tener miedo de dar un salto. Habrá ocasiones que notarás la necesidad de añadir nuevos proyectos a tu portfolio y además que estos hayan sido un reto para ti. Aplazar la decisión lo único que hará es que nunca la tomes. Cuando tengas una oportunidad de poner tus conocimientos a prueba ¡Atrévete a dar el salto! Al enfrentarte a proyectos difíciles que te hagan dar el máximo y superar adversidades estamos hablando de un gran paso en tu camino. Pasar por esa experiencia puede abrirte muchas puertas. Esta es la manera de crecer. Debes ser capaz de crear mecanismo para obtener feedback con los cuáles detectar problemas inmediatamente en lugar de desmotivarte.

Todo esto no significa mentir con respecto a tus habilidades para obtener un trabajo que no eres capaz de realizar. Eso sería muy poco profesional e irresponsable.

RETREAT INTO COMPETENCE

En ocasiones sentirás que sabes muy poco o se te presenta un reto el cuál no avanza como te gustaría. En estos casos en los que te sientes inferior es momento de despejarte. Tómate un tiempo para desarrollar algo que ya has hecho antes y sabes cómo hacerlo. O incluso practica con una kata que ya hayas resuelto. Cada semana estamos mejorando y probablemente vemos algo que hicimos hace 2 meses y no nos guste nada. Este tipo de ejercicios hará que retomes la confianza. Al final del ejercicio te darás cuenta no sólo de que has sido capaz de desarrollar algo sino que encima lo haces mejor de lo que pensabas.

Muchas veces necesitarás dar un paso hacia atrás para dar dos hacia delante. Cuando estés en el desarrollo de una tarea y te ves saturado es un buen momento para dedicarle un rato a otra más sencilla. Es bueno que te pongas un límite de tiempo ya que el objetivo es recuperar la motivación para poder seguir. Por ejemplo: en las próximas 2 horas (o el resto del día) voy a refactorizar el código de la vista, limpiar los tests… Cuando termines tendrás las pilas recargadas y estarás dispuesto a darlo todo en el siguiente round.

 

Segundo post Apprenticeship Patterns

Tercer post Apprenticeship Patterns