I also want to add extra comment regarding #1. Some developers are super and every year they get a new offer from another company and they jump ship. Nothing wrong with that - but maybe a company wants someone who can work with the company for a long term. If a developer who jumps ship every year, they might as well look at someone else who is slightly less senior but good at what they do. I know some companies have contracts that locks down new hires, but i think most of us prefer flexibility but still provide some psudeo-mental confident to the hiring company that "I am not a china easily stealable within a year. Hire me and I will try to help you make things better."