Legge di Conway

La legge di Conway è un'osservazione che il design di qualsiasi sistema è influenzato in modo significativo dalla struttura delle comunicazioni dell'organizzazione che lo sviluppa. La legge è comunemente associata allo sviluppo del software, ma è considerata applicabile a sistemi e organizzazioni di tutti i tipi.

Melvin Conway, uno scienziato informatico e programmatore, ha sviluppato la sua teoria nel 1967 come base per un articolo, "Come inventano i comitati?" che stava sottoponendo alla Harvard Business Review (HBR). Ecco la formazione originale: "Qualsiasi organizzazione che progetta un sistema (definito in senso lato) produrrà un progetto la cui struttura è una copia della struttura di comunicazione dell'organizzazione ".

HBR ha respinto il documento sulla base del fatto che Conway non aveva dimostrato la sua tesi; il documento è stato pubblicato nell'aprile 1968 in Datamation, la principale rivista IT dell'epoca. Fred Brooks ha citato l'osservazione nel suo articolo "The Mythical Man-Month" e l'ha chiamata legge di Conway.

La Harvard Business School ha successivamente condotto uno studio, "Exploring the Duality tra prodotto e architetture organizzative", per tentare di dimostrare la tesi di Conway. I ricercatori hanno confrontato le basi di codice di più applicazioni dello stesso tipo che erano state create da team di sviluppo open source liberamente accoppiati e team strettamente accoppiati. Hanno scoperto che i team strettamente accoppiati tendevano a sviluppare basi di codice monolitiche mentre i team ad accoppiamento lasco tendevano a creare basi di codice più modulari. È stato osservato, analogamente, che se più team stanno lavorando sui moduli del programma e la comunicazione tra i team è scarsa, le interfacce del programma rifletteranno questo fatto.

La legge di Conway viene spesso citata in riferimento alla tendenza DevOps, che si basa su una comunicazione e una collaborazione efficaci tra i team di sviluppo e operativi.

Guarda la presentazione di Dan Slimmon, Conway's Law: The Skeleton of DevOps: