The best advice I can offer:
If it’s a core business function — do it yourself, no matter what.
Pick your core business competencies and goals, and do those in house. If you’re a software company, writing excellent code is how you’re going to succeed. Go ahead and outsource the company cafeteria and the CD-ROM duplication.
If you have customers, never outsource customer service.
So if customers are so important, and let’s face it they are what pays the bills, why does everyone hate them so? Why are customer support folks paid shit? And why is it one of the first things outsourced to “control costs”? The world, all 7 billion customers, want to know.