Las propiedades de una metodologia son su codigo genetico, lo que la distingue de otras y le da cuerpo. Las propiedades de Crystal Clear son guias que al seguirlas, nos ayudan a llevar nuestros proyectos a una zona segura.Crystal Clear es un Metodologia de desarrollo de software creada por Alistair CockburnPrimero, debo resaltar que Crystal Clear, es una metodologia que se centra en una forma de pensar flexible y una filosofia de SEGURIDAD-HABITABILIDAD-EFICIENCIA hecha para adaptarse y mejorar, iteracion tras iteracion.
Las propiedades de Crystal Clear son 7. Las primeras 3 son obligatorias si se quiere seguir la metodologia, las siguientes son muy importantes y sirven para llevar el proyecto aun mas adentro en la zona de seguridad.
Propiedad 1: Entregas FrecuentesEntregar código ejecutable, probado y usable a los usuarios, por lo menos una vez cada tres meses, si es cada uno o dos meses, mejor.
Al hacer esto aseguramos que nuestro proyecto no se despegara mucho de lo que el cliente necesita realmente, pues cada entrega formal, resultara en correcciones a los malentendidos que surgen continuamente en el analisis del sistema.
Ademas, si nos interesa entregar algo util para nuestros clientes -un software que realmente le genere valor- de esta manera le damos la oportunidad al usuario a que critique nuestra interfaz de usuario y el funcionamiento general del sistema antes de que continuemos creando mas codigo que podria terminar en la basura cuando nos digan "Esto no es lo que yo pedi."
Propiedad 2:Mejora reflexivaReunido por lo menos una vez en cada tres meses, durante media hora, una hora o medio día, para comparar notas, reflexionar, discutir nuestros hábitos de trabajo, y descubrir lo que nos acelera y lo que nos detiene y lo que podríamos mejorar.
Eso se llama hacer un "Taller de reflexion", obteniendo una lista de practicas o habitos de desarrollo que nos gustaria mantener, una lista de lo que nos gustaria intentar, y probablemente, una lista de lo que queremos evitar, todo esto escrito y publicado de alguna manera, a la vista de todos.
Esto nos genera una mejora continua en nuestro proyecto y nos da el tiempo para corregir el camino, acelerar el desarrollo y mejorar nuestros habitos y conocimiento de desarrollo.
Propiedad 3:Comunicación osmóticaLa colocacion fisica del equipo de desarrollo es de lo mas importante, y la comunicacion osmotica se refiere a llevar la comunicacion al maximo nivel: Nos debe tomar menos de 30 segundos llevar nuestras dudas a los ojos u oídos de quien puede resolvérnoslas, debemos sentarnos en el mismo cuarto o en cubiculos contiguos. Captar algo relevante de la conversación entre otros miembros del equipo al menos cada pocos días.
El hecho de tener que levantarnos de nuestro escritorio, cruzar el pasillo y abrir una puerta, con toda seguridad nos distrae de nuestro tren de pensamiento. Irrumpir en la oficina de otro miembro del equipo y hacerle preguntas, a si sean de lo mas simple, terminara por retrasar bajar nuestra productividad de manera critica.
Comparado con hacer una pregunta a una persona que esta constantemente conectada en nuestro mismo tren de ideas, nos da la diferencia entre comunicacion cerrada y la mejor, comunicacion osmotica.
Propiedad 4: Seguridad personal¿Podemos confesar a los demás que equivocamos nuestras estimaciones por mas del 50% o que hemos recibido una tentadora oferta de trabajo? ¿Podemos expresar nuestro desacuerdo con cualquiera respecto a la agenda en una reunión del equipo? ¿Podemos terminar largos debates sobre los diseños de otro miembro con un desacuerdo amistoso?
Fomentar la confianza y el respeto entre el entre el equipo, de manera que todos tengan claro que lo importante es lograr los objetivos del proyecto de manera conjunta. Asi, las equivocaciones e incapacidades de unos, pueden ser cubiertas por los demas, los miembros no temen exponerse, y el equipo respeta estas exposiciones.
Tres exposiciones en particular son importantes
- Revelar nuestra ignorancia
- Revelar nuestros errores
- Revelar nuestra incapacidad en una tarea asignada
Propiedad 5: EnfoqueCada quien debe saber cuáles son los dos elementos de mas alta prioridad sobre los cuales trabaja en todo momento. Ademas, deberiamos tener garantizado todos por lo menos dos días seguidos y dos horas ininterrumpidas por día para trabajar en un proyecto.
Esto tiene una base demostrada y fundada en lo siguiente:
- Nuestro trabajo exige una alta concentracion en lo que hacemos para evitar errores y producir mas.
- Un problema que se puede resolver en un minuto de concentracion, nos puede llevar una hora o mas de manera dispersa.
- Una distraccion media, que nos hace llevar nuestro pensamiento a otro lugar, puede llevarnos a perder de diez a quince minutos de productividad.
- El "switchearnos" de un proyecto a otro nos lleva al menos entre una y dos horas.
- Despues de que un desarrollador esta sometido a constantes distracciones, el desgaste de energia mental termina por hacer que el desarrollador prefiera hacer cosas vanas (como chatear o navegar) entre una distraccion y otra. Lo mismo tiende a pasar con desarrolladores involucrados en tres proyectos o mas.
Propiedad 6: Acceso fácil a usuarios expertosNos deberia de tomar menos de tres días en promedio, desde que surge una duda respecto al uso del sistema, hasta que un usuario experto la resuelve. Inclusive lo deseable, es poder obtener las respuestas en unas cuantas horas cuando mucho.
Si surge una duda sobre en el desarrollo de la funcionalidad, y podemos levantar el telefono para comunicarnos con el usuario experto en el dominio, hacerle algunas preguntas y seguir con el desarrollo, entonces estamos del otro lado. Esto no es siempre posible, pero por lo menos sera importante poder agendar una cita para visitar o ser visitado por nuestro usuario experto.
Propiedad 7: Ambiente de desarrollo con Pruebas automáticas, Administracion de la configuración e integracion frecuente.
Poder dejar corriendo las pruebas de nuestro desarrollo hasta el final sin estar físicamente presente nos ahorra el tiempo que no tenemos, sin mencionar las ventajas de depuracion inmediata y de probar el codigo indiscriminadamente.
Todos los desarrolladores deberian ingresar el codigo en el que trabajan en un sistema de administracion de la configuración, de manera que este se encarge de llevar el control de versiones, documentos, etc. y escribir una nota útil sobre el código cuando lo ingresan.
El sistema se deberia integrar por lo menos dos veces a la semana, juntando el codigo de todos, compilandolo, y haciendolo pasar por todas las pruebas automaticas posibles, y obteniendo de esta manera codigo ejecutable constantemente.
El sistema funciona mas o menos asi: Se diseñan los test antes del desarrollo. El sistema se integra frecuentemente en el sistema de manejo de configuracion (ejemplo CVS) y se pasa por todos los test, mostrando los resultados de inmediato.
En los siguientes articulo sobre Crystal Clear expondre algunas tecnicas y estrategias sugeridas que nos ayudaran a lograr estas propiedades y las refuerzan.