Programmers and architects should understand “Conway’s law”

Time:2021-5-2

Programmers and architects should understand “Conway‘s law”

What is Conway’s law

Conway’s law is a maxim that organizations design systems to reflect their own communication structures. It’s named after computer programmer Melvin Conway, who came up with the idea in 1967. His initial wording was:

organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations. — M. Conway

An organization’s system is usually designed as a copy of the organization’s communication structure

Programmers and architects should understand

My understanding: what is your organization like? In the end, the organization information system must be the same. The organization with high efficiency has high system efficiency. The information system efficiency of low efficiency organization is certainly not high.

Later Conway’s law was extended to the following four

First law
Organizational communication will be expressed through system design

There is never enough time to do something right, but there is always enough time to do it over
No matter how much time there is, one thing can not be perfect, but there is always time to finish one thing

There is a homology from the linear graph of a system to the linear graph of its design organization
There are potential heteromorphisms between linear system and linear organizational structure

The structures of large systems ten to integrate during development, qualitatively more so than with small systems
Large systems tend to decompose more than small ones

How did such a simple sentence become a law

In fact, this is only a summary of the author’s experience, which was published in the journal datamation. But later Brooks quoted Conway’s point of view in the famous myth of man and moon, and praised it as “Conway’s law”.

Adding manpower to a late software project makes it later –Fred Brooks, (1975)

In order to catch up with the schedule, adding programmers is like using water to extinguish the fire in an oil pan.

Because the design that occurs first is almost never the best possible, the prevailing system concept may need to change. Therefore, flexibility of organization is important to effective design.

Since the first design is almost never the best possible, popular system concepts may need to be changed. Therefore, organizational flexibility is essential for effective design.

From this, we can see that Daniel told us half a century ago to optimize the organization and the system first. Without agile organization, there is no agile development team.

In Conway’s article, he also mentioned

There is never enough time to do something right, but there is always enough time to do it over
No matter how much time there is, one thing can not be perfect, but there is always time to finish one thing

It sounds familiar, isn’t it? This is the current continuous integration and agile development.

How Conway’s law guides our practice

  • We should use all means to improve communication efficiency, such as slack, GitHub, wiki. If you can explain things clearly to two people, don’t pull more people. Everyone and each system have a clear division of labor. If something goes wrong, you know who to call immediately, so as to avoid the problem of kicking the ball.
  • Through MVP to design the system, through continuous iteration to verify the optimization, the system should be elastic design.
  • What kind of system design you want, what kind of team structure, can be flat flat on the flat. It’s better to divide the team according to the business, so as to make the team naturally autonomous and cohesive. A clear business boundary will reduce the cost of communication with the outside. Each small team is responsible for the whole life cycle of its own module. There is no unclear boundary or invalid wrangling

reference material

  • Original committees of Conway’s law_ Paper.html

Article content quotation

  • Conway’s Law: the theoretical basis of microservice architecture

https://yq.aliyun.com/articles/8611 

  • Every architect should study Conway’s law

http://www.infoq.com/cn/articles/every-architect-should-study-conway-law

  • Conways_ Early introduction to law