Eric has written a great piece on the difference between developers and programmers, and makes the case that a small ISV should not hire programmers per his definition. I think the distinction that Eric makes between programmers and developers (or engineers) is an important one.

I'd take Eric's argument a step further though. If you're NOT a "big company", there is probably no justification to hire "programmers" for any purpose. Unless you have legions of people to work on your products, why would you ever want people on staff that can't contribute to the design phase, write specification documents, design automated test and build processes, and contribute to the overall development process? At a minimum, every person you hire should have the potential to do these things given the right environment and opportunity. Some people will spend much more time coding than others, but all team members should be able to make contributions beyond writing code.