Ley de Conway

La ley de Conway es una observación de que el diseño de cualquier sistema se ve afectado significativamente por la estructura de comunicaciones de la organización que lo desarrolla. La ley se asocia comúnmente con el desarrollo de software, pero se considera aplicable a sistemas y organizaciones de todo tipo.

Melvin Conway, un informático y programador, desarrolló su teoría en 1967 como base para un artículo, "¿Cómo inventan los comités?" que estaba enviando a Harvard Business Review (HBR). Aquí está la formación original: "Cualquier organización que diseñe un sistema (definido ampliamente) producirá un diseño cuya estructura es una copia de la estructura de comunicación de la organización ".

HBR rechazó el artículo alegando que Conway no había probado su tesis; el artículo fue publicado en abril de 1968 en Datamation, la revista informática líder de la época. Fred Brooks citó la observación en su artículo, "El mes del hombre mítico" y se refirió a ella como la ley de Conway.

Posteriormente, la Escuela de Negocios de Harvard llevó a cabo un estudio, "Explorando la dualidad entre arquitecturas de producto y organizacionales", para intentar probar la tesis de Conway. Los investigadores compararon las bases de código de múltiples aplicaciones del mismo tipo que habían sido creadas por equipos de desarrollo de código abierto poco acoplados y equipos estrechamente acoplados. Descubrieron que los equipos estrechamente acoplados tendían a desarrollar bases de código monolíticas, mientras que los equipos poco acoplados tendían a crear bases de código más modulares. De manera similar, se ha observado que si varios equipos están trabajando en los módulos del programa y la comunicación entre equipos es deficiente, las interfaces del programa reflejarán ese hecho.

La ley de Conway se menciona a menudo en referencia a la tendencia DevOps, que se basa en una comunicación y colaboración efectivas entre los equipos de desarrollo y operaciones.

Vea la presentación de Dan Slimmon, Ley de Conway: El esqueleto de DevOps: