From a certain perspective, technology is an intensely competitive business. Software companies like Google, Facebook and Microsoft race to grow their looming towers of intellectual property. At each company, hundreds of millions of lines of code are toiled at by tens of thousands of software developers working to beat competitors to market with new features and products. It’s a working model of American capitalism – rapid innovation borne of fierce competition.

Or is it?

Beneath the veneer of competition

Let’s take a closer look; imagine these towers represent the code for competing web applications – maybe they’re online clothing stores. Each little square is a unit of code. The applications are a little different, but they each represent a lot of work from a lot of people – some serious engineering effort!

You might think each company would guard the code they worked so hard on jealously (lest they give any ground to their competitors), but that’s not really how it works. We don’t built proprietary software in isolation – we build it with common building blocks that we write and share with each other across our entire industry. Let’s look at those web apps again, but this time I’ll black out the common building blocks – code that was provided for free by developers at other companies or working independently.

Crazy right? In a quick sampling of recent web apps I have worked on, only around 1% of each codebase was bespoke. There are lots of different ways to measure this and it varies by domain and technology, but even if we are a whole order of magnitude off I suspect people outside this industry would still find the number incredible.

Under the hood

The hypothetical developers of each web app had to solve a lot of problems to get their software working, but most of those problems were mundane from a product development perspective. They took skill and effort to solve – but not so much that solving them provided a competitive advantage. Think about autocomplete in an input field – it has to be done and everybody does it, but it’s nobody’s core business.

When software engineers solve problems like that, they sometimes make their solution available to other software engineers. For example, developers at Twitter solved that pesky autocomplete problem and distributed typeahead.js to solve it for everybody. While building software, we create, share and borrow everything from mapping tools (Airbnb) to entire front-end frameworks (Facebook).

In web development, most people are working in JavaScript (or a closely related language that compiles to JavaScript) and in JavaScript, shared packages are usually published to NPM. NPM stores over 1 million packages, with almost 50 billion monthly downloads by developers around the world. Other technologies have comparable systems – for example Ruby uses Gems and Java uses Maven and Gradle.

Implications and applications

Even though we work on competing products at competing companies, we’re all helping each other make better software – not just in a vague competition-is-good-for-everybody way, but in a direct practical way. The competitive, proprietary part of tech is just a thin veneer concealing a socialist utopia of shared progress. This way of working is so normal in software development that we often take it for granted, but I think we ought to stop and think about how amazing it is and what we can learn from it.

In the western world, we have an economic system that assumes people are motivated by money and that the best way to achieve good outcomes is through vigorous competition, but the way we build software – one of the most innovative parts of our economy – provides a strong counterexample. What can we learn from it?

There’s a well-understood model wherein the government funds fundamental research which the private sector then leverages to develop commercial products. The software industry seems to have developed its own self-organising mechanism for undertaking foundational work – in what ways do our results differ from those achieved using a more conventional model?

Does each industry operate on top of its own special sharing economy? What does this look like in other fields?

If you’re not a software developer, does it surprise you to learn that tech works this way?

Please share your thoughts – it would be great to have some discussions on here.