Let me bring a non SV perspective. A lot of people seem to forget that most developers live outside of SV where the salary vs cost of living makes just as much sense.<p>1. For a software Engineer who has kept their skills up and lives in a major metropolitan area, it doesn't take 2 years to get a job. It usually takes me about two weeks.<p>2. Who defines themselves by their job? A job is just a way for me to pay my bills. I go to work, come home and twice a month money appears in my account - no more no less. But see #1 about keeping your skills marketable.<p>The framework I use for leaving a job is simple. There are three reasons to leave a job - technology, environment, and money.<p>Technology - if you're learning marketable technology, I can deal with a not so great environment and a below market salary for awhile. Once I build my resume, I can leave for more money. On the other hand, don't stay at a company no matter how good the money is if it will cause your skills to atrophy. You leave yourself vulnerable and you cut off optionslity.<p>Environment - if I can find another job with a better environment, make the same amount of money and move forward technologically. I'll leave. Life is too short to stick with an environment that you hate.<p>Money - All other things being equal, why not make as much money as you can? I don't want to be in management but if I can make a significant amount more money doing what I enjoy, why not?<p>I've been hopping jobs for 10 years after staying at one company 9 years when I should have left after 2. But now, I'm starting to get the job hopping stench about my resume and I'm near the top for my local market. It would be counter productive for me to leave by choice in less than 3 years.