jueves, 7 de diciembre de 2017

Modelo Spotify: Guild (Comunidad) o comunidades de prácticas

Las comunidades de prácticas


Aunque la traducción que se suele hacer de Guild es gremio, prefiero llamarlo "Comunidad". En el modelo Spotify, un Guild es una "comunidad" de interés, orgánica y de amplio alcance. Aunque las comunidades son útiles y pueden usarse al margen del esquema Spotify. 
Una comunidad es una organización de personas que quieren compartir conocimientos, buenas prácticas, herramientas, códigos, iniciativas e ideas, generar capacitaciones, organizar code katas/hackathons, organizar eventos en pos de la misión, ayudar en la construcción de estándares comunes y acuerdos organizacionales. Serían como las "comunidades de práctica" o los grupos de aprendizaje, no necesariamente están en el mismo área de competencia pero mantienen intereses comunes. Una comunidad normalmente no pertenece a una tribu en particular, sino que recorre toda la organización. Y se reúnen exporádicamente o periódicamente, con cierta regularidad, sin ser un equipo fijo ni una estructura formal de la organización. La vida o disolución de una comunidad depende de la participación, cohesión y motivación de sus miembros.


Líder de la comunidad 


Es aconsejable que la comunidad tenga al menos un líder que sea responsable (pueden ser más de uno). Esto hace que sea más fácil seguir el progreso hacia la misión de la comunidad. El líder no es un cargo formal, sino un rol. Tanto la participación, como líder o como miembro, es voluntaria. Hay que tener en cuenta que el líder de comunidad debe ser un líder servicial, quien sostiene la misión y la visión de las respectivas competencias de la comunidad y quien facilita su funcionamiento. También es deseable que el líder sea alguien proactivo y/o un agente de cambio, ya que la comunidad funciona también como mecanismo de mejora continua para hacer aportes de mejora a la organización, generar ideas o liderar alguna innovación. Las principales funciones de un líder de comunidad son:

  • Convocar a las personas. 
  • Agendar las citas y reservar salas.
  • Permitir y promover que personas de diferentes equipos se reúnan de manera fluida y colaboren en un propósito compartido. 
  • Facilitar y/o moderar las reuniones. 
  • Encargarse de alguna administración mínima (seguimiento de temas). 
  • Coordinar a las personas o miembros para que se realicen las reuniones. 
  • Asegurarse que la comunidad tenga una misión clara y visible para todos. 
  • Asegurarse y promover que sea valiosa para los miembros y la organización. 
  • Facilitar puentes o medios de comunicación. 
  • Fomentar y usar prácticas ágiles (como uso de backlog, kanban boards, retrospectivas, etc.).
  • Delegar y generar trabajo en equipo. No debe ser un cuello de botella ni un acaparador. Debe fomentar el trabajo distribuido, colaborativo y formar otros líderes. Debe lograr que la comunidad pueda llegar a funcionar y existir sin él.
  • Germinar una comunidad si ve la necesidad en la organización.

Germinar una Comunidad


Para hacer nacer una comunidad se necesita crear un ambiente abierto y acogedor. No intente estructurarlos o hacerlos excesivamente formales; en principio, deberían ser entidades autónomas, orgánicas, que prácticamente carecen de jerarquía. Una de las mejores cosas acerca de la vida de las comunidades es que serán evaluadas por su comunidad de ingenieros o colegas, por lo que, tan pronto como una deje de cumplir una función, se vuelva redundante o no necesaria, naturalmente se desvanecerá. O también puede ser absorbida por otra comunidad. Es aconsejable que al momento de formación se defina un propósito y/o misión y se de a conocer al resto, invitando a los integrantes de la organización a participar de forma abierta. Preferentemente es bueno comenzar con alguna lista de temas de interés priorizada, acuerdos de trabajo y herramientas colaborativas a usar.

Ejemplos 


Las comunidades pueden ser por capas tecnológicas de desarrollo o especialidad como: Backend Guild, Frontend Guild, QA Guild, UX Guild, DevOps Guild, Iteration Manager Guild (Team Facilitator), Product Owner Guild, Agile Management Guild, etcétera. También por lenguajes: Javascript Guild, Java Guild, etcétera. Por tecnología o prácticas: Continuous Integration, Machine Learning, etc.

Ejemplo de una declaración de comunidad:

Comunidad de Scrum Masters (o Iteration Managers o semejante)


  • Propósito: Reunir a Facilitadores de Equipos, Iteration Managers y Scrum Masters para capacitarnos y desarrollar mejor el perfil profesional a través de la discusión y el intercambio de conocimientos. Alternamos entre talleres en los que pasamos la hora aprendiendo una habilidad, dinámica o técnica, reuniones regulares donde presentamos lo que hemos estado haciendo y discutimos ideas (sobre métricas, buenas prácticas, calidad, procesos, agilidad, estándares, etc.) para mejorar nuestros procesos de trabajo y empujar la transformación ágil.
  • Mission: Empoderar a los IM para ser agentes de cambio y mejorar nuestra organización y trabajo de los equipos.
  • Objetivos: Compartir conocimiento, prácticas e ideas. Generar iniciativas de mejoras. Unificar criterios y generar acuerdos. Influir en el cambio cultural de la organización hacia una cultura ágil.
  • Métricas: Tener una presentación al menos una vez al mes. Generar al menos una iniciativa mensual. Celebramos algun logro de la comunidad mensualmente.
  • Agenda: Nos reunimos en la sala desiganad de 16:00 a 17:00 cada martes.
  • Herramientas: usamos Trello (Jira, Google Drive, etc.) para administrar nuestro backlog de temas e iniciativas.
  • Dinámica: Generalmente se puede usar un formato de Lean Coffee.