If you're hiring programmers disregard a lot of this. If you're hiring creative social people listen to this.
As a programmer I could care less about the vision you have for your company unless it's directly related to the software I'm writing. Then I care, because it's my job to care. I also already know what cog I am. I make software that is my job. Reiterating that is demeaning. Celebrating when I do my job correctly is also demeaning. Of course I hit the deadline that's what I get paid to do. Celebrating that I did it implies you didn't think I would. A thank you or good job is generally enough. Freedom is the biggest thing you can give your tech workers. If you can't trust them to hit their deadlines without micro-managing them you should fire them.
If you don't believe me go hide a tape recorder or microphone next to your developers. You'll hear them bitching about being bothered by someone from XYZ department. If they're being micro-managed you'll also hear them bitch about that as well. Constant meetings are another thing you'll hear them bitch about. Meetings are importing, but for ever hour a meeting lasts that means one hour of development time that has to be made up that week.
Also, don't have multiple systems developers have to login to. It's a pain in the ass to have to have one system for bug reports, one system for task delegation, another z, another y. Keep it in one system or you'll find people not using all of them like they should. I know it sounds silly, but I've seen places have numerous systems and then wonder why some don't get used.
This is actually a great lesson in individual motivational factors since my experience has been the opposite of the above, and it's all been in tech and programming.
So no easy answer.