Gaming the System: How Video Games Can Help us Create More Effective Virtual Teams

Rate this content
Bookmark

What does Conway's Law have in common with the video game League of Legends? They can both teach us about how to organise development teams that achieve collective intelligence. When it comes to the art of software development, it's never a game of chance

7 min
25 Mar, 2022

AI Generated Video Summary

Today's Talk explores the lessons that video games can teach us about building virtual teams. The impact of communication on software development is discussed, highlighting the importance of understanding software for successful deployment. The concept of collective intelligence is introduced, emphasizing the role of social perceptiveness, cognitive diversity, and equal distribution of communication. The Talk also emphasizes the need to optimize team performance with key metrics and suggests keeping teams small and cross-functional to enable easy communication and lower cognitive loads.

1. Video Games and Virtual Teams

Short description:

Hello everyone, I'm Jessica Craig and I'm a Developer Advocate with LaunchDarkly. Today, I'll talk about video games and what they can teach us about building better virtual teams. Collaboration is not always the answer to solving problems. The Mythical Man month discusses the impact of communication on software development. Collective intelligence is a group's capability to perform well, and it can be influenced by social perceptiveness, cognitive diversity, and equal distribution of communication.

Hello everyone, I'm Jessica Craig and I'm a Developer Advocate with LaunchDarkly.

I'm here today to talk to you about video games and what they can teach us about building better virtual teams. When something goes wrong, what is your first instinct? Do you ask for help? You should be forgiven for thinking that collaboration is the answer to your problems. Between the idioms of two heads being better than one and a problem shared as a problem halved, it's understandable to think that bringing another person into the mix could stand to improve your chances of getting towards the solution and getting you there faster. I mean, it works with pair programming right? But this isn't always the case.

Now, if you've played computer games and remember Age of Empires 2, you'll recall that the best way to get a structure built quickly is to assign as many villagers on to that task as possible. But when it comes to digital infrastructure outside of a video game, or indeed video games themselves, we need to factor in a few key differences.

Now, the Mythical Man month, as many of us know, is a collection of essays on the craft of software development that discusses the idea that the number of people and the amount of time required for something to get done can be interchangeable as commodities only when a task can be partitioned among many workers with no communication among them. But when a task cannot be partitioned, either due to its structure or indeed its complexity, the application of more effort has no impact on the schedule at hand. Now, software development falls in between these two aforementioned categories. Tasks can, of course, be partitioned. We can break something down into smaller batch sizes, but communication is required in between each sub-task, either for problem solving or for handing off for status. Now, in these situations, the best possible outcome doesn't come close to an even trade-off between people and hours. Now, there are a few schools of thought around how the cognitive load towards communication is weighted. But it's widely accepted that intercommunication is where the majority of the work lies. Now, if each part of the task that you're working on needs to be separately coordinated, the effort required to complete that section of work increases at a near-exponential rate with the more people that you get involved. Now, three people will require three times as much interaction as two people to get the same amount of work done, and that just increases, as we can see with the line here. Now, things only get compounded when group meetings come into the mix. This projected timeline, it really shows Brooks' law in action, that adding people power to late software projects only stands to make them even later. But to tackle this, let's talk about the concept of collective intelligence.

Now, collective intelligence is described by researchers as a group's capability to perform well. It's essentially an index of group-level competence that, despite being widely recognised, are still being actively studied and understood. Now, one study used the vehicle of massive online battle arena game, League of Legends, as a method of testing whether or not virtual teams paired based on their abilities, rather than an in-depth understanding of their working habits and one another, could outperform the latter. Now, what the hell has it got to do with work? Well, much of the massive online battle arena games are often characterised by their intensity, their fast decision-making, and their competitiveness, which is not quite unlike the real-world organisations that we work in every day. And what did these researchers find? Well, when investigating the measure of collective intelligence, researchers found that a group's ability to perform well at a task was largely transferable, meaning that if they could do one thing well, they're likely to be able to do new tasks well in addition. Now, the things that can make us collectively intelligent are social perceptiveness, a moderate level of cognitive diversity, and large amounts, and the equal distribution of communication. But on this last point, researchers noticed that the verbal communication didn't equate to or high levels of verbal communication, rather didn't equate to a high level of collective intelligence. In fact, researchers measured the standard deviation, both in the lines of chat of successful players and the word count within those chat messages. And they found that higher chat, high chat lines or more chat communication didn't equate to a high level of collective intelligence or indeed performance.

2. Communication and Team Performance

Short description:

Higher chat doesn't equate to collective intelligence. Skilled players spend less time communicating. Understanding software is crucial for successful deployment. Optimize team performance with key metrics. Keep teams small and cross-functional. Enable easy communication and lower cognitive loads.

And they found that higher chat, high chat lines or more chat communication didn't equate to a high level of collective intelligence or indeed performance. One of the early observations of the study, in fact, found that the most skilled players tend to spend less time communicating by preference. They're good at the game and that's where they want to spend their time. They minimise context switching, they engage in non verbal cues almost instinctively.

Does that sound familiar? A taste at communication, mentioned here, is the unexpressed recognition of the position of others. And most importantly it leads to actions for common goals. In the context of a company, this looks like this is evidence of advocating for observability measures, automation, but, of course, opting for metrics that everyone genuinely understands. If we don't understand the software that we're testing, we're likely to restrict the number of times we deploy.

And as anyone who's read the book Accelerate or followed the annual State of DevOps reports will know, optimizing for team performance can be achieved by tracking these four key metrics, all of which you want to lower aside from deployment frequency, which you want to be as high as possible. Now, if the software that we're working with doesn't fit neatly within our heads, these metrics will have a near finite value. We're likely to distrust our tests in the first instance, our confidence to deploy will plummet, and if we don't understand the services that we're working with, we won't be able to restore them when they inevitably do indeed go down.

So, as a quick recap, keep your team small, aim for no more than nine on your squad, if possible. Keeping teams cross-functional, with one team member intentionally chosen to help you enforce this final principle, to take on people with the reputation of specialists but with the capabilities of generalists, is a great way to get your virtual teams off to a good start. Enable taste of communication, by making systems easy to understand and easy to traverse. Lower cognitive loads. Our cognitive load needs to be kept low so that everyone knows what to do. This helps us strengthen our systems and when we communicate, and when we do communicate, it becomes far more meaningful.

Now here's the list of resources. And finally, thank you so much.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

TechLead Conference 2023TechLead Conference 2023
35 min
A Framework for Managing Technical Debt
Let’s face it: technical debt is inevitable and rewriting your code every 6 months is not an option. Refactoring is a complex topic that doesn't have a one-size-fits-all solution. Frontend applications are particularly sensitive because of frequent requirements and user flows changes. New abstractions, updated patterns and cleaning up those old functions - it all sounds great on paper, but it often fails in practice: todos accumulate, tickets end up rotting in the backlog and legacy code crops up in every corner of your codebase. So a process of continuous refactoring is the only weapon you have against tech debt.In the past three years, I’ve been exploring different strategies and processes for refactoring code. In this talk I will describe the key components of a framework for tackling refactoring and I will share some of the learnings accumulated along the way. Hopefully, this will help you in your quest of improving the code quality of your codebases.

React Day Berlin 2022React Day Berlin 2022
29 min
Fighting Technical Debt With Continuous Refactoring
Let’s face it: technical debt is inevitable and rewriting your code every 6 months is not an option. Refactoring is a complex topic that doesn't have a one-size-fits-all solution. Frontend applications are particularly sensitive because of frequent requirements and user flows changes. New abstractions, updated patterns and cleaning up those old functions - it all sounds great on paper, but it often fails in practice: todos accumulate, tickets end up rotting in the backlog and legacy code crops up in every corner of your codebase. So a process of continuous refactoring is the only weapon you have against tech debt. In the past three years, I’ve been exploring different strategies and processes for refactoring code. In this talk I will describe the key components of a framework for tackling refactoring and I will share some of the learnings accumulated along the way. Hopefully, this will help you in your quest of improving the code quality of your codebases.
React Advanced Conference 2021React Advanced Conference 2021
19 min
Automating All the Code & Testing Things with GitHub Actions
Code tasks like linting and testing are critical pieces of a developer’s workflow that help keep us sane like preventing syntax or style issues and hardening our core business logic. We’ll talk about how we can use GitHub Actions to automate these tasks and help keep our projects running smoothly.
React Summit 2023React Summit 2023
26 min
Principles for Scaling Frontend Application Development
After spending over a decade at Google, and now as the CTO of Vercel, Malte Ubl is no stranger to being responsible for a team’s software infrastructure. However, being in charge of defining how people write software, and in turn, building the infrastructure that they’re using to write said software, presents significant challenges. This presentation by Malte Ubl will uncover the guiding principles to leading a large software infrastructure.
JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Building Fun Experiments with WebXR & Babylon.js
During this session, we’ll see a couple of demos of what you can do using WebXR, with Babylon.js. From VR audio experiments, to casual gaming in VR on an arcade machine up to more serious usage to create new ways of collaboration using either AR or VR, you should have a pretty good understanding of what you can do today.
Check the article as well to see the full content including code samples: article. 

Workshops on related topic

DevOps.js Conf 2022DevOps.js Conf 2022
152 min
MERN Stack Application Deployment in Kubernetes
Workshop
Deploying and managing JavaScript applications in Kubernetes can get tricky. Especially when a database also has to be part of the deployment. MongoDB Atlas has made developers' lives much easier, however, how do you take a SaaS product and integrate it with your existing Kubernetes cluster? This is where the MongoDB Atlas Operator comes into play. In this workshop, the attendees will learn about how to create a MERN (MongoDB, Express, React, Node.js) application locally, and how to deploy everything into a Kubernetes cluster with the Atlas Operator.
DevOps.js Conf 2022DevOps.js Conf 2022
13 min
Azure Static Web Apps (SWA) with Azure DevOps
WorkshopFree
Azure Static Web Apps were launched earlier in 2021, and out of the box, they could integrate your existing repository and deploy your Static Web App from Azure DevOps. This workshop demonstrates how to publish an Azure Static Web App with Azure DevOps.
React Summit 2023React Summit 2023
88 min
Deploying React Native Apps in the Cloud
WorkshopFree
Deploying React Native apps manually on a local machine can be complex. The differences between Android and iOS require developers to use specific tools and processes for each platform, including hardware requirements for iOS. Manual deployments also make it difficult to manage signing credentials, environment configurations, track releases, and to collaborate as a team.
Appflow is the cloud mobile DevOps platform built by Ionic. Using a service like Appflow to build React Native apps not only provides access to powerful computing resources, it can simplify the deployment process by providing a centralized environment for managing and distributing your app to multiple platforms. This can save time and resources, enable collaboration, as well as improve the overall reliability and scalability of an app.
In this workshop, you’ll deploy a React Native application for delivery to Android and iOS test devices using Appflow. You’ll also learn the steps for publishing to Google Play and Apple App Stores. No previous experience with deploying native applications is required, and you’ll come away with a deeper understanding of the mobile deployment process and best practices for how to use a cloud mobile DevOps platform to ship quickly at scale.
DevOps.js Conf 2022DevOps.js Conf 2022
163 min
How to develop, build, and deploy Node.js microservices with Pulumi and Azure DevOps
Workshop
The workshop gives a practical perspective of key principles needed to develop, build, and maintain a set of microservices in the Node.js stack. It covers specifics of creating isolated TypeScript services using the monorepo approach with lerna and yarn workspaces. The workshop includes an overview and a live exercise to create cloud environment with Pulumi framework and Azure services. The sessions fits the best developers who want to learn and practice build and deploy techniques using Azure stack and Pulumi for Node.js.