They are asking from both customers and techs to answer the question. So I will formulate my answer and leave it in their comments. However, I will start them here.
My answers are in no particular order either. But are as follows:
As a tech at a big ISP, i've been a round the block. First, when i started, we had 6 weeks of training. They drilled us on all aspects of the elements both internal software and external hardware. Now, training is like 2 weeks and a tiered system. And the reps have no idea what they are doing. Which in turn pisses customers off. Which in turn pisses off the next tech because now they are getting the raw end. Companies need to train their reps so they know what they are doing. We used to have regular meetings to go over things and learn from. Now, these are far and few between. Start hiring for the positions and not for asses in seats. Putting someone in a PC help desk position who doesn't know the very basics isn't going to help.
Everyone from the field tech if your company has them, all the way up to the suits that sit at the round table need to be held accountable. Companies need to make sure that if they have a product, no matter how big or small, any and all documentation is easily available for help to both the consumer and the tech for reading. My company seems to be missing a lot of documentation or it's scattered across multiple sites. Thus making my job harder because now I have to search for it. Thus it makes the call longer. Especially on issues that you may cross once in a month or every few months.
Tech's who do not do their job responsibly or appropriately, need to be held accountable, as well as their supervisor. Too many outsource centers and/or vendors don't. This is a big thing that really gets under not only customers skin but fellow techs as well. No notes left, poor troubleshooting, etc.
Techs are customers as well. Customers know this. Techs need to start caring about things. At the same time, customers need to show restraint and stop belittling techs. I for one will not help you when you start swearing at me and calling me names. If you want my help, then you must show me a little respect and I will do what ever I can to help. A lot of time, even going past my scope of support. Nothing irritates a veteran tech more then being called a jackass, or any other name in the book.
Stop the up-selling. I know business are here to make money. However, when you have customers in area's that are effected by certain situations and your docking your employees because they're not selling enough, they are going to sell customers things they don't need, can't have, etc. Then the customer is overly pissed and it comes back onto the company and the next tech they talk to. If your going to up-sell, make sure the customer can have it first, then explain it to them. Make sure they understand it. If there is any questions, don't sell it.
Companies have to keep employee morale up. When it is down, it shows to the customer and the customer gets the wrong end of the stick. Communication from the top down and not just the bottom up when things go wrong is the key. Most large companies, especially ISP's and other major companies fail to realize this. Make sure your employees know why things are changing. This way they can answer customer questions and not look like an ass when they can't. It turns customers away. A lot of companies are switching to "Super Techs." Meaning one tech can trouble shoot every products the company has. In away, this is good. But it's also the fastest way to burn out. If a company doesn't mind the high rate churn of employees, then this is the way to go. In the end, the customer will never get good results,as the next tech they hire will be on their last leg or have someone new with no experience.
Customers as well as techs need to have knowledge. A lot of customers I talk to on a daily basis do not know the very basics. What is a URL/Address Bar, how to use a TV remote. How to power on their new flat screen TV, how to shut off a pc with out unplugging it, etc. This irks a tech more then they realize. Knowing the basics will keep a 10 minute call to 10 minutes. Not knowing just moved that time out to 20-30 minutes. And if the tech doesn't know the basics, then that also moved the call out.
Companies need to start listening to their front-line employees. They are the ones who are dealing with the day to day problems. They are the ones finding the fixes, the work arounds until the project teams can implement actual fixes. Instead, a lot of this information is ignored and the issues go on. Thus, putting customers into another rampant mood.
Above all else, let the techs fix the issue. A first call resolution. Now, there are times this won't happen. But if you empower the tech to do what they can, with in support and not harp on them because they took 45 minutes to fix the issues so the customer doesn't have to call back in again, then the customer will be happy.
There are more that I can go over, but these are the first things that pop into mind.