Organización
Muchos de los artículos más curiosos comienzan en un hilo en Twitter. Ése es el caso de éste.
En un hilo con @recena, éste dijo::
I am really tired of the trends around job titles etc…. We should talk about software engineer and responsibilities, that’s all.
Y eso es lo que ha inspirado este artículo.
En realidad, no pude evitar responderle::
Fully agree. It is just a matter of responsabilities, joined by role, and assigning a bunch of roles to every people, ensuring each role is owned by at least 2 people and everyone is doing it right (with KPIs). As simple and complex as it sounds.
Responsabilidades
Las responsabilidades son pequeñas acciones que deben tenerse en cuenta. Deben ser muy específicas, claras y concisas: “Administrar el sistema operativo de la máquina AXV0123” o “Gestionar los usuarios de Jenkins”.
A menudo será necesario añadir una descripción, con el fin de evitar ambigüedades, y poder cambiar esta descripción si el título no fue suficientemente claro.
El problema con las responsabilidades es que crecerán mucho y serán muy difíciles de gestionar. Por eso es importante agruparlas de alguna manera.
Roles
Un rol no es más que una agrupación de distintas responsabilidades que están relacionadas entre sí. No tiene mucho sentido agrupar cosas que no tienen dicha relación. Por ejemplo, podemos agrupar “Gestionar los usuarios de Jenkins” y “Gestionar el sistema de alertado de Jenkins”, siempre y cuando ambos se gestionen desde la misma interfaz, pero no tendría mucho sentido agruparlos con “Lanzar la release del producto Phoenix”.
Estos roles deben asignarse a personas, de manera que una misma persona puede tener muchos roles y cada rol debe estar asignado al menos a dos personas.
Hecho esto, resulta sencillo calcular el truck-factor de la empresa, basta coger el rol que menos personas tiene asignadas y ver cuántas son estas personas.
Software
Y claro, como soy así, enseguida he pensado en algún software que ayude a administrar responsabilidades, roles y personas. El caso es que… ¡sorpresa! ya existe.
Este software suele ser poco conocido, mal utilizado y habitualmente gestionado por IT, Sistemas o similar. Es el Directorio Activo (en Windows) o LDAP (multiplataforma).
Estos sistemas permiten también más niveles de agrupación, gestionando responsabilidades, roles y personas de forma arbórea, de manera que resulte algo más sencillo de administrar.
Además, si el sistema de responsabilidades, roles y personas está correctamente administrado, debería ser muy sencillo hacer cosas como:
- crear listas de correo a las personas involucradas en una misma tarea.
- asignar los permisos y licencias necesarios a una persona para realizar su trabajo.
- Asignando un plus a cada rol, se podría saber cuánto va a cobrar cualquier persona. Es más, se podría saber qué roles tengo que asumir si quiero ganar una cantidad determinada. Y sería un sistema de pago justo.
Simple y complejo
Resulta sencillo entender el problema y ver la solución. Sin embargo, llevarlo a la práctica es terriblemente complejo.
La gestión de responsabilidades y roles es algo que recae en la dirección de la empresa, aunque rara vez se dan cuenta de ello. La gestión de personas, recae en recursos humanos. Y la de los permisos, habitualmente, en Sistemas.
¿Qué quiero decir con esto? Pues que es una clara demostración de que la división de departamentos es un problema, y que lo más importante es que éstos trabajen juntos. Lo más importante y lo más difícil.
Cómo gestionarlo
Desconozco cómo funciona el Directorio Activo en este sentido, pero hasta donde yo sé, LDAP tiene un problema: es tan versátil y general, que cada empresa tiene que gestionárselo a su manera. No hay campos fijos ni estructuras claras.
En cierto modo es lógico, ya que cada empresa es un mundo, pero eso complica el escalón inicial para poder usar algo así.
Algunas iniciativas, como el Apache Directory son un intento de reducir esta barrera de adopción.
Herramientas como keycloak permiten una gestión de sesiones común entre distintas herramientas.
Pero la adopción de cualquiera de estos sistemas es dura, dificil de gestionar y fácil de corromper. Además que requiere la adecuación de todas las herramientas que la empresa está usando en estos momentos.
Feedback
Sinceramente, es un tema que me preocupa bastante. Soy bastante desorganizado, y quizá por eso el tema de la organización me apasiona: intento entender cómo lo hace esa gente que sí está bien organizada XD.
Por esa razón, agradeceré cualquier comentario que queráis hacer o herramientas que queráis compartir en este sentido.
Gracias de antemano.