Techno Blender
Digitally Yours.

Simple tool to foster connection among employees | by Zolzaya Luvsandorj | Feb, 2023

0 36


Office hour

Building a happy and connected team with the help of Python

One positive thing COVID-19 facilitated was to push more companies adopt flexible working arrangements. This adoption meant more of us can continue working from home even when lockdowns are over. While this flexibility is awesome in so many ways, one potential downside is that you can’t bump into people like you would normally in office and have those casual spontaneous conversations which help build better rapport with colleagues and make you feel part of a team. In this post, I share one simple idea leveraging a little bit of programming skills to spark these conversations when not everyone is in office.

Photo by Toa Heftiba on Unsplash

So the idea is simple: On a regular basis, we randomly match groups of colleagues and encourage them to have casual conversations within the group. For instance, we randomly split all colleagues into group of 3 every week, assign one of them as the meeting organiser to book a 25-minute session in their calendar and encourage them to attend this session to catch up with each other. Or it can be a fortnightly walking catch ups among pairs as an initiative to look after wellbeing. This basic idea can be further adjusted and customised freely to suit the company culture.

My current company organises one every week where we have weekly coffee catch ups with one another person either virtually or in-person. I have also heard of other companies that were organising bigger groups to have weekly coffee together in a nearby café even before COVID-19. So this idea can be helpful in fostering connections even if everyone is in office too!

In the remainder of the post, we will look at Python starter code on how to create random matches under simple constraints. We will start by looking at pairs then extend the code to suit different group size. Although the example is in Python, the idea can be translated to other languages too.

In this example, we will assume we want to organise this team building initiative for the entire company with 100 employees. Depending on the size and structure of the company, this activity can involve all colleagues across the organisation or colleagues in specific departments.

We will start by importing libraries and creating a synthetic dataset of 100 employees. It’s common to have regular catch ups with your managers or direct reports, so we will add add a simple constraint to not match managers and their direct reports together since they have enough interactions anyway. So we will assign managers to employees.

Awesome, we will now initialise a dataframe to hold history.

Tracking history of matches will be useful to ensure that the same pairs are not matched again too soon. This way, everyone gets an opportunity to interact with as many different people as possible. To do that, we will use history of matches as additional constraints after first match.

We will start with the simplest form, a pair: a group of two. Let’s build a Matcher object that find matches of two under the following constraints:
◼️ Exclude colleague’s direct report or manager
◼️ Exclude those who were matched to a colleague in the past 10 matches

We just created our first match for 50 pairs. Let’s pick a sample employee: ‘Noah Rhodes’ and check his constraints:

Since we haven’t done any matches, the constraint should only be based on his manager and direct reports. Let’s check this information in the employee dataset:

Awesome, the constraints make sense. Let’s see who Noah get matched to:

This match satisfies the constraints. Now, we will do 5 more matches for the next 5 weeks and check if constraints are behaving as expected:

Let’s check Noah’s constraints again:

We have a few new constraints. These new constraints should reflect historic matches. Let’s check that:

Cool, so the constraint is working as expected. It makes sense that ‘Brittney Phillips’ is not part of the constraint yet as this was the most recent match.

Having done some checks, we will initialise the Matcher object again and run it for half a year:

We can see that in some instances there was trouble finding matches hence had to restart the random matching again. Currently, the Matcher is set such that if we have an odd number of employees, one person will be allocated a default value: ‘Go for a walk’ so that the person who couldn’t get a match get some exercise. This default value can be anything!

Having done a simpler version, let’s tweak the Matcher object such that it can cater different group size.

The following shows one way we can extend the code to be more flexible to suit different group size. While there are different ways to treat when the number of employees is not divisible by the group size, we have chosen one of the simpler options to pad with default values until the number of records become divisible. For instance, there is one odd person when we try to split 100 employees into groups of three. In this case, we will pad with a default value: ‘Go for a walk’ twice to make the number of records to 102, a number divisible by 3. To prevent one person being matches to two default values, we can make sure that any group is one default value only using constraints. So these two smaller groups (i.e. pairs) can have a walking meeting or video call.

Although we have selected a group of 3 in this example, the object can deal with higher numbers too.

Voila, that was it for this post! I hope this starter code is useful to build upon and save you time if you want to propose a version of this idea to implement in your organisation.

Photo by Shaurya Sagar on Unsplash

Would you like to access more content like this? Medium members get unlimited access to any articles on Medium. If you become a member using my referral link, a portion of your membership fee will directly go to support me.


Office hour

Building a happy and connected team with the help of Python

One positive thing COVID-19 facilitated was to push more companies adopt flexible working arrangements. This adoption meant more of us can continue working from home even when lockdowns are over. While this flexibility is awesome in so many ways, one potential downside is that you can’t bump into people like you would normally in office and have those casual spontaneous conversations which help build better rapport with colleagues and make you feel part of a team. In this post, I share one simple idea leveraging a little bit of programming skills to spark these conversations when not everyone is in office.

Photo by Toa Heftiba on Unsplash

So the idea is simple: On a regular basis, we randomly match groups of colleagues and encourage them to have casual conversations within the group. For instance, we randomly split all colleagues into group of 3 every week, assign one of them as the meeting organiser to book a 25-minute session in their calendar and encourage them to attend this session to catch up with each other. Or it can be a fortnightly walking catch ups among pairs as an initiative to look after wellbeing. This basic idea can be further adjusted and customised freely to suit the company culture.

My current company organises one every week where we have weekly coffee catch ups with one another person either virtually or in-person. I have also heard of other companies that were organising bigger groups to have weekly coffee together in a nearby café even before COVID-19. So this idea can be helpful in fostering connections even if everyone is in office too!

In the remainder of the post, we will look at Python starter code on how to create random matches under simple constraints. We will start by looking at pairs then extend the code to suit different group size. Although the example is in Python, the idea can be translated to other languages too.

In this example, we will assume we want to organise this team building initiative for the entire company with 100 employees. Depending on the size and structure of the company, this activity can involve all colleagues across the organisation or colleagues in specific departments.

We will start by importing libraries and creating a synthetic dataset of 100 employees. It’s common to have regular catch ups with your managers or direct reports, so we will add add a simple constraint to not match managers and their direct reports together since they have enough interactions anyway. So we will assign managers to employees.

Awesome, we will now initialise a dataframe to hold history.

Tracking history of matches will be useful to ensure that the same pairs are not matched again too soon. This way, everyone gets an opportunity to interact with as many different people as possible. To do that, we will use history of matches as additional constraints after first match.

We will start with the simplest form, a pair: a group of two. Let’s build a Matcher object that find matches of two under the following constraints:
◼️ Exclude colleague’s direct report or manager
◼️ Exclude those who were matched to a colleague in the past 10 matches

We just created our first match for 50 pairs. Let’s pick a sample employee: ‘Noah Rhodes’ and check his constraints:

Since we haven’t done any matches, the constraint should only be based on his manager and direct reports. Let’s check this information in the employee dataset:

Awesome, the constraints make sense. Let’s see who Noah get matched to:

This match satisfies the constraints. Now, we will do 5 more matches for the next 5 weeks and check if constraints are behaving as expected:

Let’s check Noah’s constraints again:

We have a few new constraints. These new constraints should reflect historic matches. Let’s check that:

Cool, so the constraint is working as expected. It makes sense that ‘Brittney Phillips’ is not part of the constraint yet as this was the most recent match.

Having done some checks, we will initialise the Matcher object again and run it for half a year:

We can see that in some instances there was trouble finding matches hence had to restart the random matching again. Currently, the Matcher is set such that if we have an odd number of employees, one person will be allocated a default value: ‘Go for a walk’ so that the person who couldn’t get a match get some exercise. This default value can be anything!

Having done a simpler version, let’s tweak the Matcher object such that it can cater different group size.

The following shows one way we can extend the code to be more flexible to suit different group size. While there are different ways to treat when the number of employees is not divisible by the group size, we have chosen one of the simpler options to pad with default values until the number of records become divisible. For instance, there is one odd person when we try to split 100 employees into groups of three. In this case, we will pad with a default value: ‘Go for a walk’ twice to make the number of records to 102, a number divisible by 3. To prevent one person being matches to two default values, we can make sure that any group is one default value only using constraints. So these two smaller groups (i.e. pairs) can have a walking meeting or video call.

Although we have selected a group of 3 in this example, the object can deal with higher numbers too.

Voila, that was it for this post! I hope this starter code is useful to build upon and save you time if you want to propose a version of this idea to implement in your organisation.

Photo by Shaurya Sagar on Unsplash

Would you like to access more content like this? Medium members get unlimited access to any articles on Medium. If you become a member using my referral link, a portion of your membership fee will directly go to support me.

FOLLOW US ON GOOGLE NEWS

Read original article here

Denial of responsibility! Techno Blender is an automatic aggregator of the all world’s media. In each content, the hyperlink to the primary source is specified. All trademarks belong to their rightful owners, all materials to their authors. If you are the owner of the content and do not want us to publish your materials, please contact us by email – [email protected]. The content will be deleted within 24 hours.

Leave a comment