I find the statement 'the customer is not in charge' a little strange.
Someone has to be driving the car, someone has to be deciding which features and functionality to address first must be.
It is either the customer or the developer (or maybe the tester?)
Can someone tell me if the customer isn't driving than who should drive instead?
Assuming a cross-functional agile team consisting of programmers, on-site customers, and testers--and that is our goal, I hope--then the whole team is in charge. The team is responsible for creating the best plans to achieve the project vision.
That requires taking advantage of differences in team members' expertise. In practice, on-site customers are expert in business value, so they set priorities. Programmers are expert in technical costs, so they set estimates, and they should include the cost of keeping development speed high in those estimates. The two pieces of information together, along with the team's measured velocity, creates the plan. Neither customers nor programmers are in charge... they both are, jointly.
Some people describe this as "customers driving," which is fine, but don't misinterpret that to mean that the on-site customers are in charge or that programmers have to do whatever the on-site customers say. The whole team is in charge. As soon as one group or another hijacks that shared responsibility, the project suffers.
your intrepid reporter
Reginald Braithwaite looks at the situation from a different angle in his blog, focusing on the developers' responsibility to their client--the person I would call the Executive Sponsor.To get at the meat of his argument:
But we [as clients] bore the responsibility for certain decisions, and they [the health professionals] ceded those decisions to us, even when they had strong opinions about what was the best thing to do. I think as a software developer I must follow the same path. ... There are limits, there are things we know mean instant and irrevocable failure. But where judgment is required, where there is a decision between mediocre, good, and better outcomes, [professionals] advise and then allow the client to make the final say.
I believe we in software must follow the same path.
So, who's in charge here?
My answer, assuming we're talking about agile development:
The whole team is in charge of delivering successful software. Nobody but the person holding the purse strings--the Executive Sponsor--gets to override the team's collective judgement. Not customers, not programmers, not product owners, not stakeholders. And it must be a collective judgement, one that combines the business expertise of customers, the technical expertise of programmers, and the quality expertise of testers.
And when the executive sponsor does decide to override the team's judgement, as she may... then the team has a professional responsibility to inform her of the consequences of her decision and then do as they are asked, within ethical limits.
Or, in a sentence: The team is in charge, and they answer to the executive sponsor.
PS: The team has a responsibility to the organization, too, and to themselves. And possibly to customers and users. Not to mention that I'm assuming a proper cross-functional agile team. It gets complicated. But as a general rule of thumb, I think "The team is in charge, and they answer to the executive sponsor" works pretty well.