Apprentices Patterns Parte 2/3

2015-09-14

Esta es la segunda parte de mi resumen de los patrones del libro Apprenticeship Patterns. Aquí están contenidos los patrones de los capítulos 3 y 4 (Walking the Long Road y Accurate Self-Assessment):

THE LONG ROAD

Este patrón refleja que el camino hacia la maestría es un camino que dura toda la vida. Como bien decía George Leonard: “Cada paso que das hacia la maestría, tu objetivo se alejará dos”. Por esto debemos aprender a disfrutar de este viaje. Debemos priorizar oportunidades que nos ofrecen un crecimiento profesional por encima de aquellas que nos ofrecen más dinero o ascensos a posiciones con más liderazgo. Nuestro objetivo es estar al lado del código, separarnos de nuestra pasión no puede ser considerado un ascenso profesional para nosotros. A lo largo del camino iremos aprendiendo nuevas habilidades, metodologías, prácticas… Alcanzaremos un profundo entendimiento del desarrollo del software. Ahora bien el camino será largo y debemos ser constantes y estar motivados. Un aprendiz debe tener un plan a largo plazo que nos servirá de mapa para no perdernos por esta larga carretera.

CRAFT OVER ART

Definimos el desarrollo del software como artesanía más que como arte. “El objetivo de la artesanía es crear cosas útiles con toques decorativos. Sin embargo, el arte es crear cosas buscando puramente la belleza” – Richard Stallman. La prioridad número 1 es entregar valor al cliente por encima de nuestros propios intereses. Ahora bien debemos ser profesionales y esto significa que todo el software que hagamos debe cumplir con los mínimos de calidad propuestos por toda la comunidad. Suplir las necesidades del cliente es lo más importante, por ello nos preocupamos también de hacer software de calidad. Por varios motivos: el software será más fácil de modificar, entender y escalar; aumentará la productividad; aumentará la mantenibilidad; podremos adaptarnos mejor a los cambios…

Por lo tanto obtenemos que la utilidad y la belleza no están en caminos separados. Entre más útil sea nuestro producto, más importante será que presente un alto nivel de calidad.

SUITANABLE MOTIVATIONS

Es importante mantener nuestra motivación alta. Habrán días en los que todo lo que hacemos nos salga bien y a la primera. Estos días son maravillosos. Pero normalmente nuestros días nos son así. En muchas ocasiones estaremos resolviendo problemas complejos que no son triviales y nos lleva días arreglar, además puede ser que no estemos muy a gusto con lo que estamos haciendo. En estos casos se hace esencial encontrar nuevas motivaciones para nutrir nuestra pasión.

Nuestra motivación debe estar alineada con seguir el camino descrito en The Long Road. Ya que si no es así caeremos en el estado más peligroso en el que puede estar un desarrollador: el conformismo. El conformismo puede hacer que dejemos de aprender, avanzar, disfrutar del viaje y mejorar como aprendices artesanos. Nuestras motivaciones no tienen que depender de lo que otros piensen sino de lo que sintamos nosotros mismos.

NURTURE YOUR PASSION

Tenemos la gran suerte de que apasionamos lo que hacemos. Es fundamental que consigamos que nuestra pasión crezca además de protegerla, ya que en mi opinión es una de nuestras skills más valiosas. En este patrón se muestran unos tips con los cuáles podemos proteger y aumentar nuestra pasión:

  • Work on what you like.
  • Busca Kindred Spirits.
  • Estudia los clásicos.
  • Dibuja tu propio mapa.
    Una forma de poner en práctica este patrón es preparar temas que te motivan para hablar con los compañeros de trabajo en las horas muertas.

DRAW YOUR OWN MAP

Este va principalmente de planificación. En lugar de intentar conseguir objetivos muy altos debemos intentar dividirlos en pequeños pasos asumibles de conseguir y actuar para conseguir el pase al siguiente nivel. Esto nos permitirá obtener feedbak que podremos utilizar para reconstruir nuestro mapa. Nosotros somos los responsables de avanzar y conseguir llegar a nuestro siguiente paso. Sólo de esta manera conseguiremos que lo que al principio eran sueños en nuestro mapa se convierta en realidad. Cada aprendiz debe trazar su propio mapa ya que todos estamos en el camino hacia la maestría pero cada uno buscamos nuestra mejor ruta para seguir en el camino. Cada vez que nuestras circunstancias y valores cambian debemos replantearnos nuestro mapa.

USE YOUR TITLE

No permitas que tu título te afecte. Al final debes ser consciente de que estos títulos sirven para medir tu empresa no a ti mismo. Debes ser consciente de que un título alto dentro de tu empresa no significa que seas el mejor en ella ni que no tengas que seguir aprendiendo. Un título bajo tampoco significa que seas malo. No dejes que ninguna de estas circunstancias no te permitan seguir tu camino. Tu descripción como desarrollador está más relacionada a cómo trabajas, a tus skills, tus conocimientos, tus debilidades… Una forma de evaluar tu título es escribir en una hoja lo que haces en tu trabajo exactamente y reflexionar sobre lo que haces y sobre que pensarías tú de alguien con esa descripción de su trabajo.

STAY IN THE TRENCHES

¡Permanece en las trincheras! Se te ofrece un ascenso que significaría alejarte de la programación. Esta oferta probará tu disposición de caminar The Long Road. ¡Haz lo que apasionas! trabaja con tus superiores en encontrar alguna forma alternativa de compensarte. Permanecer en las trincheras es una forma de Nurture Your Passion. Si la promoción te permitiese seguir programando recuerda lo mencionado en Use Your Title.

“Tan pronto como una persona pare de practicar, su maestría desaparece” – Pete McBreen.

BE THE WORST

Busca la manera de acceder a un equipo en el cuál seas el desarrollador más débil. En este equipo tendrás una gran oportunidad para mejorar y aprender. Trabajar con desarrolladores mejores que tú te proporciona la oportunidad de encontrar mentores de los cuáles aprender. Además también hace que te des cuenta de todo lo que te queda por aprender. Lo mejor ante esta situación es no deprimirse sino todo lo contrario. Tienes un gran equipo a quien preguntar por dónde seguir y que aprender. Esto acompañado de tu motivación hará tu aprendizaje sea más productivo. El uso de este patrón puede verse egoísta y por ello es necesario acompañarlo de los patrones Sweep the Floor y Concrete Skills.

FIND MENTORS

“Uno de los primeros pasos que tiene que dar un aprendiz artesano es encontrar a un artesano de quien aprender” – Pete McBreen. Busca a aquellos que estén por delante de ti y aprende de ellos. Es fundamental encontrar un mentor. Puedes encontrar mentores en eventos de alguna comunidad, conferencias, listas de correo… No tengas miedo de preguntarles si puedes ser su aprendiz, muchos estarán encantados de aceptarte. Busca un mentor cuidadosamente, siendo un aprendiz es difícil notar quien es realmente un gran software craftsman. La elección de un mentor es algo que va a ser determinante en tu aprendizaje. No obstante, debes tener en cuenta que algunas veces un mentor te podrá dedicar más tiempo y otras menos. Antes de evaluar la mentorización de un artesano hacia ti, plantéate si le estás pidiendo demasiado. El principal responsable de tu aprendizaje eres tú. Debes asumir que un mentor como todo artesano también tendrá sus debilidades, no asumir esto puede llevarte a no aprender más de alguien que todavía tiene mucho que ofrecerte.

KINDRED SPIRITS

Encontrar aprendices recorriendo nuestro mismo camino es una forma de coger aún más impulso para recorrerlo. Tener un compañero con quien aprender hace que el aprendizaje sea más productivo. Os transmitís conocimiento constantemente. Podrás enseñar lo último que has aprendido a tus compañeros y viceversa. Ellos te podrán dar feedback sobre lo que aprendes. Practicar y aprender nuevas cosas con ellos harán que conozcas su forma de trabajar y aprecies puntos de vista que se te escapaban. Busca Kindred Spirits en comunidades relacionadas con tus gustos. Enseñarles lo que has aprendido te ayudará a interiorizar mucho mejor. Además una buena forma de evaluar la salud de tu comunidad es medir cómo reaccionan frente a nuevas ideas. Lo mejor que puedes aportar a una comunidad son ideas nuevas.

RUBBING ELBOWS

Busca oportunidades para desarrollar tareas con otros desarrolladores que trabajan contigo. Hay cosas que solo se aprenden cuando te sientas con otro desarrollador para cumplir un objetivo común. Pair Programming es una ejemplo de ello. Habrá veces que al sentarte con un compañero no sientas productividad o te sientas perdido pero esto no significa que sea culpa del Pair Programming. Puede significar que tienes que hacer más preguntas, que deberías ser driver un rato, que tu compañero no se explica bien… Es necesario tener coraje para revertir esta situación y sin miedo hablar cuando no te sientes cómodo. Cambiar de pareja de vez en cuando también es muy productivo. Cuando se practica Pair Programming correctamente en mi opinión no solo es la mejor manera de desarrollar software sino que también es una muy buena práctica para el aprendizaje. Es importante que de alguna manera escribamos lo que aprendemos de estas sesiones para poder reflexionar sobre como trabajamos.

SWEEP THE FLOOR

Cuando llegues nuevo a un equipo puede ser que no cuentes con toda su confianza y que te sientas un poco perdido sobre cuál es tu lugar en la empresa. Hazte voluntario para hacer las tareas más simples o menos prestigiosas con el objetivo de demostrar que haces las cosas bien. Esto hará que empieces a ganar la confianza de tus compañeros y podrás empezar progresivamente a acercarte más a las tareas más importantes y apasionantes.

Este patrón hay que cogerlo con pinzas. Surgió mucho debate en el club de lectura. Tampoco es plan de que tú llegues y te tengas que comer lo que nadie quiere hacer y encima eso se convierta en tu rol. Lo ideal sería que tu empresa permita que te involucres en el proyecto haciendo Pair Programming con los compañeros que están más involucrados. Suponiendo que no sea así también considero que deberías valorar si ese puesto está alineado con Draw Your Own Map y tus objetivos.

 

Primer post Apprenticeship Patterns

Tercer post Apprenticeship Patterns