Cloud Native Blog - Container Solutions

What Video Games Like Apex Legends Can Teach Us About Teamwork and Microservices

Written by José Moreira | May 29, 2019 11:01:16 PM

Online video games bring together players from around the world, offering the opportunity to work as teams toward a common goal. As gamers enter into joint missions, skills such as leadership, communication, negotiation, and collaboration get a workout. A lot of research has been done to confirm that gaming can build real-life teamwork and interpersonal skills, and even more research has examined the relationship between teamwork and project management.

When it comes to microservices, there are striking parallels with gaming. Microservices is a software design approach where applications are developed as modular suites of independently deployable services. Microservices are a key component of Cloud Native architecture, producing applications that are faster and more resilient than ever before, as well as almost infinitely scalable.  

But microservices have an impact on team culture, too. Teams become smaller and smaller even as they become more self-contained and distributed; because they are working so independently silos can—and do—form. So teamwork and communication are more essential than ever.

Video games provide a framework for comprehending how teams might function in the microservices era. Think about it: Both microservices architecture and multiplayer video games are systems in which multiple, independent teams come together to work collectively toward a greater goal. They work within a framework where there are rules and a shared understanding of process. The team’s independence is limited by these external guidelines, but within the group, members are free to make decisions on their own and execute the process as they see fit.

Let’s take a look at how this works inside a particular game.

Apex Legends

Apex Legends is a new and explosively popular game that reached 50 million players within weeks of initial launch. Each match consists of 60 players, divided into 20 squads with three members each. At the start of play, every player is dropped onto a large island and the last squad standing— with at least one member still alive—wins the match.

The goal of the game is to win the match—but is that actually the goal of your squad? Some players may have a different objective in mind, which can cause conflict on the team unless clear communication and negotiation are practiced. For example, arguably the safest way to win the match is to delay fighting other squads as long as possible, which lowers the risk of being eliminated and means there are ultimately fewer rivals to fight at the end of the match. Alternatively, jumping into battle right away is riskier, but offers the potential rewards of superior equipment looted from fallen foes.

Both are valid approaches, with potential costs and benefits. It’s the same in software projects: All approaches carry risks and rewards. Some players enjoy playing high risk to get high rewards. This would be the team member who wants to jump straight into the fight—or choose the cool, innovative, but bleeding-edge technology over the proven stability and robust toolset of a more mature solution.

The thing is, a team can’t do both. Only one option can be pursued. There needs to be communication and consensus—or the team will fragment and the objective will be lost. Team members must understand the pros and cons of the possible paths so they can reach a group decision about the best one for the project. Disagreements will erupt, but team members and other stakeholders should be aware of what drives each other, so they can harness their skills and energy to reach their shared goal.

Apex Legends offers multiple options for communicating with squadmates. Classic voice (microphone) channel communication is the usual go-to, but Apex offers other, non-voice channels, too. A player can tell their team that they want to move or defend to a particular place, that there is a valuable item that can be collected, or that there are incoming opponents.  

Being able to choose how to communicate is a competitive advantage. Not every player feels comfortable with voice chat, because they might be shy or just don't want to deal with more aggressive, vocal people that might join random matches (if you aren’t playing with friends, the game assigns you to a squad at random).

In software projects, this correlates to choosing good and effective communication tools that fit not only the project but also the team. Keeping it simple—avoiding fragmentation by not having too many communication/project management tools—lowers communication barriers, reduces friction, and improves effectiveness. Similarly, meeting structures should fit the team and its members’ personalities, so that everybody feels comfortable and able to contribute.

This is especially true for teams that are working with a microservices architecture. Like a fast-paced video game, microservices require constant situational awareness (monitoring) and the ability to respond quickly, flexibly, and creatively to new situations as they arise.

Teammate Down?

In Apex Legends, when a squadmate’s “health bar,” which measured their vitality, gets to zero, they are in a "downed" state. In that state, they can move (slowly) and also alert squadmates to enemy locations, but cannot take any other actions (shoot, heal, etc). Squadmates then have 90 seconds to revive their downed player. If the player is not revived in that time, squads have another 90 seconds to pick up the player’s "badge", take the badge to specific points in the map, and recall that player.

Knowing where the opponents are, and particularly being warned of surprise attacks, can be vital to surviving and therefore winning. A downed player can still ping the team’s enemies and do other helpful tasks. Similarly, a software project team member who is not super productive, is sick, or having a bad week, can still contribute in positive and vital ways to a project.

Counterintuitively, though, reviving a fallen teammate is not always the best move. It can distract from battling opponents. If the team’s collective goal is to win, the best decision might not be the logical one of rescuing a teammate to keep the squad intact.

In software project terms, this relates to evaluating short- vs. long-term decision making. There are times when the best outcome might require actions that don’t solve the immediate problem. To know the right thing to do, then, a team needs to also take higher-level goals into account. For example, when a team member lacks an essential skill, the temptation is for others on the team to try to fill the gap, in order to keep the project moving ahead. But the best long-term solution would be to close the skills gap by providing training. It will take longer, and you might miss the “win” of a short-term project deadline. But in the long run, your squad will be more powerful.

“One-Man Armies”

In video games it is not uncommon to come across "one-man armies"—players so good they are capable of taking on opponent squads by themselves and practically carrying their team to victory. In software we have “10x developers” — devs so skilled they are said to be as productive as ten ordinary developers. Those team members can be very valuable to a team but there are also downsides.

If one teammate, however skilled they may be, has a large ego or talks over everyone else, the rest of the team could feel overshadowed and devalued. They may keep their ideas to themselves, or simply work to a bare minimum level, under the assumption that the one-man army will take care of everything. For sure, their morale and professional development will suffer.

And then what happens when that rock star team member is not available? You get a total party wipe, or your project grinds to a halt. Some things can help mitigate the situation for a microservices team, such as maintaining decent documentation—hey, a good way to keep yourself busy while the rock star hogs the best of the work assignments!—so someone else can step in. But the best thing to do is simply not allow that kind of unbalanced know-how to develop in the first place.

Balance, after all, is the key to teamwork in any distributed system, whether that happens to be in a fantasy combat arena or a microservices team.

Feature illustration by Fabricio Sampaio Guerra, with assistance by Theo Guedes, shows the Apex Legends crew hanging around in the Container Solutions Amsterdam office. See more of Fabricio's work at https://fabricioguerra.com.br/

Looking for a new challenge? We're hiring!