The Japanese came with the idea of delivering products according to client demand. This is less obvious in software development organizations. This post intends to clarify this subject of demand analysis. I guess all organizations want to maximize their Throughput to meet and exceed client demand. The first step towards this goal is simple; understand client demand to arrive at patterns. We should build our software capability to address those patterns so that we can satisfy the demand.
What does demand analysis mean? Understand the various requests from various demand sources in terms of the effort required to satisfy each, target date and skills needed.
What are sources of demand? Demand source can be external client request, internal product development or failure demand.
What about if our Throughput is less than Demand? Though it can be daunting, this discovery is an excellent step towards assessing our real capability and therefore finding solutions.
Big question, what sort of solution to allow us bridging the gap between Demand and Throughput?
If we cannot stop excess demand, then, we sort out to improve the Throughput. This can be done by:
- Improve architecture of the product so that future requests can take less effort. This is a form of paying back the technical debt.
- Retrain the teams so that they can increase their productivity.
- Implement engineering practices to reduce defects and therefore increase productivity.
- Implement agile methods for software delivery.
- Work on people motivation and culture aspects.
- Work with the clients to regulate the demand and agree on delivery cadence.
- Identify and remove waste from the end-to-end value stream.
- Hiring new people. This should be last resort. In my opinion a company who has culture of not meeting client demand will remain like that even if it doubles its people.
The previous list is based on my own experiences and does not describe implementation sequence. Stopping excess demand means losing opportunities to competition. Even after we meet client demand we should keep the implementation of the above 8 steps as part of an ongoing continuous improvement activities.
For me setting the WIP limit on various stages in the value stream is a low-cost solution which can help to surface bottlenecks and accordingly find solutions.
Steps to analyze demand
- Agree on what we mean by a unit of demand. For example, this typically is an MMF which worth at least 60 person-hours of effort.
- Use the Organization wide Visual board as we described here to maintain overall backlog and team-wise backlog. This represents the demand.
- Ensure cards on the wall are up-to-date.
- Establish prioritization strategy.
- Visualize how demand is pulled into the system, produce metrics, CFD and drive conclusion on how we are meeting the demand.
- Detect issues on the flow. These issues can be causes behind not meeting the demand. From my background, these issues are normally related to cultural issues. For example, delays are taken lightly.