About reducing conway effect and inverse conway maneuver in software project teams

Serdar A.
8 min readMay 21, 2023

--

Hi everyone,

For Turkish : https://lastjavabuilder.medium.com/yaz%C4%B1l%C4%B1m-proje-ekiplerinde-conway-etkisinin-azalt%C4%B1lmas%C4%B1-ve-ters-conway-manevras%C4%B1-hakk%C4%B1nda-f9e8f3163ae3

I wanted to write something about beyond the topics such as the choice of coding language, writing code, database selection, database model design, tests, CI/CD processes, architectures, uninterrupted service, hardware, etc. during the production of technology or technological products, it is a subject that is often neglected or neglected for other reasons.

First of all, I would like to make some definitions and proceed in line with this information.

What is the conway law mentioned in the title of the article?

businesses/companies copy the communication structure or form of the people in the process to this product in the systems and products they produce, and ultimately this form of communication is reflected in the product or system.As a result, the resulting product reflects the internal structure, hierarchy and way of doing business of the company, project group, related department and team that created this product. In addition, the limits of this form of communication and the limitations of this structural situation between people are reflected on the product, causing a limitation for the product as well.

We will talk more about this in the following lines.

What is the Inverse Conway Maneuver?

To put it briefly, in order to develop a targeted product, first of all, the architecture of this product is outlined, then the organization is divided into autonomous teams that can maintain their work according to their activities and capabilities, based on this architecture,it is designed accordingly, thus it is aimed to further reduce the internal communication between the teams (conway effect).

After this preliminary information, if we return to our subject stated in the title;

We have an idea or a product with a prototype, and we naturally need a team to develop it. We also need human resources related to customer relations, sales team, other management units of the company, even after the development is finished or at some time.All of these people or teams are keeping up with the culture that the company has chosen for them, or the general mindset formed by the teams creates the culture of the company or forces it to change.As a result, does the culture of the company dominate, or the general mentality of the employees dominates the cultural values of the company over time, which is obviously difficult to measure.In the interview process with many software companies, people in human resources or the relevant unit often mention the company culture at one point or another. Although most of them are similar, a different corporate culture is adopted in larger-scale, global-scale companies.To give an example, the employees in these global-scale companies are more competitive, able to be a team, but can also differentiate within this team, perform above expectations, have an innovative perspective, take initiative where necessary, etc. aims to create and impose a corporate culture.While serving a common purpose, it also aims to bring the individual to the fore by reflecting the competitive culture within this common purpose.
It is obvious that this culture, which was put forward at the beginning in global-scale companies, has changed over time and has led to a tougher competitive environment.Mobbing in many global-scale companies, stressful working environment, employees pushing each other to another point in a positive or negative direction cause it to become the culture of the company, as it is normal for everyone after a while.At this point, this culture and the form of communication that emerged as a result of this culture are reflected in the product according to the hierarchical structure conway effect.

While this culture has positive or negative aspects in terms of the employee’s career, it is highly likely to cause a difference in terms of the resulting product.The idea of each employee, their trying to be different, the fact that the team leaders/project manager are autocrats and even the idea of many middle managers in the process and the way of communication or hierarchical decision making between this team affect the product/project according to the conway law

Not only during the production phase, but after the production is completed and the product is put on the market, it increases the effect of the product in the final situation in cases such as the effect of the feedback received by the customer representative teams from the customers or the evaluation of the sales team in terms of time and money.

Issues such as whether or not new features to be added to the product will be added, the time and money axis these developments will take, and which customer expectations will not be taken into account can have all kinds of effects on the final product.Especially the foresight of the teams working in different locations, the way that team is managed, the communication preference within the team, and the cultural differences in the team will cause the product to differentiate.

The design habits of the experienced architectural team from the past and its oppressive policies on the whole team and the pressure of the sales team on time,the conflict of viewpoints between the managers who develop free content or adopt the open source idea and the fact that the product or content is paid, the opposition of the team that adopts new technologies and the security teams who want to develop more closed systems at the point of the security vulnerabilities of the product, etc. causes differentiation in subsequent processes.

In such a case, this is exactly the situation mentioned in the conway law.

On the other hand, in a monolithic applications, since people are in contact with each other, it is inevitable that this communication will result in situations such as influencing each other and directing the others by the more dominant.In teams that develop monolithic applications, we sometimes see teams such as frontend, backend, database, reporting etc. to reduce the conway effect (which may not be conscious). The ultimate goal is the realization of the target goal given to the team without affecting each other.

Whether it is a monolithic team or a domain-based divergent team, the differentiation effort brought by the competitive environment offered to the people, the attitude of the manager towards the processes will ultimately reflect on the business development process and finally on the product produced.

In recent years, in software projects, it has been tried to switch to microservice architectures and to perform each domain-based service by a different team, to reveal a part of the main architecture to these teams, to reduce the conway effect and to behave like a reverse conway maneuver.
The steps to reduce this impact are that the teams in the production process make independent decisions in accordance with the main architecture and manage the business process.

However, there are companies that make very successful projects by reducing this effect with the reverse conway maneuver.There are not few companies that instill a great idea into each team they create, unite these teams around the main purpose, and give them a mission.These companies, which operate the independent decision-making process with different algorithms within the teams, can also produce different projects as a result of the work of the teams.

Apple, which uses an organizational structure known as the Unitary Organization Form, is an example.Their main goal is to “organize the company around functional expertise rather than products”.In other words, they prefer to divide their companies into disciplines rather than products. The end result is a unified experience where no product takes away from the company’s vision and feel.

Github can be given as another example.The structure of the company and the way it serves is structured autonomously and asynchronously, like hosted open source services. In short, the business is self-managed.

To give an example from my own experience, the disagreements about how much of the personal data (security ID number, address, location, age, etc.) of the users should be requested from the user in a startup project caused great changes in the final state of the project.While the software teams requested more information to add new features to the product, they created a different perspective on the security side.As another example, it caused the decision processes to be effective with the initiative of the managers without any concrete data on which platform (Android-IOS) the product will be presented first.
The point of view of the sales team or the team regarding payment systems, at the point of whether the product should be paid or free or how much should be free, has completely changed the final state of the product.In addition, I realized that the cultural values, communication types of people from different cultures in the team, even if the teams are separated on a domain basis, the effect of team communication affects the process and even the different development process of another team.As a result, this startup developed a very different product instead of the product it wanted to produce after a certain time.

In teams, you can aim for individuals to be more competitive with the product, or you can aim to be a team collectively and to tackle something together. You need to know that you need to analyze what your company has achieved, with what target, in how long.In companies where there is a lot of competition and individualism is dominant, is it explained to the teams what the main goal is to reach? If the main target falls into the background after a while and the performance of the individual takes precedence over everything else, the result of the target will cause the final product as a whole to be different.If the main target is based on and the performance of individuals and the ideas they contribute are not considered, it may result that the target has been realized and most likely the product is in accordance with its pre-designed form as expected.Of course it’s not certain. However, in such a case, the results of employee loyalty, free idea environment, equal contribution of employee performance to the goal, etc. situations arise.

By looking at all this information, it would be more rational to group according to the character skills of the people while establishing a software team. It is really difficult to gather around a common goal with people who are leaders, confrontational, shy, analytical, emotional, etc. Frankly, I do not know in which company the famous scrum hats are applied. The interesting thing is that throughout history, cultural, character, etc. No matter how much we differ as a human being, humanity has always produced, produces and will produce in some way.However, we cannot always know what they wanted to produce, what the dreams were, what happened as a result or what it turned into.When setting up a software team, the choice will be yours, whether to take an approach based on the target, the individual, or both.

When setting up a software team, the choice will be yours, whether to take an approach based on the target, the individual, or both. If you have a project that has made a lot of money or failed over the years, or if you have worked on a project in this way, I think it would be useful to take a look at whether there is a conway effect between the things that cause the difference between the targeted and the final product.

Thank you for reading.

--

--

Serdar A.

Senior Software Developer & Architect at Havelsan Github: https://github.com/serdaralkancode #Java & #Spring & #BigData & #React & #Microservice