miércoles, 31 de agosto de 2011

Apprenticeship Patterns

La Artesanía del Software es un enfoque del desarrollo de software distinto de la Ingeniería de Software tradicional. Está más orientada hacia las relaciones entre desarrolladores y clientes en busca de valor para los proyectos, y también hacia las relaciones entre los propios desarrolladores, favoreciendo el traspaso del conocimiento.

Este libro trata sobre el enfoque de la Artesanía del Software sobre el aprendizaje que debe realizar un desarrollador. Este aprendizaje no se limita sólo a la etapa inicial de formaciónsino que debe ser continuo a lo largo de toda la carrera profesional.

Los autores (Dave H. Hoover y Adewale Osinheye) han recopilado una serie de patrones que pueden guiar este aprendizaje y que, a continuación, trataré de presentar. Dichos patrones se presentan por capítulos según su intencionalidad:

Vaciando La Taza

Cómo iniciarse en el aprendizaje desde una postura abierta y receptiva, eliminando los prejuicios.
  • Tu Primer Lenguaje: Conocer un primer lenguaje es lo que servirá como base para todo el aprendizaje posterior.
  • El Cinturón Blanco: Hay que ser humildes y receptivos, conscientes de que para aprender algo nuevo hay que desprenderse en parte de lo que sabíamos.
  • Desata Tu Entusiasmo: El entusiasmo da energía a un aprendiz y a su equipo, por lo que es un valor que hay que fomentar.
  • Habilidades concretas: Una persona que está aprendiendo puede tener poco que ofrecer a un equipo de programadores expertos. Sin embargo, es necesario que pueda ofrecer algo para que se le acepte como un miembro más.
  • Expón Tu Ignorancia: Se debe hablar abiertamente de las carencias, y no engañar a nadie atribuyéndonos cualidades que no tenemos.
  • Confronta Tu Ignorancia: Las carencias identificadas se deben combatir. Esto aumenta el conocimiento y permite identificar nuevas carencias.
  • El Profundo Abismo: En determinados momentos es necesario llevar a cabo tareas que están aparentemente más allá de nuestra capacidad para poder crecer.
  • Refúgiate En Tu Competencia: Para ganar confianza en caso de vernos superados se dedicar un rato a tareas que se dominan.

Caminando Por El Largo Camino

El aprendizaje del desarrollo de software es un camino largo abarca toda la carrera profesional.
  • El Largo Camino: A lo largo de la carrera profesional la prioridad debe ser aumentar las habilidades, no en el beneficio económico ni el ascenso en la escala empresarial en sí mismo.
  • Oficio Más Que Arte: Hay que ser consciente de que se están construyendo herramientas que deben aportar valor a los clientes.
  • Motivaciones Sostenibles: Para poder llegar al final del camino, se debe trabajar sin sacrificar de forma permanente ningún otro aspecto importante de la vida personal.
  • Alimenta Tu Pasión: Durante algunos periodos puede que el trabajo del día a día no sea suficientemente gratificante, y habrá que buscar algo que permita mantener la pasión por el aprendizaje, ya sea en el trabajo o fuera de él.
  • Dibuja Tu Propio Mapa: Somos los únicos responsables de nuestra trayectoria profesional. Si nuestra empresa o equipo actuales no son favorables al aprendizaje, tenemos en nuestra mano cambiar estas condiciones.
  • Usa Tu Título: El título profesional es reflejo de la organización en la que nos encontramos. Un título que no refleja nuestra realidad es un síntoma de que debemos actuar para cambiar nuestra situación.
  • Permanece En Las Trincheras: Para aprender a desarrollar del software hay que mantenerse desarrollando, y no dejarse seducir por ascensos profesionales que nos separen de él, llevándonos, por ejemplo hacia la gestión.
  • Un Camino Diferente: Se puede aprender a desarrollar siguiendo muchos caminos, por lo que no se debe menospreciar a quién ha elegido uno distinto.

Auto-Evaluación Precisa

Hay que saber reconocer nuestra situación respecto del entorno en que nos encontramos, para poder actuar si se da el peligro de estancamiento en el aprendizaje.
  • Sé El Peor: Ser el peor en un nuevo equipo permite aprender cosas a costa del esfuerzo que supone ponerse al día.
  • Encuentra Mentores: Conseguir que alguien con más conocimientos nos supervise es la mejor manera de acelerar el aprendizaje.
  • Espíritus Afines: Gente con los mismos intereses nos ayudará a aprender, ofreciendo visiones alternativas, apoyo o nuevas oportunidades.
  • Juntar Los Codos: Aprender junto a alguien incentiva la comprensión y facilita la comunicación de aquello que se da por supuesto pero que supone la diferencia.
  • Barrer El Suelo: Si se es el miembro de menor experiencia en un equipo se deben aceptar las tareas menos llamativas para poder aspirar a tareas más complejas.

Aprendizaje Perpetuo

No se puede dejar de aprender porque la tecnología avanza y ofrece nuevas soluciones que debemos conocer en la medida de lo posible.
  • Expande Tu Ancho De Banda: Hay que abrirse a todas las fuentes de conocimiento disponibles (blogs, Twitter, listas de correo, grupos de usuarios, conferencias, libros, cursos…) para recibir información sobre aspectos distintos a nuestra experiencia.
  • Practica, Practica, Practica: Para poder aprender es útil practicar con ello en un entorno tolerante con los errores. Se puede practicar con ejercicios (katas) sólo o junto con otros desarrolladores (dojo). Una realimentación inmediata sobre los errores que podamos cometer es importante para poder corregirlos y aprender.
  • Juguetes Que se Pueden Romper: Se puede poner a prueba y aplicar lo aprendido construyendo sistemas con exigencias reales pero no críticos, tal vez para uso propio.
  • Usa La Fuente: Para reconocer buen código hay que haberlo visto antes. Leer código de otros permite entender la forma de desarrollar de otras personas y adquirir los mejores hábitos de ellas.
  • Reflexiona Mientras Trabajas: Periódicamente se debe reflexionar sobre las prácticas usadas y analizar si se pueden mejorarlas o cambiars por otras mejores. Como equipo, esto puede traducirse en reuniones retrospectivas sobre la marcha del proyecto.
  • Guarda Lo Que Aprendes: Guardando constancia de cómo se ha resuelto un problema se ahorra tiempo en el futuro cuando se vuelva a presentar.
  • Comparte Lo Que Aprendes: Esto permite la comunicación con otros desarrolladores con los mismos problemas.
  • Crea Ciclos de Realimentación: Sólo alguien distinto de nosotros puede evaluar de forma objetiva lo que estamos haciendo bien o mal.
  • Aprende Cómo Fallas: Identificar nuestros fallos permite afrontarlos o, si el esfuerzo fuese desmedido, aceptarlos y reconocer las tareas para las que no somos aptos.

Construye Tu Currículo

La necesidad de seguir aprendiendo será continua. Estos nuevos conocimiento s irán definiendo nuestro propio currículo.
  • Lista de Lecturas: Existe una enorme cantidad de libros que pueden resultar interesantes. Mantener una lista de estos libros ayuda a priorizar y registrar lo que leemos y hacerla pública la deja abierta a sugerencias por parte de otras personas.
  • Lee Constantemente: Leer de forma periódica permite adquirir un conocimiento aceptable de la tecnología y diferenciarse de la mayoría de quienes nos rodean.
  • Estudia Los Clásicos: Las referencias a clásicos del desarrollo del software son constantes y es importante leer estos libros para entender las referencias de otras personas.
  • Excava Más Profundo: El conocimiento superficial de varias tareas no es suficiente. Habrá casos en que haya que profundizar en una herramienta o lenguaje concreto en busca de la solución a un problema.
  • Herramientas Familiares: Para que los proyectos puedan desarrollarse según lo estimado no se puede innovar siempre. Hay que mantener un conjunto de herramientas constantes en las que basarse.

Personalmente, este libro me parece muy inspirador y me ha dado un montón de ideas sobre cómo afrontar mi carrera como desarrollador de software, al verme reflejado en muchas de las situaciones que en él se describen.

Los patrones que presenta, en ciertas ocasiones parecen sencillas e incluso evidentes. La complejidad está en saber combinarlos y aplicarlos en nuestro día a día.

No hay comentarios:

Publicar un comentario