Conway's Law

Conway's Law

2022, Jul 15    

Introduction

For any so called “Scucess Story”theses days every company would have some form of investment in software development. Digital esperince is a must to reach out to the world. It could via a website, social media pages, and apps etc.

However, even now, software development is one of the least understood fields in the world. Its really considered as a black box or another IT project.

Enter “Conway’s Law”.

Conway’s Law in a Nutshell

So what exactly is Conway’s Law? From Wikipedia:

Conway’s law is an adage stating that organizations design systems that mirror their own communication structure.

Simply put, teams building software will produce systems that are effectively one and the same with their own communication structure. This is in stark contrast from the belief that the software product and the team that creates it are separated by concepts, beliefs, practices, tools, and other areas of an organisation.

In reality, software is often a very complex subject, and producing software is an incredible challenge that requires an understanding of psychology, art, design, digital logic, data relationships, systems, tooling, leadership, teamwork, and much more. At least one person within a company tasked with building software must have a clear map of what this software is, what it will be, how it works, and how to make it work better. This person is generally the CEO, CTO, VP of Engineering, or some other high-level person of authority, and must do a clear job of communicating requirements and other important pieces of information throughout the rest of the organization.

What Makes Conway’s Law so Important

Without understanding the unique relationship between a team and the software it produces, it can be very easy for those on the team to be disassociated with the final product, which results in a host of issues ranging lack of cohesion throughout the product to a complete failure to deliver what clients or customers expect from it. Communication between members of the team or organization must be clear, concise, and full of meaning and a solid understanding of the subject matter. People are generally bad at reading minds, and so without excellent communication, software developers are left with a best-guess interpretation of what a product is supposed to do and why.

This can happen even with simple applications where the purpose and overall functionality seems rather obvious, such as a social network or even an online game. When communication between team members is poor, even simple misunderstandings can result in completely disjointed user experience, which translates into poor customer retention and other long-term failure points.

This goes both ways, as it’s just as important for managers to understand the limitations of their team or the tools they use, as it is for team members to have a clear vision of what is being expected from them on a daily basis.

What Often Goes Wrong

Common issues resulting from poor communication between members of a software team include:

  • Propagation delay: Information takes far longer than expected to travel from those who have it to those who need it. Sometimes, a piece of information is no longer relevant by the time it reaches the intended recipient. This results in wasted effort and can drag out simple tasks and projects for indefinite amounts of time.
  • Blind leadership: When leaders are slow to listen and fast to reply, they miss out on critical feedback from team members, customers, and others with insight they don’t have. There is no way one person to possibly see / hear / parse more information than an entire team of people, regardless of how intelligent this person may be. Not listening to feedback is arrogant and generally has a very negative impact on the team and therefore the final product (or products) as a whole.
  • Elitism: Not sharing information in a useful manner between members of a team can result in a very one-sided distribution of information across the team, meaning that one individual or group may have more information than they even need while another is doing without some critical piece of info that could easily be obtained from another part of the group. This can result in an “us vs them” scenario in which one group holds all the cards, and is obviously bad for everything from morale to overall product quality.
  • Confusion: Poor communication obviously leads to confusion, which often scales out into mass widespread lack of understanding, with different people having different ideas of how something is supposed to be done. It becomes much easier for people to blame or scapegoat each other, or for poor managers to hide their shortcomings behind team members (or blame the client / customer / pet dog / whoever else).
  • Wrong Target: Hitting the bullseye on the wrong target is a common problem within the field of software development, and is one of the most devastating events one can experience in their career. Nothing is quite like riding the excitement of building a great product for weeks or months only to find out that you built the wrong thing altogether and have to start over.
  • Preventative Maintenance: The best way to prevent communication issues within an organization is to be proactive in establishing communication habits across the team that are built on humility, integrity, and responsibility. It’s OK to be an ace programmer or have more experience than the rest of the team combined, but that doesn’t make it OK to ignore what everyone else says and refuse to learn from others. Likewise it’s equally OK to be a green rookie with little more to offer the team than enthusiasm and inspiration. Well-rounded teams combine the strengths of everyone on the team and result in a much more capable group of people who can see issues before they become major show-stopping problems.

Here are a few tips for maintaining a good communication strategy:

  • Leaders must take feedback: To assume that someone in a leadership position is more qualified to make decisions than others on the team (or even as qualified) is biased and short-sighted. Encourage humility and a thirst for knowledge and information within people in leadership positions. Nobody knows everything and if someone speaks up about an issue, it should be taken seriously and considered in detail.
  • Training is critical: Keep your team up-to-date on the latest and best tools, methods, and philosophies surrounding the craft of software development. What’s cool one year is often dismissed as a relic the next, and staying on top of trends can be a full-time job, especially for tech leaders. Indeed it is a full-time job and is the exact job required of any leader in the tech industry. Don’t accept some new buzzword as a magic bullet, but conduct thorough research into the subject and determine what is truly the best tool or method for the job, and learn how to use it.
  • Avoid unnecessary meetings: Ask any seasoned pro in the field of software development what the biggest time-waster of all is, and most of them will say “meetings”. There are unlimited ways of passing around information today, most of them asynchronous and requiring low effort from everyone involved, so assembling everyone into a single room is literally the least efficient way of exchanging information possible. There are of course times when a meeting is a good idea, however more often than not the same information can be more effectively filtered up (or down) the chain of command by using email, Slack, or ad-hoc conversations between people when it’s most convenient for them.
  • Maintain proper documentation: The only thing less efficient than forced meetings is a group of people scrambling to find the same pieces of information over and over again wherever they can find it. If there is something that can be standardized or condensed into a readable format of any kind, document this information and make it accessible for others. I may be biased as a technical writer, but I believe documentation is one of the top factors that can make or break any organization. When you’re using a tool or SDK from Google or Microsoft, notice the endless amount of high-quality documentation these companies provide. They didn’t become trillion-dollar enterprises by accident, they are masters of compiling information and sharing it with others.

Conclusion

Conway’s Law is a little-understood yet incredibly powerful concept that describes how deeply connected an organization’s communication structure is with the final product or service it produces.

Embrace proper communication within your team or organization, and encourage others to do so. If you’re in a leadership position, start making changes wherever you find they are necessary, and understand that investing in the communication and documentation within your organization has a direct return on investment due to higher accuracy and reduced effort required, not to mention a reduction in frustration or burnout that can occur when people with information aren’t being listened to.

If you’re not in a leadership position, start educating others on the importance of proper communication and you’ll likely find yourself moving up in a world where idle chatter is the norm and focused, directed effort is the exception.