But one thing people on this website don't seem to be thinking about is training. At my job we often spend tons of time and money training people. Sometimes they just leave once the training is over.
That's a legitimate point, but it means you have a non-optimal hiring/incentives scheme. Rewards for the training need to come in over time and you need to be pickier about hiring (I know, easier said that done).
Besides, the people who just leave when the training is over aren't going to be dissuaded by a non-compete they signed. They were playing you and just don't care, and the odds that you would actually sue them is tiny.
Hell, even though I've worked at nearly every place I've worked at for over 7 years, and never joined intending to leave, I wouldn't be dissuaded by a non-compete I signed either, because I consider it an illegitimate one-sided application of force, like a EULA, brought up at the last minute after I'm already committed to the job and am signing final papers. Am I legally in the wrong? Yes. Would I feel bad about violating something written by $50M dollars worth of lawyering to screw me? No.