¿Por qué escalar de abajo hacia arriba? Cómo las interacciones de los equipos deben afectar la estructura organizativa

Rate this content
Bookmark

Todos hemos pasado por reorganizaciones de empresas, probablemente más de una vez. Si algunas son comprensibles y producen buenos resultados, otras no lo son, creando inseguridades, falta de confianza en el liderazgo, cambios innecesarios e incluso caminos de comunicación o toma de decisiones más complejos. ¿Cuál es la diferencia entonces? ¿Existe una forma probada de escalar o cambiar el panorama actual de las organizaciones de las empresas? Sí, la hay. En esta sesión, repasaré, respaldado por un caso de estudio real en la industria, la Ley de Conway y la importancia del panorama y las interacciones de los equipos, y cómo los gráficos de equipos bien diseñados pueden mejorar la independencia, autonomía y motivación de los equipos, lo que conduce a una entrega más rápida y de mejor calidad.

This talk has been presented at TechLead Conference 2023, check out the latest edition of this Tech Conference.

FAQ

La ley de Conway es una observación que indica que el diseño de un sistema está significativamente afectado por la estructura de comunicación de la organización que lo desarrolla. Esto significa que la interfaz de un sistema de software mostrará una congruencia con la estructura social de la organización, impactando directamente en cómo se construye el software, especialmente en entornos de microservicios y diseño orientado al dominio.

Los fragmentos organizativos, al proporcionar una estructura única de equipo y relaciones de reporte, influyen en los patrones de comunicación, que suelen ser paralelos a lo largo del fragmento en lugar de ser de arriba hacia abajo. Esto hace que la eficiencia de la comunicación sea clave para la efectividad de los equipos.

Las cuatro topologías fundamentales incluyen: equipos orientados al negocio, equipos habilitadores que ayudan a superar obstáculos, equipos de subsistemas complicados que requieren habilidades técnicas específicas, y equipos de plataforma que proporcionan servicios a otros equipos para acelerar la entrega.

Los modos de interacción sugeridos incluyen la colaboración intensa para la innovación rápida, el modo de 'X como servicio' para colaboraciones mínimas pero claras, y la facilitación para ayudar a otros equipos a superar obstáculos y mejorar sus capacidades.

Cuando los equipos están altamente cohesionados y débilmente acoplados, pueden operar de manera autónoma dentro de un contexto con responsabilidades claramente definidas, lo que limita los esfuerzos de cambio y aumenta el enfoque y la calidad del trabajo.

El diseño dirigido por dominios ayuda a los equipos a entender y gestionar mejor los límites de responsabilidad, lo que permite un flujo de trabajo más fluido y una mayor propiedad y compromiso con los proyectos, mejorando así la velocidad y calidad de la entrega.

Vânia Santos
Vânia Santos
17 min
09 Mar, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla aborda la importancia del diseño organizativo y las interacciones de los equipos en el desarrollo de software. Explora los desafíos de los fragmentos organizativos y la necesidad de pensar en problemas para optimizar la comunicación del equipo. Se explican los conceptos de acoplamiento suelto, alta cohesión y dominios claros de responsabilidad. La charla también enfatiza los tres modos esenciales de interacción del equipo: trabajar estrechamente juntos, X como servicio y facilitación. Además, destaca la importancia de comprender los dominios, los límites y el diseño impulsado por dominios para un trabajo eficiente y una entrega rápida.

1. Teams Interactions and Organizational Layout

Short description:

En esta parte, discutimos la importancia del diseño organizativo y las interacciones entre equipos, así como el impacto de la estructura de comunicación en el diseño de software. Exploramos los desafíos de los fragmentos organizativos y la necesidad de pensar en problemas para optimizar la comunicación entre equipos. El objetivo es adaptar los equipos a la arquitectura de software deseada, mejorar la estructura e interacciones del equipo, y promover la autonomía, el dominio y el propósito. Se explican los conceptos de acoplamiento suelto, alta cohesión y dominios claros de responsabilidad. Finalmente, el libro Team Topology introduce las Topologías Fundamentales y los Modos de Interacción como formas de repensar los fragmentos organizativos.

Hola a todos, estoy feliz de estar aquí hablando sobre las interacciones entre equipos y el importante papel que desempeñan en la escalabilidad adecuada y la reorientación de los procesos. En los próximos 20 minutos, hablaré un poco sobre los equipos como medios de entrega, las interacciones entre equipos y la importancia de DDD para un flujo rápido. ¡Empecemos!

Entonces, la primera pregunta es, ¿por qué? ¿Por qué es importante el diseño organizativo y las interacciones entre equipos? Bueno, el Sr. Mel Conway observó un patrón de comportamiento que terminaría convirtiéndose en una ley. La ley de Conway es la observación de que el diseño de cualquier sistema está significativamente afectado por la estructura de comunicación de la organización que lo desarrolló, y es una consecuencia del hecho de que dos módulos de software A y B no pueden interactuar correctamente entre sí a menos que el diseñador e implementador de A se comunique con el diseñador e implementador de B. Por lo tanto, la estructura de la interfaz de un sistema de software mostrará necesariamente una congruencia con la estructura social de la organización que lo produjo.

Esto tiene un impacto significativo en cómo se construye el software, especialmente si se adoptan microservicios y un diseño más orientado al dominio, y esto está directamente relacionado con los fragmentos organizativos que las empresas suelen tener. El problema con los fragmentos organizativos es que proporcionan una vista única del equipo, con la relación entre los equipos y las líneas de reporte, pero por lo general los patrones de comunicación no son de arriba hacia abajo en la línea de reporte, son paralelos y a lo largo del fragmento, lo que hace que la eficiencia de la comunicación sea clave para los equipos efectivos. Iremos a donde sea necesario para resolver nuestros problemas, y esta creatividad y método de resolución de problemas debe ser aprovechada en beneficio de la organización, no restringida a las líneas de reporte.

Entonces, ¿cómo podemos resolver los problemas de los fragmentos organizativos? El pensamiento en problemas es un enfoque holístico que se repite constantemente, siempre tratando de optimizar el conjunto, considerando el flujo general de trabajo, identificando cuellos de botella y eliminándolos. Y ahora volvamos a nuestro punto inicial de la comunicación. Los cuellos de botella organizativos comunes son estructuras de equipo ocupadas, mala comunicación y ritmo lento de entrega, y creo que todos hemos pasado, si no todos, por algunos de ellos. El objetivo general es que la arquitectura admita la capacidad de los equipos para completar su trabajo desde el diseño hasta la implementación, sin requerir una comunicación de alta capacidad entre los equipos. ¿Y supongo que esto es el nirvana de la organización, verdad? Esto significa que cada organización debe entender qué arquitectura de software se necesita antes, y aquí van en letras mayúsculas, antes de organizar los equipos. De lo contrario, los paquetes de comunicación y los incentivos en la organización terminarán dictando la arquitectura de software, algo que no queremos. Y aquí volvemos al tema de la comunicación. Cuanto más adaptemos los equipos a la arquitectura deseada, y no al revés, más contenida y mejorará la comunicación, mejorando la eficiencia de los diseños de equipo al eliminar la sobrecarga del caos de la comunicación. Reorganizar o escalar una empresa, basándose en esta suposición, aunque obvia, es un desafío para la jerarquía, ya que está intrínsecamente relacionado con las necesidades de colaboración e interacciones de los equipos, su capacidad para ser flexibles y adaptarse al cambio, y los dominios y límites de carga cognitiva del equipo. La carga cognitiva es el límite de cuánta información puede retener una persona, o en este caso un equipo al unir a todos los miembros, en un momento dado.

Entonces, ¿cuál es el objetivo aquí con esta maniobra, cómo podemos mejorar la estructura e interacciones del equipo? Para empezar, debemos pensar en los equipos como organismos vivos dentro del ecosistema, con individualidades que responden a motivadores crecientes. Estos motivadores suelen ser una referencia de tres elementos, y son autonomía, dominio y propósito, que cuando se habilitan dentro de responsabilidades claramente delimitadas, permiten calidad y velocidad de trabajo aumentadas. ¿Por qué? Hago esta pregunta muchas veces. Bueno, cuando los equipos están débilmente acoplados y altamente cohesionados, significa que son autónomos en el contexto en el que trabajan, un contexto que está restringido en responsabilidades y adaptado a su carga cognitiva, limitando los esfuerzos de cambio, aumentando así el enfoque y la calidad. Es posible que hayas escuchado estos términos antes y se aplican de la misma manera. El acoplamiento suelto es cuando los componentes no tienen dependencias fuertes con otras empresas, y la alta cohesión es cuando los componentes tienen responsabilidades claramente delimitadas y sus elementos internos están fuertemente relacionados. Por lo tanto, estos conceptos se aplican de la misma manera en todos los escenarios. Además, el conjunto claro de dominios de responsabilidad rechaza la mentalidad de `hábil en todo, maestro de nada`, evita que los equipos tengan que lidiar con solicitudes y prioridades de múltiples fuentes. En resumen, los paisajes de equipo adecuados que ponen a los equipos en primer lugar influyen positivamente en los límites de responsabilidad, la velocidad de entrega, la calidad del trabajo y la autonomía, lo que a su vez impacta directamente en el software que los equipos producen. Basado en la ley de Conway, el libro Team Topology menciona dos conceptos fundamentales que ayudan a utilizar los paisajes de equipo para repensar los fragmentos organizativos de la empresa, y los conceptos son las Topologías Fundamentales y los Modos de Interacción. En resumen, ¿cuáles son las mejores topologías en las que los equipos pueden trabajar? Los autores sugieren cuatro topologías fundamentales que van desde equipos orientados al negocio hasta equipos orientados a la plataforma.

2. Team Alignment and Interaction Modes

Short description:

Tenemos equipos alineados con el flujo, equipos habilitadores, equipos de subsistemas complicados y equipos de plataforma. La comunicación e interacción entre equipos son fundamentales, y se discuten tres modos esenciales de interacción entre equipos: trabajar estrechamente juntos, X como servicio y facilitación. Estos conceptos promueven equipos con acoplamiento suelto y alta cohesión en un flujo adecuado de cambios.

Tenemos un equipo alineado con el flujo, que se alinea con un flujo de trabajo de generalmente un segmento de un gran dominio empresarial. Tenemos los equipos habilitadores que ayudan a los equipos alineados con el flujo a superar obstáculos, y también detectan capacidades faltantes. También tenemos equipos de subsistemas complicados, donde se requieren matemáticas, cálculos o experiencia técnica significativa. Y por último, pero no menos importante, tenemos el equipo de plataforma, que es un grupo de otros tipos de equipos que proporcionan un producto interno convincente para acelerar la entrega de los equipos alineados con el flujo.

Dado que la comunicación e interacción entre los equipos son los aspectos más críticos del pensamiento organizativo y estratégico, para permitir que estas topologías de equipos interactúen adecuadamente, se sugieren algunos modos de interacción como se presenta en la siguiente diapositiva. Y nuevamente, volviendo a los problemas de comunicación con los que comenzamos, ¿cómo pueden colaborar y comunicarse de manera efectiva los equipos? Existirán dependencias, cuanto menos, mejor, pero existen y no podremos hacerlas desaparecer. ¿Cómo podemos simplificar nuestras vidas? ¿Cómo podemos comunicarnos para construir una buena estructura de equipo? En el libro, nuevamente, los tres modos esenciales de interacción entre equipos son los siguientes. lo que significa trabajar estrechamente juntos con otro equipo, que es el impulsor de la innovación y el descubrimiento rápido, pero tiende a difuminar los límites. Es un modo de comunicación muy bueno para el descubrimiento rápido de cosas nuevas que evita costosas transferencias entre equipos. También tenemos el modo de X como servicio, lo que significa consumir o proporcionar algo con una colaboración mínima, lo que mantiene responsabilidades claras con una entrega predecible, pero necesita una buena gestión de productos. Es una excelente opción cuando hay una necesidad de que uno o más equipos utilicen un componente compartido que se puede proporcionar como un servicio. Y por último, pero no menos importante, la facilitación, lo que significa ayudar o ser ayudado por otro equipo para eliminar impedimentos, lo que detecta y reduce las brechas en las capacidades. Es bueno cuando uno o más equipos se benefician de la ayuda activa de otro equipo que facilita o incluso asesora algún aspecto de su trabajo.

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

Un Marco para Gestionar la Deuda Técnica
TechLead Conference 2023TechLead Conference 2023
35 min
Un Marco para Gestionar la Deuda Técnica
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.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.
Principios para Escalar el Desarrollo de Aplicaciones Frontend
React Summit 2023React Summit 2023
26 min
Principios para Escalar el Desarrollo de Aplicaciones Frontend
Top Content
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.
Construyendo un Asistente AI Activado por Voz con Javascript
JSNation 2023JSNation 2023
21 min
Construyendo un Asistente AI Activado por Voz con Javascript
Top Content
This Talk discusses building a voice-activated AI assistant using web APIs and JavaScript. It covers using the Web Speech API for speech recognition and the speech synthesis API for text to speech. The speaker demonstrates how to communicate with the Open AI API and handle the response. The Talk also explores enabling speech recognition and addressing the user. The speaker concludes by mentioning the possibility of creating a product out of the project and using Tauri for native desktop-like experiences.
Luchando contra la Deuda Técnica con la Refactorización Continua
React Day Berlin 2022React Day Berlin 2022
29 min
Luchando contra la Deuda Técnica con la Refactorización Continua
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.
Solucionando Problemas de Rendimiento en React
React Advanced Conference 2023React Advanced Conference 2023
22 min
Solucionando Problemas de Rendimiento en React
Top Content
This Talk discusses various strategies to improve React performance, including lazy loading iframes, analyzing and optimizing bundles, fixing barrel exports and tree shaking, removing dead code, and caching expensive computations. The speaker shares their experience in identifying and addressing performance issues in a real-world application. They also highlight the importance of regularly auditing webpack and bundle analyzers, using tools like Knip to find unused code, and contributing improvements to open source libraries.

Workshops on related topic

Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Node Congress 2024Node Congress 2024
152 min
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Featured Workshop
Emanuel Scirlet
Miguel Henriques
2 authors
Ven y aprende cómo puedes potenciar tus aplicaciones modernas y seguras utilizando GraphQL y Javascript. En este masterclass construiremos una API de GraphQL y demostraremos los beneficios del lenguaje de consulta para APIs y los casos de uso para los que es adecuado. Se requiere conocimiento básico de Javascript.
Construyendo una Aplicación de Shopify con React & Node
React Summit Remote Edition 2021React Summit Remote Edition 2021
87 min
Construyendo una Aplicación de Shopify con React & Node
Top Content
WorkshopFree
Jennifer Gray
Hanna Chen
2 authors
Los comerciantes de Shopify tienen un conjunto diverso de necesidades, y los desarrolladores tienen una oportunidad única para satisfacer esas necesidades construyendo aplicaciones. Construir una aplicación puede ser un trabajo duro, pero Shopify ha creado un conjunto de herramientas y recursos para ayudarte a construir una experiencia de aplicación sin problemas lo más rápido posible. Obtén experiencia práctica construyendo una aplicación integrada de Shopify utilizando el CLI de la aplicación Shopify, Polaris y Shopify App Bridge.Te mostraremos cómo crear una aplicación que acceda a la información de una tienda de desarrollo y pueda ejecutarse en tu entorno local.
Construye una sala de chat con Appwrite y React
JSNation 2022JSNation 2022
41 min
Construye una sala de chat con Appwrite y React
WorkshopFree
Wess Cope
Wess Cope
Las API/Backends son difíciles y necesitamos websockets. Utilizarás VS Code como tu editor, Parcel.js, Chakra-ui, React, React Icons y Appwrite. Al final de este masterclass, tendrás los conocimientos para construir una aplicación en tiempo real utilizando Appwrite y sin necesidad de desarrollar una API. ¡Sigue los pasos y tendrás una increíble aplicación de chat para presumir!
Problemas difíciles de GraphQL en Shopify
GraphQL Galaxy 2021GraphQL Galaxy 2021
164 min
Problemas difíciles de GraphQL en Shopify
WorkshopFree
Rebecca Friedman
Jonathan Baker
Alex Ackerman
Théo Ben Hassen
 Greg MacWilliam
5 authors
En Shopify a gran escala, resolvemos algunos problemas bastante difíciles. En este masterclass, cinco oradores diferentes describirán algunos de los desafíos que hemos enfrentado y cómo los hemos superado.

Tabla de contenidos:
1 - El infame problema "N+1": Jonathan Baker - Vamos a hablar sobre qué es, por qué es un problema y cómo Shopify lo maneja a gran escala en varios APIs de GraphQL.
2 - Contextualizando APIs de GraphQL: Alex Ackerman - Cómo y por qué decidimos usar directivas. Compartiré qué son las directivas, qué directivas están disponibles de forma predeterminada y cómo crear directivas personalizadas.
3 - Consultas de GraphQL más rápidas para clientes móviles: Theo Ben Hassen - A medida que tu aplicación móvil crece, también lo harán tus consultas de GraphQL. En esta charla, repasaré diversas estrategias para hacer que tus consultas sean más rápidas y efectivas.
4 - Construyendo el producto del futuro hoy: Greg MacWilliam - Cómo Shopify adopta las características futuras en el código actual.
5 - Gestión efectiva de APIs grandes: Rebecca Friedman - Tenemos miles de desarrolladores en Shopify. Veamos cómo estamos asegurando la calidad y consistencia de nuestras APIs de GraphQL con tantos colaboradores.
De 0 a Autenticación en una Hora para tu Aplicación JavaScript
JSNation 2023JSNation 2023
57 min
De 0 a Autenticación en una Hora para tu Aplicación JavaScript
WorkshopFree
Asaf Shen
Asaf Shen
La autenticación sin contraseña puede parecer compleja, pero es fácil de agregar a cualquier aplicación utilizando la herramienta adecuada.
Mejoraremos una aplicación JS de pila completa (backend Node.js + frontend Vanilla JS) para autenticar usuarios con contraseñas de un solo uso (correo electrónico) y OAuth, incluyendo:
- Autenticación de usuario: Gestión de interacciones de usuario, devolución de JWT de sesión / actualización- Gestión y validación de sesiones: Almacenamiento seguro de la sesión para solicitudes posteriores del cliente, validación / actualización de sesiones
Al final del masterclass, también abordaremos otro enfoque para la autenticación de código utilizando Flujos de Descope en el frontend (flujos de arrastrar y soltar), manteniendo solo la validación de sesión en el backend. Con esto, también mostraremos lo fácil que es habilitar la biometría y otros métodos de autenticación sin contraseña.