I have worked as a software engineer for the last 10 years. I have been fortunate enough to work at a company that doesn’t require a non-compete, but I have a number of friends who signed one. It’s a tricky subject.
On the one hand, there are some fields where a non-compete is essential to retain business. Specifically areas where clients are transient, such as sales or consulting. You don’t want other companies recruiting your employees for their contacts.
On the other hand, specifically engineering, non-compete agreements are more of a ball and chain for employees than anything else. It’s an attempt by employers to control wages by limiting their current employees ability to find more lucrative employment elsewhere.
Limiting the length of time of a non-compete helps, but it is still a challenge. An engineer is an engineer, and an inability to do engineering for 6 months means an inability to earn a wage for 6 months.
In my opinion, the best solution is to limit the scope of a non-compete. There’s already laws against theft of intellectual property, so maybe the right solution is to target the theft of clients. Limit the scope of non-compete agreements to only prohibit the theft of clients, rather than limiting the length.
That’s just my 2-cents.