Demand Management Using Agile + Lean
Agile addresses the problem in several ways.
First, an Agile team's highest priority is to satisfy the customer through early and continuous delivery of valuable software. Unbridled demand almost always will exceed resource capacity, but increasing flow of finished work from the development organization definitely results in higher levels of satisfaction from those who produce the demand.
Further, delivering working software frequently, from a couple weeks to a couple months, with a preference to the shorter timescale, means a team satisfies demand on a more regular basis and on a timeframe that corresponds to the customer's ability to absorb and implement new features and enhancements.
Finally, Agile processes promote sustainable development. Sponsors, developers, and users should be able to maintain a constant pace indefinitely. Sponsors and users prefer to engage in a regular cadence and in a way that is least disruptive and harmonizes with business cycles and work processes. Agile invites them to interact frequently and in short, focused settings to review and accept finished work, and to provide input on prioritization of work for the next near-term planning horizon.
One of the most valuable tools for informing all involved on the degree of balance between demand and output is a Cumulative Flow Diagram.
A presentation on flow by Matt Anderson from Cerner Engineering has a nice breakdown of the information provided in a CFD. The point he makes about the angle of divergence between the arrival rate and completion rate is key. Obviously there are two points of attack to close that gap: 1) constrain work at the point it enters the backlog, and 2) accelerate the rate at which work is completed.
Agile and Lean principles and practices create mechanisms to get the right work into the backlog in the right order based on business value, while enabling teams to reduce lead times and increase the rate at which valuable working software is delivered.