#1 and #3 you can probably avoid by working remotely. The thing with remote work is, companies usually look for devs with above average skills, they also look for devs with previous remote experience and of course awesome communication. As for #4, that's a difficult one, I think you could probably get around #4 if you have a great portfolio of working projects