How Collaborative Tool like Github Can Kill Collaboration That They Claim to Foster
Are GitHub, Bitbucket, or similar tools your go-to for source control because they boost collaboration and keep developers happy? What if I told you that while these tools enhance productivity at the team level, they often create an enterprise-wide bottleneck—crippling productivity, quality, and collaboration across the organization?
If that sounds unbelievable, we understand why. But let's consider a principle from Systems Theory: optimizing subsystems (what we call "uber systems") can often make the larger system ("unter system") less efficient, crazy less efficient due to non-linear impact.
Here's an example: if everyone in the U.S. tries to become wealthy by saving more money, the economy as a whole could crash, leaving everyone collectively poorer. Similarly, if everyone in a transportation system drives faster to reach their destination sooner, traffic congestion worsens, and everyone arrives later.
This interplay between part-level efficiency and whole-system inefficiency is poorly understood by technologists and engineers, who often rely on analytical thinking. And yet, it's precisely what's happening in organizations that use modern source control management tools like GitHub and Bitbucket. These tools promote poly-repo architectures and focus on making each team more efficient—without considering the impact on the entire organization.
Intrigued , Read On and reach out to to me at manish@systemsway.com for deeper conversation.
Introduction
One of the less-discussed problems in large-scale software development that chronically and systemically hampers productivity, quality, and engineering effectiveness is the issue of Code Ownership. If you are a CTO or an executive in a technology company, I might already be losing your attention because you believe you don't have a code ownership problem. After all, everyone seems to be modifying, releasing, and deploying the necessary code. However, our guess is that your assessment might be wrong.
If you use GitHub, Bitbucket, or a similar source code management system, and unless carefully designed structures have been put in place, we believe you likely have a serious code ownership issue. This problem may be undermining productivity and quality, leading your company to deliver too few projects or products while too many engineers work excessively long hours.
Before you assume that code ownership isn't a problem simply because no engineers are complaining about it, we urge you to read this post. You might be in for a surprise—and you may come to appreciate the power of systems thinking, which is our area of expertise.
Before diving into how this invisible problem manifests, let's first understand the system of code ownership. Code ownership can be divided into Strong, Collective and Collaborative a.k.a weak ownership.
Strong Ownership
The term "strong ownership" might sound appealing, but it's a disaster for your organization. Strong ownership refers to situations where a codebase, library, folder, or module is exclusively "owned" by a specific team or individual. Only they are allowed to make changes to the code. While the code might be visible to others, any changes require queuing up with the "owner," who dictates the timeline for implementation, QA, and deployment.
In legacy systems, where code resided in monolithic repositories (e.g., ClearCase, SVN, or even early GIT), this model worked well for SCM teams and developers who valued predictability and control. If something broke in production, owners could take responsibility and avoid being blamed for others' changes. This structure, however, came at a massive hidden cost—it's a catastrophic productivity, quality, and engineering effectiveness killer.
Why Strong Ownership Creates Chaos
Traffic Jams in the System:
- In an enterprise with 20 projects, each requiring changes to 100 components, every project must queue up with 100 different teams.
- No one knows at the start how much work will be required from each component owner, making capacity planning impossible.
Unpredictable Workload:
- Software development isn't manufacturing; it's an information generation business. New work creates new information, which generates additional work across modules.
- Hiring or staffing to meet demand is impractical since predicting workloads accurately is impossible.
Integration and Synchronization Failures:
- Integration and functional testing require alignment across multiple teams. If one team prioritizes differently or is understaffed, the entire project stalls.
- This results in cascading delays, where even reducing the number of projects from 20 to 2 fails to solve the problem.
Meeting Overload:
- To manage these delays, companies host endless meetings for alignment, prioritization, and coordination. These meetings address symptoms, not the root cause: strong ownership.
Innovation Blockers:
- Strong ownership stifles innovation.
- Even when a developer can implement changes across modules to demonstrate an idea, the system prevents them from doing so. Demonstrating an innovation to leadership might require 30 people across 30 modules, which rarely happens unless VP-level intervention is involved.
Why Queues Magnify the Problem
Every approval, database change, firewall update, or ticket adds to the growing queue but those queues we all are aware of. In globally distributed teams, shared environments and gated processes exacerbate the problem, when each of hundreds of team work on thousands of repos, we create thousands of micro-queue what emerges is an invisible mega traffic jam that derails projects, kills innovation, and reduces overall organizational effectiveness. We then see people as the problem but in reality root cause is strong code ownership systems we have put in place.
The Hidden Cost of Strong Ownership
Reinertsen's book Flow dedicates a chapter to queues, but even it doesn't fully capture the magnitude of the problem caused by strong ownership. This model creates bottlenecks at every stage, turning organizations into productivity and innovation graveyards.
The Solution
Removing strong ownership can increase productivity, quality, and engineering effectiveness by 300–400% may be more. By empowering developers to make changes across modules and focusing on system-wide collaboration, organizations can eliminate queues, streamline workflows, and foster innovation.If your company has strong ownership practices, understand this: your productivity and innovation aren't just suboptimal—they're trapped in a traffic nightmare. The solution to Strong Ownership was Collective Ownership
Collective Ownership
Collective ownership emerged as a response to the strong ownership systems that companies—particularly developers and managers—put in place to ensure no one breaks their code in production. While these strong systems achieved their goal of preventing production issues, they also created significant bottlenecks. Long queues formed, requiring countless program and project managers to coordinate and bring people together. Unfortunately, these queues couldn't be resolved by simply adding more "traffic managers."
As part of Extreme Programming (XP), Kent Beck and others popularized the idea of collective ownership, along with many other innovative practices. Collective ownership allows everyone access to all the code, enabling anyone to make changes and use automated build-and-deploy pipelines. This approach virtually eliminated queues. The only remaining bottlenecks occurred when someone needed help modifying a codebase outside their expertise, requiring assistance from another developer. In most cases, no tickets or formal processes were necessary.
The innovation unleashed by collective ownership was remarkable. Two or even one developers could modify any codebase, create a demo project, and showcase a working prototype—even with mock or fake components—something nearly impossible under the rigid social systems created by strong ownership practices.
However, collective ownership thrived only with small codebases. As the codebase grew to millions of lines of code, fear set in, and developers and management began holding each other accountable for production issues. At this point, organizations faced two options:
- Return to strong ownership: Reinstate rules that only owners could modify their code, which is what most organizations did. Many organizations did that.
- Evolve collective ownership: A few exceptionally intuitive individuals—though not necessarily informed by queuing theory—recognized the nightmares of strong ownership. They developed new approaches to extend collaborative ownership effectively, which we'll describe next.
Collaborative Ownership: The Best of Both Worlds
In a collaborative ownership model, a team or group of people act as guardians or stewards of a code module or folder. While they oversee and maintain the code, they cannot prevent others from modifying it. At first glance, this might seem risky—how do we balance control with flexibility?
Here's how it works:
- Code owners retain direct access to make changes to their modules.
- Other developers can submit code change requests, which the code owners review and approve.
- If the changes meet criteria after review, they are accepted and merged.
The Key Difference: Speeding Up Queues
In this model, developers can independently build, test, and verify their changes in their local and QA environments. Once everything is ready, they submit a change request for review. This shifts the traditional ticket-based modification queue into a code review queue, which is far faster and more manageable for code owners.
Login to read the full article
This content is available to logged-in users. Sign in to unlock the complete guide with advanced techniques, case studies, and implementation strategies.
Sign In to Continue