As a software developer that enjoys business, economics, and management topics (perhaps one day I will aspire to owning, starting, or otherwise managing a software company) it was no surprise that I really enjoyed reading an article by Joel Spolsky on customer service in the software world. Really his article could be applied to any customer service, but as he is a successful developer and owner, it rings especially true for tech support. His article (Seven steps to remarkable customer service) stressed the importance of keeping the customer happy and eating extra costs up front that will save you in the long run. Keeping customer support in house will cost you much more per hour on employees, but the quality and amount of employees needed will be much less as you find and fix issues. Outsourcing customer support takes all incentives away from the customer support person from actually helping the problem get fixed. They get paid when people call for help. Why fix a bug in the software to prevent people from getting confused and calling for help, when that will mean less calls, which will mean less need for you. You would basically be putting yourself out of a job if you worked with the developers to fix problems at the source. But if you have in house customer support, you can provide incentives for fixing problems, you can provide career advancement opportunities, and your product will continual be improved, making the customers happier and less likely to need customer support.
There is a lot more to a successful company than being able to write good programs. There's more than having a lot of brilliant engineers busting out lines and lines of code. Even bug free code (and there is no such thing, if the program is big enough and worked on by enough people) isn't guaranteed to make a company successful. It takes good business skills. Good customer skills. Excellent marketing strategies. That's why I'm amazed at small tech startups that are successful. They don't have the resouces to pay people for all of those positions, so it's usually the original owner/programmer that takes on those responsibilities. Joel seems to have done a good job, and it's no surprise, given his acute knowledge of business and the mind of the customer. Not everyone is gifted like that though, so a lot of startup's only hope is to hit something big and sell it off to a bigger corporation (or have it swindled away from you, like MS-DOS and Bill Gates).
As I gain more knowledge and expertise in the area of software development and Win32 programming, I hope to also become more skilled in the business and management side of things. So much to learn, so little time.