In a software engineering organization with multiple teams, there are often changes or initiatives that affect all teams in certain areas. While these changes could be managed within the context of each individual team, the concept of a 'guild' can be a powerful tool for addressing and collaborating on these cross-cutting issues.
What is a Guild?
A guild is a group of individuals from different teams within an organization who share a common interest or expertise. In the context of software engineering, a guild typically focuses on a specific technology, practice, or area of interest that is relevant to multiple teams. For example, there might be a Front-End Guild, a DevOps Guild, or a Quality Assurance Guild.
How Does a Guild Function?
A guild operates as a cross-functional, collaborative group that meets regularly to discuss and address common challenges or initiatives. The guild defines specific initiatives or objectives on a regular basis, such as improving code quality, adopting new technologies, or reducing technical debt.
Work within the guild is tracked through tech debt tickets, which are Jira stories or tasks that represent work needed to address technical debt or implement new initiatives. Guild members collaborate on these tickets, sharing knowledge and expertise to achieve the guild's objectives.
Advocating for Tech Debt Work
One of the key functions of a guild is to advocate for the completion of tech debt work within their respective teams. Guild members act as ambassadors, advocating for the importance of addressing technical debt and ensuring that it is prioritized in their team's sprint planning.
Avoiding Waste
A guild is not a social gathering. In my experience, if guilds are not given specific objectives, they can become more of a social club rather than a productive tool. And who wants to have yet one more meeting to attend? So, it is important that if we are to avoid waste, that the guild have specific objectives in mind. Often it is good to have a manager or senior level sponsor for the objective selected for the guild and a deadline within which to accomplish it. Guilds also do not have to exist forever. A guild might be formed for a very specific objective over a limited period of time and then dissolve once that objective is met. It is important to consider these factors when forming and managing the output of a guild.
Meetings and Evaluations
It is important that while the guild may self-organize, that they meet to make it clear what the planned objectives are and if the guild is making progress. For example, a guild may have a quarterly objective, and so would meet on a monthly basis to discuss progress, share updates, and plan upcoming initiatives. These meetings provide an opportunity for members to collaborate, share best practices, and learn from each other.
At the end of each quarter, the guild evaluates whether the objectives set for that quarter have been met. This evaluation includes a review of the work completed, lessons learned, and a plan for the next quarter's efforts.
Benefits of Guilds
By bringing together members from different teams, guilds facilitate cross-team collaboration and knowledge sharing. They enable teams to tackle common challenges more effectively and ensure that best practices are shared across the organization.
Guilds are a valuable tool for software engineering organizations with multiple teams. They provide a forum for collaboration, knowledge sharing, and advocacy, helping teams address common challenges and achieve shared objectives. By leveraging the expertise and experience of guild members, organizations can improve their software development practices and deliver better results for their customers.