viernes, 29 de junio de 2012

Dojos y Niveles

Hola en la comunidad Agile Peru se organiza muchos dojos, de hecho se viene una semana de dojos facilitados por diferentes miembros de la comunidad,  he visto que se están armando con niveles (básico, intermedio y avanzado) (actualizacion: se han retirado los niveles) pero no se ha indicado en que consisten estos niveles, esto es un poco difícil pues los dojos son para aprender/practicar algo, y esto es muy difuso pues este algo puede ser desde un lenguaje, framework o técnica pero seria bueno tenerlo en algún lugar para saber si estoy interesado y cual me conviene mas

Sin embargo creo que principalmente nos centramos en habilidades de programación asi que quiero proponer una escala:



Basico:
Pair Programming
TDD
Refactorizaciones sencillas: Cambio de nombre, extraccion de metodos (codigo de producción y de pruebas)

Intermedio:
Principales Smells y Refactorización de los mismos
Uso de los patrones mas comunes en las soluciones

Avanzado
Patrones especializados
Técnicas avanzadas de refactorización como patrones de herencia y polimorfismo (para lenguajes orientados a objetos)
Intercambio de maquinas
Intercambio de lenguajes

Cada nivel asume cierto conocimiento de los niveles anteriores entonces si alguien va a uno intermedio se asume que ya conoce y tiene practica en tdd y pair programming lo que permite concentrarse en los otros aspectos del ejercicio y enfocar el nivel del ejercicio, las preguntas y el apoyo de los facilitadores, también por respeto al esfuerzo de quien prepara el ejercicio y las expectativas de los participantes.

Como ven he dejado las acrobacias (intercambio de maquinas y lenguaje) hasta el último nivel debido a que esto referencia mas que a una técnica de programación a enfrentarte al cambio de contexto y me parece que esto es algo muy importante pero que pertenece a una etapa mas avanzada, considero que la base es primero conocer bien las técnicas de codificación y algo de patrones de diseño, lo que dejaría a alguien listo para enfrentar una situación en un lenguaje y con una implementación desconocida, pues finalmente una vez que conoces patrones la implementación es solo la forma de expresar un patrón en un lenguaje en concreto, y ya que esto es una analogía de las artes marciales véanlo así: en las artes marciales no peleas ni te dan técnicas avanzadas el primer dia: primero entrenas el equilibrio, respiracion y balance, (lo cual frustra a muchos principiantes) y recién dominados estos puedes entrar a un combate (una situación cambiante donde debes adaptarte y pensar muy rápido similar a lo que sucede cuando tienes que de pronto implementar algo en un lenguaje desconocido y que tiene una implementacion ya creada por otra persona).

Con esto digo que esta mal lo que se hace? no, me parece genial, solo propongo poner un poco de orden, me parece necesario, antes del dojo simplemente saber en que se basará para saber si es de interes del que piensa participar y dado que siempre la capacidad del local es un limitante ayudaría a que los participantes se autoregulen y si alguien considera que ya conoce el nivel y desea dejarle el lugar a otra persona que lo aprovecharía mejor, pues puede hacerse. También ayudara a tener una meta para poco a poco subir nuestro propio nivel y elevar un poco mas la valla de lo que se viene haciendo, al tener esto seria mas fácil saber el nivel de lo que hacemos y podríamos ver que si bien se hacen muchos dojos que tanto estamos buscando la mejora continua de todos y que nivel de habilidad estamos entrenando.

No hay comentarios:

Publicar un comentario