|Perl Monk, Perl Meditation|
Let me preface this rather authoritative sounding advice with the fact that I've only owned my own business for about a year, but I've seen the success and failure of many small businesses in technical and nontechnical fields. I keep records of my thoughts on every business I have worked for, worked with, applied to, tried to sell to, or bought significant products or services from to evaluate what I want to do for my business. Since it's been my dream to be a business owner for about 20 years (since the 5th or 6th grade), I've been studying business by example and from books for quite some time. Yet I'm nobody's MBA, so take my advice with a grain (or spoonful) of salt.
If you're doing custom work instead of selling a packaged software product, don't hire salespeople at all. Hire customer service people or technical liaisons. Maybe even consider them "internal customer advocates".
Salespeople are great at moving something a customer wants but can't decide he wants. They need to know the product line in order to sell it effectively. They're not so good at figuring out what a customer wants outside the specs of given products and when the customer actually wants something else other than what they are asking about. You can't enumerate to your salespeople all the features of your services in a way a nontechnical person is going to understand.
The tech support guy who's really good on the phone and who does some programming will be much less likely to promise the impossible to close a sale. The usability tester that everyone likes and who clearly describes her likes and dislikes about the UI of a project will be a very good customer contact. A general IT consultant who's not quite up to your programming standards but who explains concepts really well will be good at getting information back and forth between your technical staff and less technical customers.
Don't confuse getting leads with closing sales. A good marketing person can get people to contact you. People often look for sales staff and hire someone who can close a high proportion of leads only to find they get too few leads. Then the sales people start relying on poor marketing strategies, like cold calling, to generate more leads. A good path to repeat business is to have someone who understands specifications gathering close the actual sale, though. If you're getting lots of customer-initiated contact and close even a low proportion of initial sales but generate repeat business with those customers, you'll be doing well. Customers are more likely to buy, obviously, when they initiate contact anyway.
Marketing is always a priority before sales. In a very flexible technical field like custom software development or IT consulting, putting a friendly face and voice out from technical people will provide a better image of competence than a slick sales guy. It doesn't matter how high your closing rate is if nobody calls. Of course, if people call and your closing rate is too low, that's a problem too. The initial challenge, though, is getting the customer's call.
By thinking of your customer-facing staff as consultants or IT buyers for your customer who just happen to be on your payroll, you alleviate the issues of overpromising, of saying something not possible when it is, of your customer's first contact appearing clueless in general (which some customers will take as an actual insult), and of having to switch a customer from a salesperson to a more technical contact during the process of moving from sales to spec gathering. Having one personable, polite, well-speaking technical person lead the customer through getting familiar with your company all the way to delivery of the project will pay far bigger dividends than hiring someone who can shuffle customers on to the technical people as fast as possible.