here's why I don't plan on leaving the bay area for anything other than the perfect job with the perfect pay and perfect benefits (note, those are all time-varient):
1) employment options: I'm most likely not going to work for the same company forever. I love my current company and coworkers, but I'm also realistic. I doubt I'll be at the same company in 10 years.
Many times the only way to get a raise or a promotion is to switch companies, not just because companies don't always hire from within, but because maybe they don't have any current openings to promote. Companies go through bad times and have to lay people off, too. Maybe the new product turned out to be a bust, so they only need about half the current team to start a new project. Maybe they want to re-org. Maybe my boss or a co-worker sucks so much that I don't want to work with them anymore, and there's no openings to switch teams. Maybe my family situation changes so I want to work more/less hours.
For whatever reason, I am almost certainly going to have to switch companies sometime between now and when I semi-retire in about 30 years or so. If I am in the valley, I know that I will be able to get another job relatively quickly, simply because there are a lot of job opportunities (there are tons of startups, quite a few large technology companies, and many smaller niche technology companies that no one outside of the relevant industry has heard of). Depending on the job market not completely tanking, I could have a job in as little time as immediately or as long as 6 months. During this time, I know I can also find contract work with another local company in addition to telecommuting contracting, if my emergency fund depletes early.
If I'm in Nowhere, USA, then it's a pretty good bet that the company I just left is the only game in town. That means I'm going to have to relocate or /(tele)?commute/ to a new job. That's not fun, especially if I have a wife with a job, or kids in school or both. Outside of Boston or NYC, I would be worried about finding a job quickly without having to move a significant distance. Even a place like Seattle, which has Google, Microsoft, Amazon, and a number of startups worries me a bit.
2) employment limitations: In CA noncompetes contracts are unenforceable. I don't know if this is the case in NYC, but in MA, noncompetes are legal, and from what I've heard usually about 1 year without pay. Which completely sucks for me, because the companies who will want to hire me the most will (most likely) be the competitors of the company i just left thanks to the skillset I've honed working for the previous company (eg, if I work on enterprise DB's, then I'm going to be much more employable as a DB engineer than as frontend javascript dev).
Honestly, I refuse to sign any non-compete unless I am paid my full salary and benefits for the entirety of the non-compete period, regardless of the reason for leaving. I doubt most companies would be willing to sign such an agreement or forgo a non-compete clause for a typical engineer, but even if they are, that is a whole bunch of extra negotiating I have to deal with that I don't have to deal with in CA.
3) what i develop in my free time: In CA, as long as I don't use company equipment, don't develop on company time, and don't develop something relating to the company, whatever I develop is entirely mine. This isn't always the case, and once again, just means a whole lot of extra negotiating if i'm working in a state where this isn't the case.
4) geography: in general, any point in CA is less than 120 miles (~2 hours drive time) from at least two completely different climates. This means that I don't have to travel far to "get away". Weekend trips are just a car ride away, and there are quite a few great state and national parks that are just a day trip away as well.
5) Salary and benefits: Salary isn't everything, but it is still very important to me, since I am not yet independently wealthy. Certain things like housing and food will adjust with my salary in different locations. Other things, like the price of a car or the size of my retirement fund ( I put away a fixed percentage of my income), or the cost of a vacation to someplace tropical won't. Taking a lower salary means a lower standard of living (unless the variable-with-geolocation cost expenses drop low enough relative to the salary drop on an absolute scale to make up the difference).
6) Relocating: I already touched on this, but relocating sucks. I have a fair amount of stuff that I either need to sell and buy again after relocating or bring with me. Hiring movers is expensive, but it saves me time from having to take time off to move myself. Moving myself is cheaper, but it is a timesink and adds stress to an already stressful process. In either case, there is still a rather large cost to relocating.
Regardless of where I am moving, I would at least want a relocation bonus to cover moving costs, and depending on how many tech companies are located where I'm moving I would also want a relocation bonus to move back to the bay area, where I know I can get another job (my new company might offer a relocation bonus as well, but not all companies offer this, and I don't want to limit my search to only companies offering relocation bonuses). Of course, the pragmatist in me tells me that getting a package like this will be practically impossible.
7) Culture: I love the fact that I am judged based on my abilities and not my outward appearance. I love being able to choose what I wear every day. I love that I can set my own hours within reason, so I can schedule doctor appointments, dentist appointment, car work appointments, and other things at reasonable hours. I love that short of a full-on emergency, crunch period or on-call rotation, my lunch hour(s), evening time, weekends, and vacation are my own. I love that my company provides many free drinks and snacks that run the gambit from healthy to junk. I love that my company has a large break room with TVs, game consoles, ping-pong, foosball, pinball, and pool and actually expects us to take breaks during the day to use the break room.
Many of these perks are nonexistent or limited compared to tech companies in other areas or non-tech companies with internal tech divisions. I also love that fact that most, if not all of these perks are pretty standard across tech companies in the bay area.
FWIW, there's a bunch of stuff I hate about the bay area, like high rent and house prices, expensive food, high state taxes, less than great public transportation outside in silicon valley, having to drive everywhere since it's usually too far to bike or walk outside of sf, high gas prices, &c., &c. Despite those things, though, I still find the benefits to working in the bay area compared to other areas far outweigh the disadvantages.
Number 4 is awesome! Portland, Reno, and San Diego are all weekend car-trips away (~8 hours 1 way, so 16 hours driving gives about a half a weekend's worth of time for exploring) for two or more people. You can also fly to have more time there, and flights are only about ~$150 round trip on Southwest. Then there's Napa, Monterrey, Lake Tahoe, Yosemite, Muir Woods, Point Reyes, Santa Cruz, Sonoma, and probably more that I'm forgetting as well. And then there's SF, Oakland, and San Jose, which all have events on the weekends, not to mention various things to do and see as well.
Number 7 is pretty great, too. Some are only going to be around until there is an abundance of well qualified software engineers, like free snacks and drinks and ornate gamerooms. But others, like flexible hours are just the nature of this job, so any place that understands how to maximize productivity will allow for this in various degrees.
And I'm just at a post-ipo company that most people haven't heard of, so it's not like i'm looking down from my ivory tower at facebook, apple, google, microsoft, or <trendy startup>.
1) employment options: I'm most likely not going to work for the same company forever. I love my current company and coworkers, but I'm also realistic. I doubt I'll be at the same company in 10 years.
Many times the only way to get a raise or a promotion is to switch companies, not just because companies don't always hire from within, but because maybe they don't have any current openings to promote. Companies go through bad times and have to lay people off, too. Maybe the new product turned out to be a bust, so they only need about half the current team to start a new project. Maybe they want to re-org. Maybe my boss or a co-worker sucks so much that I don't want to work with them anymore, and there's no openings to switch teams. Maybe my family situation changes so I want to work more/less hours.
For whatever reason, I am almost certainly going to have to switch companies sometime between now and when I semi-retire in about 30 years or so. If I am in the valley, I know that I will be able to get another job relatively quickly, simply because there are a lot of job opportunities (there are tons of startups, quite a few large technology companies, and many smaller niche technology companies that no one outside of the relevant industry has heard of). Depending on the job market not completely tanking, I could have a job in as little time as immediately or as long as 6 months. During this time, I know I can also find contract work with another local company in addition to telecommuting contracting, if my emergency fund depletes early.
If I'm in Nowhere, USA, then it's a pretty good bet that the company I just left is the only game in town. That means I'm going to have to relocate or /(tele)?commute/ to a new job. That's not fun, especially if I have a wife with a job, or kids in school or both. Outside of Boston or NYC, I would be worried about finding a job quickly without having to move a significant distance. Even a place like Seattle, which has Google, Microsoft, Amazon, and a number of startups worries me a bit.
2) employment limitations: In CA noncompetes contracts are unenforceable. I don't know if this is the case in NYC, but in MA, noncompetes are legal, and from what I've heard usually about 1 year without pay. Which completely sucks for me, because the companies who will want to hire me the most will (most likely) be the competitors of the company i just left thanks to the skillset I've honed working for the previous company (eg, if I work on enterprise DB's, then I'm going to be much more employable as a DB engineer than as frontend javascript dev).
Honestly, I refuse to sign any non-compete unless I am paid my full salary and benefits for the entirety of the non-compete period, regardless of the reason for leaving. I doubt most companies would be willing to sign such an agreement or forgo a non-compete clause for a typical engineer, but even if they are, that is a whole bunch of extra negotiating I have to deal with that I don't have to deal with in CA.
3) what i develop in my free time: In CA, as long as I don't use company equipment, don't develop on company time, and don't develop something relating to the company, whatever I develop is entirely mine. This isn't always the case, and once again, just means a whole lot of extra negotiating if i'm working in a state where this isn't the case.
4) geography: in general, any point in CA is less than 120 miles (~2 hours drive time) from at least two completely different climates. This means that I don't have to travel far to "get away". Weekend trips are just a car ride away, and there are quite a few great state and national parks that are just a day trip away as well.
5) Salary and benefits: Salary isn't everything, but it is still very important to me, since I am not yet independently wealthy. Certain things like housing and food will adjust with my salary in different locations. Other things, like the price of a car or the size of my retirement fund ( I put away a fixed percentage of my income), or the cost of a vacation to someplace tropical won't. Taking a lower salary means a lower standard of living (unless the variable-with-geolocation cost expenses drop low enough relative to the salary drop on an absolute scale to make up the difference).
6) Relocating: I already touched on this, but relocating sucks. I have a fair amount of stuff that I either need to sell and buy again after relocating or bring with me. Hiring movers is expensive, but it saves me time from having to take time off to move myself. Moving myself is cheaper, but it is a timesink and adds stress to an already stressful process. In either case, there is still a rather large cost to relocating.
Regardless of where I am moving, I would at least want a relocation bonus to cover moving costs, and depending on how many tech companies are located where I'm moving I would also want a relocation bonus to move back to the bay area, where I know I can get another job (my new company might offer a relocation bonus as well, but not all companies offer this, and I don't want to limit my search to only companies offering relocation bonuses). Of course, the pragmatist in me tells me that getting a package like this will be practically impossible.
7) Culture: I love the fact that I am judged based on my abilities and not my outward appearance. I love being able to choose what I wear every day. I love that I can set my own hours within reason, so I can schedule doctor appointments, dentist appointment, car work appointments, and other things at reasonable hours. I love that short of a full-on emergency, crunch period or on-call rotation, my lunch hour(s), evening time, weekends, and vacation are my own. I love that my company provides many free drinks and snacks that run the gambit from healthy to junk. I love that my company has a large break room with TVs, game consoles, ping-pong, foosball, pinball, and pool and actually expects us to take breaks during the day to use the break room.
Many of these perks are nonexistent or limited compared to tech companies in other areas or non-tech companies with internal tech divisions. I also love that fact that most, if not all of these perks are pretty standard across tech companies in the bay area.
FWIW, there's a bunch of stuff I hate about the bay area, like high rent and house prices, expensive food, high state taxes, less than great public transportation outside in silicon valley, having to drive everywhere since it's usually too far to bike or walk outside of sf, high gas prices, &c., &c. Despite those things, though, I still find the benefits to working in the bay area compared to other areas far outweigh the disadvantages.