The software supply chain

When it comes to supplying software to customers, the program is the product; the code is the consumer good. So, shipping that product at scale should be (comparatively) easy.
After all, there are no warehousing headaches, transportation and delivery struggles, inventory management problems, international inspections, and so on. The digital nature of software makes it a dream to deliver to customers worldwide. Or so it might seem on the surface.
In reality, the software supply chain is more difficult than you might imagine. It faces many of the challenges you might expect to find in a more traditional supply chain model, as well as unique problems of its own. The software supply chain could, in fact, stand to gain by adopting traditional supply chain thinking.
What is the supply chain model?
Before exploring the software supply chain, it’s helpful to understand the traditional supply chain model. A supply chain is just that: a chain of processes required to supply a commodity. It encompasses every step in the journey of the product, from conception to customer. This includes suppliers, manufacturers, and retailers involved in realising the product and delivering it to the customer.
So, a simple traditional supply chain would start with raw materials needed, and link through sourcing to the suppliers of those materials. Those suppliers then deliver the materials to the manufacturers (forming the next link in the chain). Once the product is manufactured, it flows to the next link in the chain: distribution. This includes storage, delivery and retailers — which form the last link in the chain, passing the product to the consumer.
A supply chain has two sides. First, there’s the upstream, where resources are flowing into the business. (Raw materials, supplier relationships and so on.) Then, there’s the downstream, where resources are flowing out of the business. (The finished product.)
The software supply chain
The software supply chain, meanwhile, follows a surprisingly similar sequence. It all starts with planning. In the traditional supply chain, planning relates to making sure that you get the right amount of raw material to supply the demand.
In the software supply chain, it’s making sure that the right code is being developed for the most important features of the program. At an enterprise scale, this can encompass a huge amount of applications,features and developers.
Next, there may be a sourcing step to your software supply chain. In a traditional supply chain model, the sourcing stage refers to managing the relationships with suppliers. It also involves procuring parts and materials that are more efficient or cost effective to outsource. In software development, this is similar, with a few added provisions.
Many large-scale software providers use open source software as a base for their features and products. This means that these sources need to be managed. So, part of the sourcing link in the software supply chain is devoted to analysing the quality and security of the open-source components for your product. This includes factors such as documentation, support, licensing and security implications.
Shipping code more efficiently
The distribution side of the software is the part we are perhaps most familiar with. But applying supply chain thinking demonstrates how many steps it takes to get software into the hands (or on the machines) of the customer.
Consider the marketing, the sales process and the retailers. How will the software fit in a presentation? What does it need to integrate with? Is it going to a reseller? Do you need to pay for cloud data centres to host your solution? Can you ship it to international customers, or do you have translation work to do?
The idea of the software supply chain is that developers make the product with a view to where it’s going, and how it’s used. If the partnership or planned deployment method falls through, developers can react accordingly.
In other words, all code is planned, sourced and manufactured with a view of the customer, not just an end product. If a deal falls through, a prospect leaves, or something else gets in the way of the downstream side of the software supply chain, steps can be taken to reduce the waste of resources.
More intricate, more efficient
This is a brief overview of a software supply chain, but it gives you an idea of how the supply chain model can fit with software development.
Supply chain models are intricate. They involve every agreement, partnership, resource and step that it takes to get the product to the customers.
So, for the software companies that are struggling to ship code and avoid wasted effort, supply chain thinking might just be the answer you’re looking for.
Useful links
Your product update: don’t throw the baby out with the bathwater
The sunk cost fallacy: is your code worth the effort?
Feature creep: everything but the kitchen sink. Is your software guilty?