Companies that handle physical goods usually want to keep their inventory to a minimum. As software developers, we should do the same.
Physical inventory is all the physical goods a company owns. Think buildings, computers, furniture, but also items they will sell, either directly or assembled. Product parts for example. Or food items that need to be shipped to shops.
All these items amount to a certain value for the company. But there are also costs. Costs when buying them, but also costs maintaining and storing them. Costs when things perish (like food) or deteriorate (furniture that is no longer usable for example).
That is why companies do good to keep inventory to a minimum. A minimum doesn’t mean nothing. Many pieces of inventory are necessary for the business to run successfully. But storing too much food may result in having to throw it away when it goes bad, meaning wasted money. Storing too many parts to assemble a car means having to own a larger storage facility than necessary, meaning increased costs in building or renting and maintaining the facility.
In the software development world, I see two types of inventory: software and code.
Software inventory is compiled software that a company owns, either purchased or built. Each piece has a certain cost to it. Support and maintenance costs, upgrade costs and possibly license costs.
Code inventory is the source code in a project. It’s the actual lines in the files containing the code for a piece of software.
Where am I going with this? My point is that software teams should also reduce the amount of inventory they own.
Having software that is no longer useful comes with a cost. And if it still is useful, maybe there are cheaper options. Especially with custom-built solutions, off-the-shelf products may have a lower TCO (total cost of ownership). This includes software libraries that teams use in their code.
Inside the code, teams should remove code that is no longer being used. It reduces costs as well: less code to maintain, less code to read or understand, and it can lead to faster development and build times.
Manage Your Inventory
Just like companies must manage their physical inventory (reducing it to the most efficient amount), software development teams must manage their software and code inventory by reducing it to the minimum amount to efficiently achieve their goals.