To create software, you need programmers. Unfortunately. They are expensive, lazy, and almost impossible to control. The software they create either works or doesn't, but you still have to pay them, every month. Of course, it's always better to pay less. However, sometimes they may figure out they are being underpaid and quit. How do you prevent that? Unfortunately, we can't use violence any more, but there are some other mechanisms. Let me share.
Keep salaries secret. It's obvious: Don't let them discuss salaries. They must keep this information secret. Warn them or even sign NDAs prohibiting any talks about wages, bonuses, compensation plans, etc. They must feel that this information is toxic and never even talk to each other about salaries. If they don't know how much their coworkers are getting, they won't raise salary questions for much longer.
Give raises randomly. There should be no system behind your salary upgrades or firing decisions. You give them raises when you feel like it, not when they are being more productive or effective. Try to make your decisions unpredictable. Unpredictability creates fear, and this is exactly what you need. They will be afraid of you and will not complain about being underpaid for a long time.
No conferences. Don't allow them to attend meetups or conferences. They may meet recruiters there and find out that their salaries are not fair enough. Promote the idea that conferences are just a waste of time. It's better to organize events in the office. They always have to stay together, never free to meet programmers from other companies. The less they know, the safer you are.
No work from home. The office must be their second home. Well, preferably the first one. They must go there every day, have a desk there, a computer, a chair, and a stapler. They will be emotionally attached to the place and it will be very difficult to leave, no matter how underpaid they will be. Never allow them to work remotely—they may start thinking about a new home with a bigger salary.
Spy on them. Make sure they all use your email server, computers, servers, and even mobile phones. Install software that tracks all their messages. Ideally, you should have a security department watching all of them and regularly informing you about abnormal or suspicious behavior (office cameras will help too). Any contact with other companies should be considered suspicious. Employees must know you're spying on them. Extra fear is always helpful.
Make a deal with competitors. Contact your major competitors in the region and agree to not head-hunt their programmers if they don't touch yours. If they reject this deal, try to recruit a few of their key engineers. Just offer to double their salaries. You won't really hire them, of course, but this move will definitely shake your local market, and competitors will be afraid of you. They will agree to never touch your
Promote corporate values. Brainwash them regularly by communicating how great your company is, how big its mission is, and how important their contribution is. The numbers on their paychecks will look way less important compared to the multi-billion-dollar market the team is trying to dominate. They will sacrifice for a while. For quite a long time, this trick will work.
Build a family. Corporate parties, Friday beer, team building events, bowling, birthdays, lunches and team nights—use these tools to create a feeling that your company is their family. Money is not really what good people talk about in a family, right? Asking for a raise will sound like a betrayal of family values—they will be afraid to do that.
Stress them. They must not feel relaxed, it's not in your favor. Make sure they have tight deadlines, complex problems to solve, and enough guilt on their shoulders. They won't ask for a raise, constantly feeling guilty for letting you down with project goals. Try to make them responsible for failures as much as possible.
Make promises. You don't need to keep them, but you have to make them: promise to raise their salaries soon, or by the time you raise investments, or by the time a big contract is signed, or when "the time is right." It is important to always make your promises dependable on events that are out of your control—your hands must always be clean.
Buy them cushion chairs and tennis tables. Spend just a little on all those funny office things, and they will pay you back big time, through the ability to underpay your programmers. A fancy and professional coffee machine will cost you $1,000 and make it possible to save $200 to $300 on each programmer monthly. Do the math. Make yourself a rule that instead of giving someone a raise, it's always better to buy a new PlayStation for the office. Also, let them bring their
spouses pets to the office—they will work stay longer for less money.
Give them sound titles. Call them Vice Presidents, for example VP of Engineering, VP of Technology, VP of Whatever. Not a big deal for you, but very important for them. The salary will be much less valuable than the title they can put on their LinkedIn profiles. If you're running out of Vice Presidents, try Senior Architect, Lead Technical Lead, Chief Scientist, etc.
Help them survive. Most programmers are rather stupid when it comes to managing money. They simply don't know how to buy insurance, how to plan a retirement fund, or even how to pay taxes. You help them, to your own benefit, of course. They will be happy to feel safe in your hands, and won't leave you. They won't ask for a raise, either, because they will feel bad about even starting such a negotiation. You must be the "parent," and they will be the "kids." It's a good old model. It works.
Be a friend. This is the last and most powerful technique. You have to be a friend to your programmers. It's very difficult to negotiate money with a friend—they won't be able to do it easily. They will keep working for you for less money just because you're good friends. How do you become friends? Well, meet their families, invite them over for dinner at your house, give them birthday gifts—all those tricks. They will save you a lot of money.
Did I forget anything?