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

This talk has been presented at DevOps.js Conf 2022, check out the latest edition of this Tech Conference.

FAQ

Video games like Age of Empires 2 demonstrate the efficiency of task allocation among multiple players, which can be analogous to assigning team members in a project. However, unlike simple game tasks, complex projects in software development require careful partitioning and communication, making the process more challenging.

The Mythical Man Month is a concept from a collection of essays which argues that adding more people to a delayed software project will further delay it. This is especially true in tasks that require significant communication and cannot be easily partitioned among team members.

Collective intelligence refers to a group's ability to perform tasks well together. Factors enhancing collective intelligence include social perceptiveness, cognitive diversity, and equitable communication distribution. However, excessive verbal communication does not necessarily correlate with higher collective intelligence.

Studies using games like League of Legends show that teams matched based on abilities rather than in-depth personal knowledge can perform exceptionally well. This suggests that understanding each team member's skills may be more beneficial than a deep understanding of their personal work habits.

Optimizing performance in software development can be achieved by keeping teams small, ensuring cross-functionality, and integrating systems that are easy to understand and navigate. This reduces cognitive load and increases the meaningfulness of communications.

Smaller teams help reduce the complexity of communication and coordination, leading to more efficient and effective project management. Keeping team sizes to no more than nine members can optimize performance and agility.

Key metrics include deployment frequency, which should be high, and other metrics related to system understanding and reliability, which should be kept as low as possible to ensure confidence and consistency in deployments.

Jessica Cregg
Jessica Cregg
7 min
25 Mar, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

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

Levelling up Monorepos with npm Workspaces
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Levelling up Monorepos with npm Workspaces
Top Content
NPM workspaces help manage multiple nested packages within a single top-level package, improving since the release of NPM CLI 7.0. You can easily add dependencies to workspaces and handle duplications. Running scripts and orchestration in a monorepo is made easier with NPM workspaces. The npm pkg command is useful for setting and retrieving keys and values from package.json files. NPM workspaces offer benefits compared to Lerna and future plans include better workspace linking and adding missing features.
A Framework for Managing Technical Debt
TechLead Conference 2023TechLead Conference 2023
35 min
A Framework for Managing Technical Debt
Top Content
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
Principles for Scaling Frontend Application Development
React Summit 2023React Summit 2023
26 min
Principles for Scaling Frontend Application Development
Top Content
Watch video: Principles for Scaling Frontend Application Development
This Talk discusses scaling front-end applications through principles such as tearing down barriers, sharing code in a monorepo, and making it easy to delete code. It also emphasizes incremental migration, embracing lack of knowledge, and eliminating systematic complexity. The Talk highlights the use of automation in code migration and the importance of removing barriers to enable smoother code migration.
Building Fun Experiments with WebXR & Babylon.js
JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Building Fun Experiments with WebXR & Babylon.js
Top Content
This Talk explores the use of Babylon.js and WebXR to create immersive VR and AR experiences on the web. It showcases various demos, including transforming a 2D game into a 3D and VR experience, VR music composition, AR demos, and exploring a virtual museum. The speaker emphasizes the potential of web development in the metaverse and mentions the use of WebXR in Microsoft products. The limitations of WebXR on Safari iOS are discussed, along with the simplicity and features of Babylon.js. Contact information is provided for further inquiries.
Fighting Technical Debt With Continuous Refactoring
React Day Berlin 2022React Day Berlin 2022
29 min
Fighting Technical Debt With Continuous Refactoring
Top Content
This Talk discusses the importance of refactoring in software development and engineering. It introduces a framework called the three pillars of refactoring: practices, inventory, and process. The Talk emphasizes the need for clear practices, understanding of technical debt, and a well-defined process for successful refactoring. It also highlights the importance of visibility, reward, and resilience in the refactoring process. The Talk concludes by discussing the role of ownership, management, and prioritization in managing technical debt and refactoring efforts.
Automating All the Code & Testing Things with GitHub Actions
React Advanced Conference 2021React Advanced Conference 2021
19 min
Automating All the Code & Testing Things with GitHub Actions
Top Content
We will learn how to automate code and testing with GitHub Actions, including linting, formatting, testing, and deployments. Automating deployments with scripts and Git hooks can help avoid mistakes. Popular CI-CD frameworks like Jenkins offer powerful orchestration but can be challenging to work with. GitHub Actions are flexible and approachable, allowing for environment setup, testing, deployment, and custom actions. A custom AppleTools Eyes GitHub action simplifies visual testing. Other examples include automating content reminders for sharing old content and tutorials.

Workshops on related topic

Deploying React Native Apps in the Cloud
React Summit 2023React Summit 2023
88 min
Deploying React Native Apps in the Cloud
WorkshopFree
Cecelia Martinez
Cecelia Martinez
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.
MERN Stack Application Deployment in Kubernetes
DevOps.js Conf 2022DevOps.js Conf 2022
152 min
MERN Stack Application Deployment in Kubernetes
Workshop
Joel Lord
Joel Lord
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.
Azure Static Web Apps (SWA) with Azure DevOps
DevOps.js Conf 2022DevOps.js Conf 2022
13 min
Azure Static Web Apps (SWA) with Azure DevOps
WorkshopFree
Juarez Barbosa Junior
Juarez Barbosa Junior
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.
How to develop, build, and deploy Node.js microservices with Pulumi and Azure DevOps
DevOps.js Conf 2022DevOps.js Conf 2022
163 min
How to develop, build, and deploy Node.js microservices with Pulumi and Azure DevOps
Workshop
Alex Korzhikov
Andrew Reddikh
2 authors
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.