„Das Gesetz von Conway: Warum die Organisationsstruktur deiner Firma deine Software beeinflusst“.
In der Softwareentwicklung gibt es viele Faktoren, die die Qualität und den Erfolg deines Projekts beeinflussen können. Einer davon ist das „Gesetz von Conway“. Dieses Gesetz besagt, dass die Struktur eines Systems, das von einem Team entwickelt wird, tendenziell ähnlich der organisatorischen Struktur des Teams selbst ist.
Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.
Melvin E. Conway
Melvin Conway formulierte das Gesetz 1967 und es beschreibt, dass die Art und Weise, wie ein Team organisiert ist, den Code beeinflusst, den es schreibt, und dass die Architektur eines Systems ein Abbild seiner Entwicklerorganisation ist.
Dieses Gesetz hat in den letzten Jahrzehnten immer wieder bewiesen, dass es der Wahrheit entspricht. Viele erfolgreiche Firmen haben erkannt, dass es wichtig ist, eine gute Organisationsstruktur zu haben, um erfolgreich Software zu entwickeln. Eine schlechte Organisationsstruktur kann jedoch zu Problemen wie schlechter Kommunikation, langsamen Entwicklungszeiten und mangelnder Zusammenarbeit führen.
Beispiele
Gute Beispiele dafür haben Eric S. Raymond im Jargon File oder Tom Cheatham geschaffen. Sie haben beide jeweils dargestellt, dass ein „Compiler“ der von 4 Gruppen entwickelt wird ein 4-pass Compiler werden wird, bzw. geht Tom Cheatham noch weiter und sagt, dass eine Anzahl von Gruppen einen n-1 pass Compiler schaffen wird, weil einer wahrscheinlich ein Manager sein wird.
Ein weiteres sehr gut an Webseiten und im besonderen an klassischen Intranet Webseiten, ist das diese nach der Organisationsstruktur (HR, IT, Finanzen,…) aufgegliedert sind und sich nicht mit den Anforderungen der Anwender als Struktur beschäftigt haben.
Es ist wichtig zu verstehen, dass das Gesetz von Conway nicht bedeutet, dass die Organisationsstruktur eines Teams das einzige Kriterium für den Erfolg eines Projekts ist. Es gibt viele weitere Faktoren, die ebenfalls berücksichtigt werden müssen. Allerdings kann eine gute Organisationsstruktur einen wichtigen Beitrag zum Erfolg eines Projekts leisten.
Ein Beispiel dafür ist das Konzept des „Agile Project Management“. Dieses Konzept betont die Bedeutung einer flexiblen und anpassungsfähigen Organisationsstruktur, um schnell auf Veränderungen reagieren zu können. Durch die Verwendung von agilen Methoden wie Scrum und Kanban können Teams ihre Organisationsstruktur anpassen und so eine bessere Softwareentwicklung garantieren.
Amazon und Netflix haben sich dieses Themas auch angenommen und für ihre Architekturen mit Microservices, sich auf viele kleine Teams konzentriert. Amazon nennt diesen Ansatz „Two-Pizza Teams“, also sollte kein Team größer sein, als dass man es nicht mit zwei Pizzen in einem Meeting versorgen könnte. Diese Team Organisation soll zu besserer Zusammenarbeit zwischen den Teams führen. Nach Conway’s Law also auch zu einer Software die besser miteinander kommuniziert, wie es bei Microservices zwingend angeraten ist.
Wissenschaftliche Abhandlungen
Wer sich mit dem Thema noch tiefer beschäftigen will, der kann sich eine Abhandlung von der Harvard University durchlesen „Exploring the duality between product and organizational architectures: A test of the “mirroring” hypothesis“ . Die Abhandlung ist sehr Daten orientiert und bietet deswegen einen auch heute noch gültigen Beleg für „Conway’s Law“ .
Spoiler:
This study makes an important contribution to the academy and practicing managers. We find strong evidence to support the hypothesis that a product’s architecture tends to mirror the structure of the organization in which it is developed. In all the pairs we examine, the loosely-coupled organization develops a product with a more modular
design than that of the tightly-coupled organization.
Fazit
Das Gesetz von Conway ist ein wichtiger Aspekt in der Welt der Softwareentwicklung. Es zeigt, dass die Art und Weise, wie ein Team organisiert ist, direkte Auswirkungen auf die Qualität und Effizienz der entwickelten Software hat. Unternehmen sollten daher eine gut durchdachte Organisationsstruktur in Betracht ziehen, um den Erfolg ihres Softwareprojekts zu maximieren.