In manufacturing inventory is raw materials, work in progress (WIP) and stocks of finished goods. Money tied up in inventory increases debt, reduces return on investment and is not available for other work. Excess inventory also increases transport, storage and administration costs. Over time excess inventory becomes obsolete and must be written off.
In IT any work done on planning, analysis, design, development and testing for system features that have not been deployed is inventory waste. Most traditional IT groups are full of inventory waste because they spend millions of dollars on waterfall projects that take years to deploy to production. For example a $10 million IT project that delivers in one big bang after two years has $10 million of inventory before it deploys. If your IT division spends $100 million a year on projects like this then you have an average of $100 million dollars tied up in IT inventory all the time. If you could reduce your software development lifecycle from 2 years to four weeks then your IT inventory would drop to less than $4 million which means that you would have an extra $96 million available for profit or other projects.
In IT as in manufacturing the main cause of excess inventory is over production and queues of work within the production process. As described in a previous article over production is caused by doing work in big waterfall projects. It’s made a lot worse by doing the work in specialist teams that throw it over the fence to the next team at the end of a phase. When work enters a team in a big batch it blocks other work and takes a long time to process. When the team is slow, under-resourced or has a long lead time then work sits in a queue for a long time. For example, when an IT Operations team has minimized its costs to the point that it takes several months to provide a server then this causes unfinished work to pile up in software projects that need servers.
The best way to reduce inventory waste in IT Operations and Software Development is to set up cross functional teams to do the work for each requirement Just in Time to meet customer demand. A good approach is to set up a Kanban board for each team with columns for request, analyze, design, build, test and deploy. When you have a Kanban board you can measure the average cycle time from customer request to deployment and you can see where work is building up and take steps to reduce it. It’s not important to ensure that every person is fully utilized. What is important is to implement things that customers value as quickly as they need them and no faster.
The Agile principle that we “Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale” aligns well with this approach.
Excess work in progress hides a lot of other problems. When you drop your work in progress you start revealing issues that are causing waste in other areas. I will continue this series on reducing waste in IT in subsequent articles.