lunes, 6 de marzo de 2006

People CMM

Cuando una empresa o grupo desarrolla software con mucho ímpetu y poca formación, suceden cosas interesantes. El ímpetu y la energía aseguran que se hará todo lo necesario para terminar los proyectos, por mejorar la manera de trabajar y por mejorar la calidad de los resultados. La poca formación asegura que, en general, las acciones para alcanzar lo recién mencionado sean erradas o mal direccionadas. Así, se forma un ciclo donde la energía fluye y se neutraliza así misma.

Lo que sucede es que es difícil priorizar los problemas y no malgastar esfuerzo cuando hay tantas cosas para arreglar que no se sabe por donde empezar. Cuando nadie sabe lo que debe desarrollar, nadie sabe cuanto falta para terminar, Pepe pisa los archivos de Hugo, los errores abundan como las hormigas en un día de picnic, hay tareas que nadie hace porque son tediosas, el programador estrella reescribe el código de los demás porque no usan notación húngara, el líder de proyecto juega con un Gantt en una nube mientras todos hacen horas extra, y alguien dedica meses a escribir documentos que nadie nunca mirará... ¿Qué se puede hacer? Poner un kiosco... No, mejor pensemos en respuestas que no requieran cambiar de profesión.

En estas situaciones, por lo general, no se manifiestan problemas de desinterés en la mejora. Siempre hay alguien con iniciativa que buscará alternativas como escribir requerimientos, hacer revisiones por pares, aplicar UML o usar Microsoft Project. Pero este torbellino caótico aspira todas estas iniciativas y les quita sentido. Una acción bastante común, por ejemplo, cuando el software que un grupo escribe se desmorona en producción por enésima vez es agregar alguien que haga "testing”. "Nos está faltando testing, eso es lo que nos pasa” piensan mentes bienintencionadas, aunque no del todo acertadas. Así se agrega a alguien al equipo que tomará el software dos minutos después que el grupo de desarrollo dijo que termino (que es un minuto antes que la fecha comprometida de entrega al cliente) y lo testea. Por supuesto, sin capacitación, sin requerimientos, sin tiempos, esta persona es tan útil para mejorar la calidad como el chico que fue a la esquina a ver si llueve (sólo que en este caso, el tester puede tener la culpa de la lluvia).

Estas situaciones no son agradables y son conocidas por la mayoría de las personas que desarrollan software; pero no son exclusivas de esta actividad, aunque este hecho no representa ningún alivio para el que les toca vivirlas día a día. Hay otras personas que enfrentan situaciones similares donde hay muchas cosas para mejorar y las opciones para empezar parecen muchas.

Las empresas de software, mas allá que a muchos le cueste entenderlo, dependen del conocimiento y de las personas que lo poseen para poder evolucionar. Hasta el gerente más ingenuo, llega a un punto donde nota la necesidad de invertir algo para que la gente esté mejor, o para que esté (es decir, que no se vaya). Y aquí sucede algo similar que en el caso anterior, el objetivo parece claro: se desea mantener las personas en la empresa y además que mejoren sus capacidades para que impulse el desarrollo de la empresa. La pregunta es que hacer: eventos motivacionales, regalos de cumpleaños, bonos, premios por productividad, newsletters con información de la empresa, capacitación, definición de plan de carreras, entradas al cine o cenas.

Así como el ingeniero entusiasta tira manotazos al aire intentando mejor su caótica situación con iniciativas de todo tipo, de esa manera está el encargado de RRHH, con sus buenas intenciones, intentando mejorar la situación sin saber muy bien por donde empezar. Pero debe lidiar con particularidades más desafiantes en ciertos aspectos.

Por ejemplo, cuando intenta premiar el buen desempeño como muestra de reconocimiento, con un par de entradas al cine, están aquellos que se sienten manipulados, otros se sienten subestimados, otros piensan que el premio es poco, otros esperan dinero, otros gustan del teatro, y a otros les da lo mismo. Con cada intento de mejorar las condiciones de trabajo y la moral puede suceder lo mismo. Siempre existen escépticos crónicos que encuentran falencias en todo y es desmotivante ver caer una a una las más variadas iniciativas.

En el caso del desarrollo de software existen recursos que ayudan a salir de este estado. Aquí es donde aparece CMM con su rol más valioso a mi entender. Tan valioso que casi se equipara con lo perjudicial que resulta cuando es fuente de inspiración de obsesivos del proceso, almas en búsqueda de evidencia infinita, que combaten su inseguridad con planes kilométricos y cuyo interés por el software parece estar más ausente que gestos de cariño en una película de Steven Seagal. Pero, bueno, ese es otro temaVolvamos a lo valioso... Decía entonces que un gran aporte de CMM es darle prioridad a los problemas, proponiendo objetivos y actividades para resolverlos. Así, cuando el caos es completo nos sugiere:


- Definir que es lo que hay que hacer.
- Planificar como se va a hacer.
- Verificar el avance.
- No perder las cosas realizadas.

Esta es una gran ayuda y no es ninguna novedad para mucha gente. La novedad para mí, y en definitiva la motivación de estas líneas es mi reciente descubrimiento que para el segundo caso también existe CMM: People CMM.

People CMM es una herramienta que ayuda mejorar aspectos críticos relacionados a las personas en las organizaciones. Emplea el mismo framework de mejora de procesos que el SW-CMM como base para un modelo de mejores prácticas para administrar y desarrollar las personas de una organización. Es decir, cuenta con niveles de madurez del 1 al 5, con áreas de procesos en cada nivel con objetivos, donde el nivel 1 representa la falta de consistencia de la organización en la manera de desarrollar el trabajo.
Según sus autores úcada nivel progresivo de People CMM produce una transformación única en la cultura de la organización equipándola con prácticas más poderosas para atraer, desarrollar, organizar, motivar, y retener a sus empleados.”

Es útil iniciar observando el nivel 2 para ver, según este modelo, donde conviene apuntar las acciones iniciales de mejora, cuales son las bases sobre las cuales las iniciativas de mejora a largo plazo se deben sustentar. Las areas del nivel 2 son cinco: Staffing, Comunicación y Coordinación, Entorno de Trabajo, Administración de Desempeño, Entrenamiento y Desarrollo, y Compensaciones.
Veamos brevemente a qué apunta cada una:

Staffing
El propósito de Staffing es establecer un proceso formal por el cual el trabajo comprometido es equiparado a las personas de una unidad e individuos calificados son reclutados, seleccionados y llevados en transición a asignaciones.
Esta área involucra los procesos relacionados con balancear la carga de trabajo con las personas disponibles, reclutar, seleccionar entre los candidatos para las posiciones abiertas, ingresar y dejar la organización, y traslado a nuevas posiciones.

Comunicación y Coordinación
El propósito de Comunicación y Coordinación es establecer comunicaciones oportunas a través de la organización y asegurar que la fuerza de trabajo tiene las habilidades para compartir la información y coordinar las actividades eficientemente.
El establecimiento de una comunicación efectiva comienza comunicando los valores, políticas, prácticas y otra información importante de la organización a la fuerza de trabajo. Además de esta comunicación top-down, la comunicación bottom-up es estimulada buscando la opinión de individuos sobre sus condiciones de trabajo.

Entorno de Trabajo
El propósito de Entorno de Trabajo es establecer y mantener las condiciones de trabajo físicas y proveer los recursos que permitan a los individuos y grupos de trabajo realizar sus tareas eficientemente sin distracciones innecesarias.
Esta área de proceso refuerza la responsabilidad del management de monitorear las necesidades de entorno y de recursos que afectan la habilidad de la fuerza de trabajo de hacer su trabajo eficientemente.
El management debe tener planes para mitigar los problemas que presenten riesgos serios para la salud, seguridad, o eficiencia.

Administración de Desempeño
El propósito de Administración de Desempeño es establecer objetivos relacionados con el trabajo comprometido contra los cuales el desempeño individual y de una unidad pueda ser medido, para discutirlo contra estos objetivos, y mejorarlo continuamente.

Entrenamiento y Desarrollo
El propósito de Entrenamiento y Desarrollo es asegurar que los individuos tienen las habilidades requeridas para realizar su trabajo y que son proveídos de oportunidades de desarrollo relevantes.
El foco primario de esta área de proceso está en eliminar la brecha que existe entre las habilidades actuales de cada individuo y las necesarias para ejecutar sus asignaciones. Una vez que los individuos tienen las habilidades necesarias para realizar sus asignaciones, ellos pueden enfocarse sus actividades de desarrollo en otros objetivos (personales).

Compensaciones
El propósito de Compensaciones es proveer a todos los individuos de remuneración y beneficios basados en su contribución y valor para la organización.
El sistema de compensaciones debe ser diseñado para motivar y premiar las habilidades y comportamientos que la organización considere vitales para su éxito.

Este es un breve pantallazo del nivel 2. Como en el caso de CMM, existen prácticas, y subpracticas con guías de implementación más concretas en el documento de People CMM.
En estas se puede encontrar sugerencias sobre que deben contemplar los procedimientos relacionados a cada área de proceso.
El documento está disponible en la web en http://www.sei.cmu.edu/cmm-p/version2/