¿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.

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
Seamos realistas: la deuda técnica es inevitable y reescribir tu código cada 6 meses no es una opción. La refactorización es un tema complejo que no tiene una solución única para todos. Las aplicaciones de frontend son particularmente sensibles debido a los frecuentes cambios de requisitos y flujos de usuario. Nuevas abstracciones, patrones actualizados y limpieza de esas viejas funciones - todo suena genial en papel, pero a menudo falla en la práctica: los todos se acumulan, los tickets terminan pudriéndose en el backlog y el código legado aparece en cada rincón de tu base de código. Por lo tanto, un proceso de refactorización continua es la única arma que tienes contra la deuda técnica.En los últimos tres años, he estado explorando diferentes estrategias y procesos para refactorizar el código. En esta charla describiré los componentes clave de un marco para abordar la refactorización y compartiré algunos de los aprendizajes acumulados en el camino. Espero que esto te ayude en tu búsqueda de mejorar la calidad del código de tus bases de código.

Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Como desarrolladores, pasamos gran parte de nuestro tiempo depurando aplicaciones, a menudo código que ni siquiera escribimos. Lamentablemente, a pocos desarrolladores se les ha enseñado cómo abordar la depuración, es algo que la mayoría de nosotros aprendemos a través de la experiencia dolorosa. La buena noticia es que _puedes_ aprender a depurar de manera efectiva, y hay varias técnicas y herramientas clave que puedes usar para depurar aplicaciones de JS y React.
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
Después de pasar más de una década en Google, y ahora como el CTO de Vercel, Malte Ubl no es ajeno a ser responsable de la infraestructura de software de un equipo. Sin embargo, estar a cargo de definir cómo las personas escriben software, y a su vez, construir la infraestructura que están utilizando para escribir dicho software, presenta desafíos significativos. Esta presentación de Malte Ubl revelará los principios guía para liderar una gran infraestructura de software.
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
Afrontémoslo: la deuda técnica es inevitable y reescribir tu código cada 6 meses no es una opción. La refactorización es un tema complejo que no tiene una solución única para todos. Las aplicaciones de Frontend son particularmente sensibles debido a los frecuentes cambios de requisitos y flujos de usuario. Nuevas abstracciones, patrones actualizados y limpieza de esas viejas funciones - todo suena genial en papel, pero a menudo falla en la práctica: los todos se acumulan, los tickets terminan pudriéndose en el backlog y el código legado aparece en cada rincón de tu base de código. Por lo tanto, un proceso de refactorización continua es la única arma que tienes contra la deuda técnica. En los últimos tres años, he estado explorando diferentes estrategias y procesos para refactorizar el código. En esta charla describiré los componentes clave de un marco para abordar la refactorización y compartiré algunos de los aprendizajes acumulados en el camino. Espero que esto te ayude en tu búsqueda de mejorar la calidad del código de tus bases de código.
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
En esta charla, construiremos nuestro propio Jarvis utilizando Web APIs y langchain. Habrá codificación en vivo.
Solucionando Problemas de Rendimiento en React
React Advanced Conference 2023React Advanced Conference 2023
22 min
Solucionando Problemas de Rendimiento en React
Top Content
Next.js y otros marcos de trabajo que envuelven a React proporcionan un gran poder en la construcción de aplicaciones más grandes. Pero con gran poder viene una gran responsabilidad de rendimiento - y si no prestas atención, es fácil añadir varios segundos de penalización de carga en todas tus páginas. ¡Vaya! Vamos a recorrer un estudio de caso de cómo unas pocas horas de depuración de rendimiento mejoraron tanto los tiempos de carga como los de análisis para la aplicación Centered en varios cientos por ciento cada uno. Aprenderemos no solo por qué ocurren esos problemas de rendimiento, sino cómo diagnosticarlos y solucionarlos. ¡Viva el rendimiento! ⚡️

Workshops on related topic

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.
Crear un Producto Colaborativo Similar a Notion en 2H
JSNation 2023JSNation 2023
87 min
Crear un Producto Colaborativo Similar a Notion en 2H
WorkshopFree
Witek Socha
Witek Socha
Se te ha asignado la tarea de crear una función de edición de texto colaborativa dentro del producto de tu empresa. Algo similar a Notion o Google Docs.
CK 5 es un marco de trabajo y ecosistema rico en funciones listas para usar que se enfoca en una amplia gama de casos de uso. Ofrece una infraestructura en la nube para satisfacer las necesidades del sistema de colaboración en tiempo real. Durante esta masterclass, aprenderás cómo configurar e integrar CK 5. Repasaremos los conceptos básicos de cómo incrustar el editor en una página, desde la configuración hasta la habilitación de funciones de colaboración en tiempo real. Aprendizajes clave: cómo incrustar, configurar y ajustar CK 5 para que se adapte mejor a un sistema de edición de documentos que admita colaboración en tiempo real.
Tabla de contenidos:- Introducción al ecosistema de CK 5.- Introducción a una plantilla de proyecto similar a `Notion`.- Incrustar CK 5 en una página.- Configuración básica de CK 5.- Ajustar CK 5 para un caso de uso específico.- Habilitar funciones de edición en tiempo real.