Agile redistributed the traditional responsibilities within development teams to address the complexity and opportunity of desktop computing in the 1980’s.
__Developers__ own the code and are responsible for its ongoing flexibility (but not completeness).
__Customers__ own the project and can rearrange priorities (but not schedules) to meet their needs.
Many practices have been developed related to deeper understanding (and, regretfully, misunderstanding) of this shift in responsibility.
For example, most agile coaches believe their job is to increase developer’s velocity. In fact it is developer’s responsibility to deliver functionality now and in the future.
If developers optimize for flexibility then their velocity is just an observation that can be used by Customers for their own decision making.