Órdenes y Magnitud

Rate this content
Bookmark

Las órdenes de magnitud importan. Las cosas no aumentan en un orden de uno cada vez. Organizar a las personas en un grupo requiere la difusión de información y su interpretación y, lo más importante, su distribución. El trabajo remoto y la colaboración asincrónica se han convertido en la norma, lo que significa que los equipos distribuidos han llevado consigo sus silos de conocimiento. El impacto de esto ha agravado cualquier problema de habilidades que experimenten las organizaciones, convirtiéndolo en un problema de distribución de habilidades, aumentando la importancia de una buena documentación y procesos de interacción transparentes. En esta sesión, repasaremos los fundamentos de la ingeniería de requisitos, analizando cómo las órdenes de magnitud aumentan junto con la expansión del alcance y los requisitos adicionales. Por último, discutiremos cómo puedes aplicar elementos del pensamiento de plataforma a tus proyectos diarios.

7 min
18 Feb, 2022

Video Summary and Transcription

La charla analiza la relación entre la complejidad y la colaboración en el desarrollo de software. Destaca que la colaboración no siempre es la respuesta para resolver problemas y que la comunicación es crucial en el desarrollo de software. Se introduce el concepto de inteligencia colectiva, que describe la capacidad de un grupo para desempeñarse bien juntos en tareas. El estudio mencionado en la charla muestra que la inteligencia colectiva es transferible entre tareas, y los jugadores habilidosos se basan en señales no verbales y en la comprensión del software. La falta de comprensión puede llevar a dificultades en el rendimiento y la implementación del equipo.

Available in English

1. Introducción a la Complejidad y Colaboración

Short description:

Hola, mi nombre es Jessica y soy una defensora del desarrollo con LaunchDarkly. Somos una plataforma de gestión de funciones que te ayuda a controlar tu software al separar el proceso de implementación de la liberación. Hoy vamos a hablar sobre cómo las órdenes de magnitud se escalan con la complejidad. La colaboración no siempre es la respuesta para resolver problemas. El desarrollo de software se encuentra entre tareas que se pueden dividir y aquellas que no se pueden. La comunicación es un aspecto crucial del desarrollo de software, y agregar más personas a una tarea puede hacerla más tardía. La inteligencia colectiva es un concepto que describe la capacidad de un grupo para desempeñarse bien juntos en una variedad de tareas. Un estudio basado en League of Legends mostró que los equipos virtuales con habilidades emparejadas pueden superar a aquellos con un conocimiento profundo entre ellos.

Somos una plataforma de gestión de funciones que te ayuda a controlar tu software al separar el proceso de implementación de la liberación.

Hoy vamos a hablar sobre cómo las órdenes de magnitud se escalan con la complejidad. Entonces, cuando algo sale mal, ¿cuál es tu primer instinto? ¿Pides ayuda? Se te perdonaría si piensas que la colaboración es la respuesta a tus problemas aquí. Porque entre los dos dichos de que un problema compartido es un problema dividido a la mitad y dos cabezas son mejores que una. Es comprensible que pienses que agregar otra persona a la mezcla puede mejorar tus posibilidades de llegar a una solución más rápido. Pero esto no siempre es el caso.

Si has jugado videojuegos, es posible que recuerdes que en Age of Empires 2, la mejor manera de construir una estructura rápidamente es asignar tantos aldeanos como sea posible a la tarea. Cuando se trata de infraestructura digital que existe fuera de los juegos de video o los propios juegos de video, tenemos que tener en cuenta algunas diferencias clave. Ahora, en el mes mítico, una colección de ensayos sobre la artesanía del desarrollo de software. Discutimos la idea de que el número de personas y la cantidad de tiempo requeridos para hacer algo no son realmente intercambiables como productos básicos. Esto solo es cierto cuando una tarea se puede dividir entre muchos trabajadores sin comunicación entre ellos. Pero cuando una tarea no se puede dividir debido a su estructura o complejidad, el esfuerzo adicional no tiene impacto en el cronograma real.

Ahora, el desarrollo de software se encuentra entre estas dos categorías. Se puede dividir, pero se requiere comunicación entre cada sub-tarea. Y en estas situaciones, el mejor resultado posible no se acerca a un intercambio equitativo entre personas y horas. Ahora hay algunas corrientes de pensamiento sobre cómo se distribuye la carga cognitiva en torno a la comunicación al menos. Pero se acepta ampliamente que la intercomunicación, hablar entre sí, es donde se encuentra la mayoría del trabajo. Ahora, si cada parte de la tarea en la que estás trabajando necesita ser coordinada por separado, la sección de trabajo, aumenta a un nivel casi exponencial. Ahora, tres personas requerirán tres veces más interacción que dos personas haciendo la misma pieza de trabajo exacta. Las cosas solo se complican cuando se juntan las reuniones de grupo. Este cronograma proyectado realmente muestra que agregar personas tarde al software solo hace que sea más tarde.

Ahora, para abordar esto, hablemos del concepto de inteligencia colectiva. Los investigadores describen la inteligencia colectiva como la capacidad de un grupo para poder desempeñarse bien en una amplia variedad de tareas, y hacerlo juntos. A pesar de la evidencia y utilidad de la inteligencia colectiva como un índice de competencia a nivel de grupo, la inteligencia colectiva como tema es bastante nuevo como concepto. Pero un estudio que buscó descubrir dónde ocurre la magia con la inteligencia colectiva se basó en League of Legends. Utilizaron el juego de arena de batalla en línea masivo como un método de testing para determinar si los equipos virtuales emparejados en función de sus habilidades podrían superar a aquellos que tenían un conocimiento profundo entre sí. Y ¿qué tiene que ver League con el trabajo? Bueno, los equipos virtuales son muy comunes en estos días. Sabes, los juegos de arena de batalla en línea masivos se caracterizan por su intensidad, su necesidad de tomar decisiones rápidas y su competitividad, lo cual suena bastante familiar para muchas operaciones comerciales. Creo que reconocería algunas de esas características sin duda.

2. Inteligencia Colectiva y Comprender el Software

Short description:

El estudio encontró que la inteligencia colectiva es en gran medida transferible entre tareas. La comunicación verbal no equivale a una alta inteligencia colectiva. Los jugadores habilidosos tienden a pasar menos tiempo comunicándose y confían en señales no verbales. Comprender el software y utilizar métricas que todos entiendan son cruciales para el rendimiento del equipo y la implementación. La falta de comprensión puede generar desconfianza en las pruebas y dificultades para restablecer los servicios.

Entonces, ¿qué encontró el estudio? Descubrieron que al investigar la medida de la inteligencia colectiva, los investigadores encontraron que la capacidad del grupo para desempeñarse bien en una tarea era en gran medida transferible, lo que significa que si podían hacer una cosa bien, probablemente podrían hacer varias cosas bien. Pero notaron que la comunicación verbal no equivale a un alto nivel de inteligencia colectiva. De hecho, los investigadores encontraron que las personas hablaban menos y usaban menos palabras al comunicarse entre sí cuando lograban ese sentido de inteligencia colectiva y, por lo tanto, un alto rendimiento.

Una de las primeras observaciones de los estudios fue que los jugadores más habilidosos tendían a pasar menos tiempo comunicándose por preferencia. Sabes, son buenos en el juego y ahí es donde quieren pasar su tiempo y minimizan el cambio de contexto e involuntariamente se involucran en señales no verbales. Nuestra habilidad en la comunicación mencionada mucho en este estudio es el reconocimiento no expresado de la posición de los demás. Y lo más importante, conduce a acciones para la actividad común.

En el contexto de una empresa, esto es evidencia para abogar por medidas de observabilidad, optar por la automatización, pero lo más importante, utilizar 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 Accelerate o siga un informe de estado de DevOps sabe, optimizar el rendimiento del equipo se puede lograr mediante el seguimiento de estas cuatro métricas clave. Si el software con el que estamos trabajando no encaja perfectamente en nuestras mentes, estas métricas tendrán un valor casi finito. No podremos superar esa capa intermedia y acceder a esa capa de equipos de élite de la que hablan muchos informes de estado de DevOps. Si no entendemos lo que estamos construyendo, es probable que desconfiemos de nuestras pruebas. ¿Por qué pasó eso? Esa es una pregunta muy comprensible y común que nos hacemos a nosotros mismos cuando estamos atrapados en un editor de código. Nuestra confianza en la implementación disminuirá si no sabemos lo que estamos haciendo. Si no entendemos los servicios que estamos construyendo o con los que estamos trabajando, no podremos restablecerlos rápidamente y se caerán. Entonces, en esencia, si minimizas un alcance, puedes maximizar el impacto de en lo que estás trabajando. Muchas gracias y nos vemos en la sesión de preguntas y respuestas.

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

React Summit 2022React Summit 2022
27 min
Impact: Growing as an Engineer
Top Content
Becoming a web engineer is not easy, but there are tons of resources out there to help you on your journey. But where do you go from there? What do you do to keep growing, and to keep expanding the value you bring to your company? In this talk we’ll look at the different kinds of impact you can have as a web engineer. We’ll walk through what it means to take on bigger, more complex projects, and how to scale yourself, and grow the community around you. By driving our own development we can all grow our impact, and in this talk, we’ll discuss how to go about this.
TechLead Conference 2023TechLead Conference 2023
25 min
On Becoming a Tech Lead
Tech lead sounds like a lot of work. And not the fun coding kind either. Why would you ever want that? What does it feel like when you get it?In this talk Swizec explains why he took the step towards technical leadership, how his priorities changed, and why it means he’s doing more engineering than ever. A whole new world where writing code is the easy part.
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.

Node Congress 2022Node Congress 2022
26 min
It's a Jungle Out There: What's Really Going on Inside Your Node_Modules Folder
Top Content
Do you know what’s really going on in your node_modules folder? Software supply chain attacks have exploded over the past 12 months and they’re only accelerating in 2022 and beyond. We’ll dive into examples of recent supply chain attacks and what concrete steps you can take to protect your team from this emerging threat.
You can check the slides for Feross' talk here.
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 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.

Workshops on related topic

Node Congress 2023Node Congress 2023
109 min
Node.js Masterclass
Workshop
Have you ever struggled with designing and structuring your Node.js applications? Building applications that are well organised, testable and extendable is not always easy. It can often turn out to be a lot more complicated than you expect it to be. In this live event Matteo will show you how he builds Node.js applications from scratch. You’ll learn how he approaches application design, and the philosophies that he applies to create modular, maintainable and effective applications.

Level: intermediate
Node Congress 2023Node Congress 2023
63 min
0 to Auth in an Hour Using NodeJS SDK
WorkshopFree
Passwordless authentication may seem complex, but it is simple to add it to any app using the right tool.
We will enhance a full-stack JS application (Node.JS backend + React frontend) to authenticate users with OAuth (social login) and One Time Passwords (email), including:- User authentication - Managing user interactions, returning session / refresh JWTs- Session management and validation - Storing the session for subsequent client requests, validating / refreshing sessions
At the end of the workshop, we will also touch on another approach to code authentication using frontend Descope Flows (drag-and-drop workflows), while keeping only session validation in the backend. With this, we will also show how easy it is to enable biometrics and other passwordless authentication methods.
Table of contents- A quick intro to core authentication concepts- Coding- Why passwordless matters
Prerequisites- IDE for your choice- Node 18 or higher
JSNation 2023JSNation 2023
104 min
Build and Deploy a Backend With Fastify & Platformatic
WorkshopFree
Platformatic allows you to rapidly develop GraphQL and REST APIs with minimal effort. The best part is that it also allows you to unleash the full potential of Node.js and Fastify whenever you need to. You can fully customise a Platformatic application by writing your own additional features and plugins. In the workshop, we’ll cover both our Open Source modules and our Cloud offering:- Platformatic OSS (open-source software) — Tools and libraries for rapidly building robust applications with Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (currently in beta) — Our hosting platform that includes features such as preview apps, built-in metrics and integration with your Git flow (https://platformatic.dev/). 
In this workshop you'll learn how to develop APIs with Fastify and deploy them to the Platformatic Cloud.
JSNation Live 2021JSNation Live 2021
156 min
Building a Hyper Fast Web Server with Deno
WorkshopFree
Deno 1.9 introduced a new web server API that takes advantage of Hyper, a fast and correct HTTP implementation for Rust. Using this API instead of the std/http implementation increases performance and provides support for HTTP2. In this workshop, learn how to create a web server utilizing Hyper under the hood and boost the performance for your web apps.
React Summit 2022React Summit 2022
164 min
GraphQL - From Zero to Hero in 3 hours
Workshop
How to build a fullstack GraphQL application (Postgres + NestJs + React) in the shortest time possible.
All beginnings are hard. Even harder than choosing the technology is often developing a suitable architecture. Especially when it comes to GraphQL.
In this workshop, you will get a variety of best practices that you would normally have to work through over a number of projects - all in just three hours.
If you've always wanted to participate in a hackathon to get something up and running in the shortest amount of time - then take an active part in this workshop, and participate in the thought processes of the trainer.
TestJS Summit 2023TestJS Summit 2023
78 min
Mastering Node.js Test Runner
Workshop
Node.js test runner is modern, fast, and doesn't require additional libraries, but understanding and using it well can be tricky. You will learn how to use Node.js test runner to its full potential. We'll show you how it compares to other tools, how to set it up, and how to run your tests effectively. During the workshop, we'll do exercises to help you get comfortable with filtering, using native assertions, running tests in parallel, using CLI, and more. We'll also talk about working with TypeScript, making custom reports, and code coverage.