Very often I hear one should have a customer perspective when developing software. Some agile methods propose working close with the customer. But who is the customer? Is it the person paying for the development?
The end-customer is usually not difficult to identify for consumer products, which I have some experience from working in the car business. But even for such a closely related product as heavy trucks it is not obvious who is the customer. Is it the user of the truck (e.g. the driver) or the company buying the truck? These two stakeholders can have quite different wishes and expectations of the end-product, and in worst case these are contradicting.
Looking inside the developing organisation it gets even more unclear. The main work I do as an consultant is with organisations who develops architectures. Who is the customer of an architecture? Is it the end-customer? I think he could not care less if the car has an architecture or not, as long as it has the features and properties he wants. The customers of an architecture are usually developers (including testers) and internal buyers (usually called product managers).
Sven Grahn, former scientific director of the Swedish Space Corporation stated the best “test” of identifying the customer I have heard so far (freely translated from Swedish and maybe so distorted by memory Sven does not recognise it):
The customer is the person, or group, that when you remove them the activity (or product) becomes meaningless.