¿Qué es la ley de Conway y como te ayuda a programar mejor?.

En este post te voy a explicar que es la ley de Conway y como puede ayudarte a ser mas productivo.

¿Qué es la ley de Conway?.

En 1968, Mel Conway publico un paper llamado: How Do Comittes Invent?, en el cual exploraba la relación entre la estructura organizacional de una empresa y el resultado del diseño de un sistema. Una frase, mencionada en el paper, se convirtió en lo que hoy conocemos como la ley de Conway o Conway’s Law. Esta dice:

Organizations wich design systems… are constrained to produce designs wich are copies of the communication structures of these organizations.

Esta frase dice que hay una relación directa entre la comunicación que ocurre dentro de una organización y el diseño de la arquitectura de sus sistemas.

¿Cómo me afecta la ley de Conway?.

En el desarrollo de software moderno, el diseño de un sistema no puede ser visto como una actividad aislada que alguien puede ejecutar, para después encargar el trabajo a un equipo al azar. El diseñar una pieza de software o cambiar la arquitectura de las aplicaciones  en la empresa, también va a implicar hacer cambios en las estructuras de comunicación entre personas y/o equipos. Si la organización busca hacer cambios en el software sin pensar en cambiar los flujos de comunicación, el resultado será estéril.

Los organigramas y Conway.

Cuando te hablo acerca de flujos y canales de comunicación, no estoy hablando acerca de los flujos de organigrama. Estos, por lo general no reflejan la comunicación real que existe entre los diferentes miembros de una organización. Se pueden definir al menos tres tipos de flujos de comunicación que ocurren dentro de la empresa. El primero. y menos importante, es el organizacional (organigrama).  El segundo, el informal o circulo de influencia entre personas. El tercero y mas importante: la estructura de creación de valor. En este ultimo, es donde el trabajo se hace.

La comunicación es importante, pero no demasiada.

Existen varias capas de comunicación que ocurren dentro de una organización para la ejecución de cualquier trabajo. Mas comunicación no necesariamente va a propiciar trabajo de mejor calidad.  Hay que elegir cuando y como la comunicación va a ocurrir. Al igual que diseñas componentes pensando en la ortogonalidad, lo mismo vas a tener que hacer con los equipos.

Los sistemas son un reflejo de las organizaciones.

Las aplicaciones no son una herramienta usada por el negocio. Ya no mas, las aplicaciones modernas de software son el negocio mismo, esto aplica para casi todas las organizaciones y compañías en las cuales trabajes. Cuando llegue el momento de diseñar una arquitectura debes poner especial cuidado en como serán estructurados los equipos que mantengan y construyan las aplicaciones. Diseñar la topología del equipo debe ser parte del diseño de la arquitectura. Un mal diseño de equipos de trabajo llevara a una mala arquitectura.

Referencias:

Photo by Marvin Meyer on Unsplash