Gaming the System: Cómo los videojuegos pueden ayudarnos a crear equipos virtuales más efectivos

Rate this content
Bookmark

¿Qué tienen en común la Ley de Conway y el videojuego League of Legends? Ambos pueden enseñarnos cómo organizar equipos de desarrollo que logren una inteligencia colectiva. Cuando se trata del arte del desarrollo de software, nunca es un juego de azar

7 min
25 Mar, 2022

Video Summary and Transcription

La charla de hoy explora las lecciones que los videojuegos pueden enseñarnos sobre la construcción de equipos virtuales. Se discute el impacto de la comunicación en el desarrollo de software, destacando la importancia de comprender el software para una implementación exitosa. Se introduce el concepto de inteligencia colectiva, enfatizando el papel de la percepción social, la diversidad cognitiva y la distribución equitativa de la comunicación. La charla también enfatiza la necesidad de optimizar el rendimiento del equipo con métricas clave y sugiere mantener los equipos pequeños y multifuncionales para facilitar la comunicación y reducir la carga cognitiva.

Available in English

1. Video Games and Virtual Teams

Short description:

Hola a todos, soy Jessica Craig y soy una Defensora del Desarrollador en LaunchDarkly. Hoy hablaré sobre los videojuegos y lo que nos pueden enseñar sobre cómo construir mejores equipos virtuales. La colaboración no siempre es la respuesta para resolver problemas. El libro El mes del hombre mítico analiza el impacto de la comunicación en el desarrollo de software. La inteligencia colectiva es la capacidad de un grupo para desempeñarse bien, y puede verse influenciada por la percepción social, la diversidad cognitiva y la distribución equitativa de la comunicación.

Hola a todos, soy Jessica Craig y soy una Defensora del Desarrollador en LaunchDarkly. Hola a todos, soy Jessica Craig y soy una Defensora del Desarrollador en LaunchDarkly.

Hoy estoy aquí para hablarles sobre los juegos video y lo que nos pueden enseñar sobre cómo construir mejores equipos virtuales. Cuando algo sale mal, ¿cuál es tu primer instinto? ¿Pides ayuda? Deberías ser perdonado por pensar que la colaboración es la respuesta a tus problemas. Entre los dichos de que dos cabezas piensan mejor que una y un problema compartido es un problema reducido a la mitad, es comprensible pensar que agregar a otra persona a la mezcla podría mejorar tus posibilidades de llegar a la solución y llegar más rápido. Quiero decir, ¿funciona con la programación en pareja, verdad? Pero esto no siempre es el caso.

Ahora, si has jugado juegos de computadora y recuerdas Age of Empires 2, recordarás que la mejor manera de construir una estructura rápidamente es asignar tantos aldeanos como sea posible a esa tarea. Pero cuando se trata de infraestructura digital fuera de un video juego, o incluso los propios video juegos, necesitamos tener en cuenta algunas diferencias clave.

Ahora, el libro El mes del hombre mítico, como muchos de nosotros sabemos, es una colección de ensayos sobre la artesanía del desarrollo de software que analiza la idea de que la cantidad de personas y el tiempo requerido para completar algo pueden ser intercambiables como bienes solo cuando una tarea se puede dividir entre muchos trabajadores sin comunicación entre ellos. Pero cuando una tarea no se puede dividir, ya sea debido a su estructura o su complejidad, el esfuerzo adicional no tiene impacto en el cronograma actual. Ahora, el desarrollo de software se encuentra entre estas dos categorías mencionadas anteriormente. Las tareas pueden, por supuesto, dividirse. Podemos descomponer algo en lotes más pequeños, pero se requiere comunicación entre cada sub-tarea, ya sea para resolver problemas o para informar el estado. En estas situaciones, el mejor resultado posible no se acerca ni de lejos a un intercambio equitativo entre personas y horas. Ahora, hay algunas corrientes de pensamiento sobre cómo se pondera la carga cognitiva hacia la comunicación. Pero se acepta ampliamente que la intercomunicación es donde radica la mayor parte del trabajo. Si cada parte de la tarea en la que estás trabajando necesita ser coordinada por separado, el esfuerzo requerido para completar esa sección del trabajo aumenta a una tasa casi exponencial con más personas involucradas. Tres personas requerirán tres veces más interacción que dos personas para realizar la misma cantidad de trabajo, y eso solo aumenta, como podemos ver en la línea aquí. Las cosas solo se complican cuando se suman las reuniones de grupo. Esta línea de tiempo proyectada realmente muestra la Ley de Brooks en acción, que agregar personas a proyectos de software atrasados solo hace que se retrasen aún más. Pero para abordar esto, hablemos del concepto de inteligencia colectiva.

La inteligencia colectiva es descrita por los investigadores como la capacidad de un grupo para desempeñarse bien. Esencialmente, es un índice de competencia a nivel de grupo que, a pesar de ser ampliamente reconocido, todavía se está estudiando y comprendiendo activamente. Un estudio utilizó el videojuego de arena de batalla en línea masiva, League of Legends, como método de testing para determinar si los equipos virtuales emparejados en función de sus habilidades, en lugar de una comprensión profunda de sus hábitos de trabajo y de los demás, podrían superar a los últimos. ¿Qué tiene que ver esto con el trabajo? Bueno, gran parte de los videojuegos de arena de batalla en línea masiva se caracterizan por su intensidad, su toma de decisiones rápidas y su competitividad, lo cual no es muy diferente de las organizaciones del mundo real en las que trabajamos todos los días. ¿Y qué encontraron estos investigadores? Bueno, al investigar la medida de la inteligencia colectiva, los investigadores encontraron que la capacidad de un grupo para desempeñarse bien en una tarea era en gran medida transferible, lo que significa que si podían hacer una cosa bien, es probable que también puedan hacer nuevas tareas bien. Las cosas que nos pueden hacer colectivamente inteligentes son la percepción social, un nivel moderado de diversidad cognitiva y una gran cantidad y distribución equitativa de la comunicación. Pero en este último punto, los investigadores notaron que la comunicación verbal no se equiparaba a o altos niveles de comunicación verbal, más bien no se equiparaba a un alto nivel de inteligencia colectiva. De hecho, los investigadores midieron la desviación estándar, tanto en las líneas de chat de los jugadores exitosos como en el recuento de palabras dentro de esos mensajes de chat.

2. Communication and Team Performance

Short description:

Un mayor chat no equivale a inteligencia colectiva. Los jugadores habilidosos pasan menos tiempo comunicándose. Comprender el software es crucial para una implementación exitosa. Optimiza el rendimiento del equipo con métricas clave. Mantén los equipos pequeños y multifuncionales. Facilita la comunicación y reduce la carga cognitiva.

Y descubrieron que un mayor chat, más líneas de chat o más comunicación por chat no equivale a un alto nivel de inteligencia colectiva o, de hecho, a un buen rendimiento. Una de las primeras observaciones del estudio, de hecho, encontró que los jugadores más habilidosos tienden a pasar menos tiempo comunicándose por preferencia. Son buenos en el juego y ahí es donde quieren pasar su tiempo. Minimizan el cambio de contexto, se involucran en señales no verbales casi instintivamente.

¿Les suena familiar? Un sabor a comunicación, mencionado aquí, es el reconocimiento no expresado de la posición de los demás. Y lo más importante, conduce a acciones para objetivos comunes. En el contexto de una empresa, esto se ve como evidencia de abogar por medidas de observabilidad, automatización, pero, por supuesto, optando por métricas que todos entiendan genuinamente. Si no entendemos el software que estamos probando, es probable que restrinjamos la cantidad de veces que implementamos.

Y como cualquiera que haya leído el libro `Accelerate` o seguido los informes anuales del Estado de DevOps sabrá, optimizar el rendimiento del equipo se puede lograr mediante el seguimiento de estas cuatro métricas clave, todas las cuales deseamos reducir, excepto la frecuencia de implementación, que deseamos que sea lo más alta posible. Ahora, si el software con el que estamos trabajando no encaja perfectamente en nuestras mentes, estas métricas tendrán un valor casi finito. Es probable que desconfiemos de nuestras pruebas en primer lugar, nuestra confianza para implementar se desplomará, y si no entendemos los servicios con los que estamos trabajando, no podremos restaurarlos cuando inevitablemente se caigan.

Entonces, como resumen rápido, mantén tu equipo pequeño, apunta a no más de nueve en tu equipo, si es posible. Mantén los equipos multifuncionales, con un miembro del equipo elegido intencionalmente para ayudarte a aplicar este último principio, para contratar personas con la reputación de especialistas pero con las capacidades de generalistas, es una excelente manera de comenzar bien con tus equipos virtuales. Facilita el sabor de la comunicación, haciendo que los sistemas sean fáciles de entender y recorrer. Reduce la carga cognitiva. Nuestra carga cognitiva debe mantenerse baja para que todos sepan qué hacer. Esto nos ayuda a fortalecer nuestros sistemas y cuando nos comunicamos, y cuando lo hacemos, se vuelve mucho más significativo.

Aquí está la lista de recursos. Y finalmente, muchas gracias. He sido Jessica Craig y espero que tengas un maravilloso DevOps.js.

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
Top Content
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 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.
React Advanced Conference 2021React Advanced Conference 2021
19 min
Automating All the Code & Testing Things with GitHub Actions
Top Content
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.
JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Building Fun Experiments with WebXR & Babylon.js
Top Content
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.
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
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.
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.