Community of Practice, a structure to break knowledge silos
Tags: webdev, productivity, devops, opensource
Published: 2022-11-14 17:29:39

Before diving into the Communities of Practice (CoP), I’d like to ask you one question. In your daily work, you must solve problems and deal with topics and domains of interest inherent to your job (ex: front-end development). According to you:

- Do you think other people in your organization face the same problems and share common interests with you?
- If yes, do you regularly interact with these people?

I guess you see my point. If you answered *Yes* and *No*, I bet CoP can make sense in your context. Let's understand their concept now.

## What's the purpose of a Community of Practice?

This definition is a good summary of what's a CoP.

> Communities of Practice (CoPs) are organized groups of people who have a common interest in a specific technical or business domain. They collaborate regularly to share information, improve their skills, and actively work on advancing the general knowledge of the domain.
> 
> 
> © Scaled Agile, Inc. [Source](https://www.scaledagileframework.com/communities-of-practice/).
> 

The term first appeared in the book *[Situated Learning](https://books.google.fr/books?id=CAVIOrW3vYAC&redir_esc=y)* by Etienne Wenger and Jean Leve in 1991. Wenger then pushed the concept further in a [dedicated book](https://www.google.fr/books/edition/Communities_of_Practice/heBZpgYUKdAC?gbpv=1&dq=Communities+of+Practice:+Learning,+Meaning,+and+Identity&printsec=frontcover) in 1998. 

Within a CoP, people can:

- Talk about common interest topics
- Discuss faced problems, ask for help and expertise from the community
- Share feedback and returns on experience (whether it succeeded or failed)
- Make a demo of a tool recently deployed
- Practice and Train ([Coding Dojo session](https://www.packmind.com/learning-culture-in-software-engineering-teams-coding-dojos-community-of-practices-6-7/), for instance)

and even more.

Note that the Spotify internal communities called **Guilds** are s[imilar](https://jchyip.medium.com/a-few-answers-on-guilds-or-communities-of-practice-interest-28d9d5bfacf4) to a community of practice. 

**Interesting fact**: A CoP shows resiliency to the structure of the company and its organization. Whether you've got a Feature Team model, or horizontal/vertical management, the CoP's principles will still apply: a group of people will share common interests in their daily work.   

## Which value to expect?

This question may sound surprising, I know. Indeed, you could be easily convinced that **knowledge sharing** brings value and benefits to your company. If you need arguments, the [DORA](https://www.devops-research.com/research.html) provides annual reports on engineering teams' performance. The [2019 report](https://services.google.com/fh/files/misc/state-of-devops-2019.pdf) states that:

> High performers favor strategies that create community structures at both low and high levels in the organization, including Communities of Practice […].
> 

Another recent study from [McKinsey](https://www.mckinsey.com/industries/technology-media-and-telecommunications/our-insights/developer-velocity-how-software-excellence-fuels-business-performance) highlighted knowledge sharing as a top factor that fuels software excellence.

**Reuse expertise** and knowledge from others in an [InnerSource](https://www.packmind.com/innersource-understand-in-5-minutes/) model will save you time and prevent reinventing the wheel again and again. 

One last thing: considering the increasing remote-working context, any chance to interact with colleagues (we're not used to see every day) can't harm. But that's my opinion only ;)

## How to build and sustain a Community a Practice?

### **#1 Define the purpose and the topic**

That's a [common challenge](https://ieeexplore.ieee.org/abstract/document/8648260/) faced by any [CoP](https://ieeexplore.ieee.org/abstract/document/8648260/): what brings us together in this CoP, and what can we expect from that? A CoP will have to clarify **who it is for**, and what people **will find there**. A CoP can gather people based on a **topic**, or their roles. In the second situation, this could be excluding for some people and may not be especially relevant if they don't share common topics. 

Assume, for instance, a CoP for Software Architect experts in Java. One works in micro-services architectures with an Event-Sourcing model, and the other is specialized in Monoliths in a legacy system. They surely have topics in common, but they'll have to clarify them. 

### #2 Define the structure

A CoP will need to answer the following questions: 

- How long will the sessions last?
- What's the frequency of the sessions? (monthly, weekly, …) ⇒ Here, you'll need to consider everyone's project constraints.
- What's the content of the sessions? (Return on experiences, demos, coding dojos, talks, a mix of all of these)
- How sessions’ contents are scheduled?
- Can anyone submit an idea for a session, and what's the validation process?

The only valid answers are the ones that suit the majority of people!

### **#3 Designate leaders/facilitators**

Yes, people are busy and already have plenty of things to do, but a group facilitating CoP's sessions will be appreciated. Whether it's on-site or remote, a minimum of preparation is required, at least to organize the sessions, communicate on them, and lead/facilitate discussions during the sessions. 

If you feel that only one person leads the CoP, and complains about that, it's a good opportunity to survey the reasons for that situation: lack of time, fear of being judged, lack of perceived value,…

### **#4 Be supported by tools**

For **communication**, running a dedicated public channel on Slack/Discord/Teams or any tool you use is a good idea. Make it public to allow everyone to join the CoP. This channel will be the place where the announcements are made. 

For **collaboration**, a simple Kanban board will be enough to centralize the tasks to be done and by whom. It's easier to use the mainstream tool in your company to manage tasks. 

For **documentation**, it's relevant to keep track of all sessions and their materials (video recordings, slides, …). Not everyone can attend all these sessions, so it's a good idea. A Notion or Confluence will do the Job.

For **best coding practices sharing**, when it makes sense for the community, a platform such as [Packmind](https://packmind.com) will help to centralize and discuss best practices about the topic of the community. Here is an example of a practice that can be discussed within a React CoP.

![Packmind best coding practice](https://www.promyze.com/wp-content/uploads/Promyze-example-best-practice-react.png)

### **#5 Find sponsors** (if possible)

You'll probably need rooms to run the session physically. Stakeholders or managers in a company, if they acknowledge the benefits of your CoP, can facilitate access to meeting rooms and all logistics parts. 

Also, as a CoP session can occur at lunchtime (often the only moment when most of the people can be gathered), sponsors in your company can offer food/drinks. It's not a lot, but this still adds more conviviality to these events.  

## How to know if we're doing well?

Trust yourselves and get feedback from the CoP. After each session, you can use a tool such as the [ROTI](https://roti.express/?lang=en) (Return on Time Invested). A CoP needs to improve its organization continuously, so collecting feedback will help with that. If people get value during CoP sessions, it’s a great thing. 

The CoP's goal should be to create a sustainable structure. Take your time to build them. Don't burn everyone's resources for a month and let the CoP dies. Don’t try to have weekly events if it’s not viable. A CoP is not about dealing with emergency topics; you should plan other meetings for that. 

That's all, I'd be happy to receive feedback on how you run Communities of Practice in your organizations, what challenges you face and how you solve them.