Like many things, the principles of how to run a help desk seem staggeringly straightforward, which makes it all the odder that it is usually done so abysmally badly.  Joel Spolsky sets out how to run a software helpdesk – but most of what he says seems much more generic than that:

Almost every tech support problem has two solutions. The superficial and immediate solution is just to solve the customer’s problem. But when you think a little harder you can usually find a deeper solution: a way to prevent this particular problem from ever happening again…

We treat each tech support call like the NTSB treats airliner crashes. Every time a plane crashes, they send out investigators, figure out what happened, and then figure out a new policy to prevent that particular problem from ever happening again. It’s worked so well for aviation safety that the very, very rare airliner crashes we still get in the US are always very unusual, one-off situations.

This is of course not just an effective way of understanding customers and their needs, but is also in effect an application of lean techniques:  designing out inefficiencies so that they do not recur is a pretty good feedback loop.  Read the whole thing, then weep when next encountering a more normal helpdesk.