We have all heard of economies of scale and the benefits achieved through producing on a large scale, but how many of us have heard of economies of flow. Economies of scale is focused on lowering the unit cost by producing large batches of product, while economies of flow is focused on lowering the overall cost by producing what is need, when it is needed.
An example that we all can look at is the growth in size of container ships. Over the last 20 years container ships have grown considerably in size. The rationale for this is that if you can increase the number of containers that a ship can carry then you can spread the cost of the journey across more containers, thus reducing costs per unit.
However, this has some consequences that are not initially obvious, such as the container ship now requiring a larger number of containers to transport. This means that a larger number of containers will have to be stored at a shipping port ready for transportation. The result of this to the customer is less shipping times and more goods held in port waiting for a ship to transport them. While in storage, these goods are not providing any value to the customer and it is quite possible that the supplier has not been paid either. Larger ships require additional infrastructure in order to unload as quickly as possible when they come into port. This includes larger cranes, more land for holding more containers, and deeper and larger ports for the ships. With such large batches of containers arriving there is more congestion in and out of the port for the land transport companies and the needed scale of railway and roads around the port. In addition to this, there would be significant peaks and troughs of work that would affect many supporting industries. While the size of the container ship provides some benefits, it also increases the transaction costs to itself and the supporting industries.
If economies of flow was applied to the above example, we would see minimal storage at the shipping ports, which means that goods wait in storage for a shorter period of time; smaller ships transporting the goods would probably result in increased costs to ship each container; smaller infrastructure at the ports and a continual flow of work in and out of them. While the actual costs of transporting the container over the sea may be higher, the total costs could be lower and a wider range of destinations and schedules could be achieved to deliver value to customers sooner. Economies of flow takes into account the full cost of batches of work to provide you an optimal batch size.
So how does this apply to software development? The standard waterfall method of software development is built upon economies of scale. Product in large batches is pushed through the waterfall processes of analysis, development, and testing. The documents and code are like a perishable inventory, as software ages quickly. While it is sitting in the large batches it is not adding any value to the business, and there are often significant amounts of money being held in these batches. It is like putting money into a bank account that does not earn any interest and devalues rapidly. Anyone who had a bank like that would quickly move their money to another bank, but this is exactly what has been happening with software development for the last 30 years as we have not seen a better way. However, with a focus on economies of flow we can change this and reduce the amount of undeployed aging code. Applying economies of flow to software development will provide many other benefits such as fast feedback (building the right thing), reduction in knowledge decay (knowledge is fresh on recent code that has been worked on), reduction in context switching (focus on one piece of work at a time). LeanIT provides services to help you move from the traditional way of working with large batches of work under the influence of economies of scale to assist you in applying the economies of flow principles and delivering value early and often to your customers.