I can tell you how I think I did it.

- Work hard

Reputation is a thing. You don't have to kill yourself, but the industry isn't that big, so getting a reputation for being a slacker isn't going to help.

- Be a nice guy/gal

This can be a reputation thing too. No-one that is worth hanging out with expects you to drink, or stay out late if you don't want to, but the more you get to know people and the more pleasant to be around as a person you are the more likely you are to succeed. Meeting people if you can (conferences, meetups etc.) and convincing them that you are a nice person (bonus points if you are) can kinda remove the first stage of interview.

An ex co-worker invited me and a friend round for dinner a couple of years back while we were travelling. It wasn't some polo-shirts-tucked-into-slacks and golf networking type thing, he just did it out of the kindness of his heart. I remember that, it's good for people to remember you like that too.

- Convince people you are smart

Being smart is one thing, but you have to market yourself too. Don't be obnoxious about it, but don't hide it away. This can be anything from emailing/slacking the company "Hey, check out this cool thing I did that you might be interested in" to just chipping intelligently (but respectfully, see the nice thing) in conversations/meetings. Going to conferences and talking intelligently to people about stuff helps, or the harder route, contributing towards open source. "I have three rails commits" a lot more impressive than "I have no rails commits" (if you're into Rails, check out the Rails github issue tracker, you can literally create PRs and get them merged).

- Take an interest in people, and listen

Even if it's hard, like it is for me.

- Focus your attention in the right places.

Like on upcoming or hard to hire for technologies that smart people are starting to use but that aren't ubiquitous yet. No-one with a "bums on seats" mindset is going to consider a remote PHP or JS dev if they tripped over 5 walking from their car to the office that morning. For me this was Rails. It's still hard to hire Rails devs and that means that companies are having to consider remote people, and the wages are good.

Go is another wave. Popular, used by some smart people, hard to hire for. There are others I'm sure.

- Apply anyway

Just like it's totally possible to get a job that asks for a degree when you don't have one (my first job ever for instance), you can apply for jobs that don't allow remote then ask to work remote. Let them tell you no if they want (don't get too invested of course), but I've worked at companies that have tried to fill spots for over a year, good developers for a lot of technologies are hard to find, and at a certain point companies that aren't friendly to remote working, with the right candidate right there, but who wants to work remotely might just re-consider.

- Apply to companies that are remote

Gitlab famously pays location based wages, but might actually be a decent stepping stone to somewhere else. Shopify does remote, I don't know if they do location based wages. Basecamp pays SF rates. You can apply to all these places, and maybe be rejected, but then apply again in the future. I know that there's at least one person who didn't get into Basecamp on the first application.

- Meet people, if possible

It helps that when people see your CV they think "Oh hey, I remember ngngngng, they talked intelligently about threads vs processes at that conf". If you're shy, that's tough and you'll need to work round it. I was shy and worked round it, so it was possible for at least me.

- Become a contractor/consultant

You need skills that you can market to a company (I do Rails performance/scaling and upgrade consultancy, I made someone's controller in the critical path 1500 times faster and orders of magnitude smaller the other day, that's good marketing).

You also need to market yourself. Reputation helps, but then so does a website that tells people how much you've helped other people in the past.

- Once you are there

Make sure to tell people about your successes. If you're working at a company that is not fully remote this is even more important. "Hey peeps, I thought you might be interested in this thing I did" again.

- Have an idea where you want to be in 6 months, 1 year, 2 years, 5 years.

Mostly this is about not letting yourself get stuck in a rut rather than having a fixed plan. Don't let yourself get used to the grind.

- I don't know, maybe do move to the Bay area

Are you young and single with no kids? It might not be a bad move. It could be a stepping stone. I have visited SF a few times and loved it, but then each to their own :)

Once again, this is I think what I did and I think what worked for me. It's all cumulative though, and I'm 40 now, and starting the local Ruby user group maybe 13 years ago was a long time ago, and a distant first step on the path to where I am now.