I usually write very technical things about iOS in my blog but today I’ll make an exception. I get asked about this a lot so I decided to write an article about it so I could point people to instead of repeating myself all the time.
A Brazilian colleague just asked me the following on LinkedIn:
“How are the opportunities for developers in the US? Is the procedure complex to get a job and a work visa?”
It’s easier than you think. Or at least for me it was easier than I thought. But it’s a long process and the selection process is different from the Brazilian and also between different companies so you’ll have to adapt and study a bit.
But first a disclaimer: I am NOT an expert on this matter. All I’m going to talk about comes from my personal experience when I was hired by Pocket Gems in June 2012 and might not be the case for every other candidate and any other company out there so take all this with a grain of salt.
I’ll start with the visa process because it’s the first thing you need to understand to start the process.
The first thing to consider is the period in which visas are granted by the government. The fiscal year starts in October here, so visas always start in October. Meaning, if you have your visa approved in June, will only be able to move in October.
The U.S. government has a cap on H1B visas (the most common type for foreign employees) which is currently set at 65,000 per fiscal year. And the government starts accepting visa applications in the beginning of April. So, if you receive an offer in December, the company will have to wait until the beginning of April to submit your paperwork and then wait until October to actually move.
Another important detail is that currently this limit is reached very early. I received my job offer in June 2012 and that year there were still visas available (the cap was reached a week after my request was submitted). But this year the competition for visas is so fierce that the government stopped accepting requests two or three weeks after the start of the process, still in April!
Taking all this into consideration the best time for you to start looking for a job here is from July to March but I would say that the ideal is to begin in August or September. Then you’ll have time to do the interviews, receive proposals and have some time to prepare all the paperwork before the beginning of April and the company can submit your request on the first day of April.
About the paperwork, it’s really not that complicated. In my case the immigration lawyers that the company hired to handle my case did most of the work. my college in Brazil already provided translated certificates so I sent those. If your college can’t do that I think the lawyers can take care of the translation too You’ll have to send them a few personal documents as well as your college certificates and sometimes letter of recommendation of previous employers. If you can provide copies in English (some colleges can do that) it’s better but I think the lawyers can take care of that if you can’t.
After you submit all the paperwork the lawyers will start preparing your package to submit to the immigration department and then it’s a waiting game. In my case the paperwork was submitted in June and was only approved in mid October. The department of immigration might also ask for additional documentation from you or your company but I think this is normal.
Also keep in mind that there’s something called premium processing. If the company is willing to pay the department of immigration a larger fee then your application will be processed faster than with a traditional fee. Keep that in mind and ask the company that will hire you if they’ll pay for this or not. It might not make sense if your application is submitted in April but (assuming the cap has not been reached) it might be better if you submit in June.
Enough about the visa, first you need to get an offer from a company willing to sponsor your visa. So let’s talk about that, always remembering that this reflects my experience and might vary. So let me tell you my story.
At some point, I think it was 2010, I decided it was time for me to get a job in San Francisco. I’ve been in the city many times before and always had a good time there. It’s been a dream of mine to move since I first visited when I was 21.
So at this point I decided to start expanding my online presence. I created this blog and started writing a few articles. I was always a big fan of Ray Wenderlich’s website so when he put out a request for writers I jumped on the opportunity and got accepted based on my previous writing.
I also started going every year to WWDC, Apple’s developer conference, help in my beloved San Francisco every year in June. In 2011 I met one of the founders of a startup that was looking for developers in an event after WWDC and he liked me. We scheduled a remote interview when I was back in Brazil.
The interview was my first in many years and my first real technical interview. In Brazil we’re usually hired based on relationships alone and that’s how I got all my earlier jobs. It consisted on a series of typical CS problems where I had to either write some code to solve a problem or at least describe how to solve the problem in a high level description. I also had some talks with the other founders, both technical and non-technical.
I passed the interview and they made me an offer to start working remotely with the possibility of sponsoring a visa if they liked my work.
They did and we started the visa application process. At one point in the process the immigration department asked for some information about the company (financials, office information, etc.) and more documentation about myself (they wanted the translated version of my college papers). At this point the company started to have funding problems and I decided it was best to halt the process as I didn’t want to have a rejected visa in my name and I knew the company would not reach the financial bar the immigration department required.
So, back to almost square one I started spreading the word to some people I knew in the US that I was looking for a job that could sponsor me a visa. One of these people is a guy (now my friend here) that contacted me because of my tutorials on Ray’s website and that I was mentoring via Skype from time to time. He told me he knew some people at a gaming company and that they were hiring and willing to sponsor H1Bs. He referred me and I started the interview process.
I had a few talks over Skype with a recruiter on the company that explained to me how the process works. One hint I’ll give here: ask as many questions as you can at this point. Sometimes the recruiter might not be able to say a few things but it’s OK to ask. So ask how many interviews you’ll need to do, what’s the nature of the interviews, what’s the pre-requisite for all of them etc. In my case for example they did tell me I will need to show good knowledge of CS fundamentals, like data structures, algorithms, runtime complexity, etc. As my college days were far behind me and my previous jobs really never required these things I had forgotten most of these topics and had to go back to my college books to study them and get a refresh. Have I not asked and not studied I can say I would not have passed the interview process.
So I did a series of interviews over Skype with different people. As I explained above every interview is highly technical and you have to show good knowledge of CS fundamentals as well as good analytical thinking and problem solving skills. All interviews were conducted over Skype and with a website that allows 2 people to code at the same time online so my interviewer would see my code live and I could also get the questions in written form.
This is very specific to Pocket Gems and might vary. In this case for example no knowledge of iOS is necessary as we believe people with good CS knowledge can learn new languages and get used to different platforms easily but I know some companies might ask platform or language specific questions.
Again, during these interviews is a good idea to ask a lot of questions and clarifications about the problems you’re given. The interviewer might not be able to answer some questions but most questions are not only answered and help solve the problem but are seen by your interviewer as a good sign that shows you pay attention to details and ask the right questions when given a problem.
After 3 Skype interviews they decided to make me an offer. After a few days I accepted and started to rush my documentation because we knew the cap was about to be reached. As I said above we submitted the paperwork a few days later (this is not typical, it usually takes a few weeks to prepare all the paperwork but the company really wanted to avoid the cap so the lawyers were rushed a bit) and the rest you already know.
A few things you should keep in mind when you get an offer:
- The salary is a yearly salary. This is different to what Brazilians and maybe others are used to, as we’re usually given monthly salaries. And this value is before taxes so you’ll have to account for that to get the amount of money you’ll actually receive at the end of the month. Again, I’m not a tax expert but a good estimate is that you’ll have to pay around 30% in taxes! But this varies. Ask the company.
- Ask about benefits. The most important one is health insurance. I think most companies do pay for health insurance but you should ask what kind of insurance it is and research online about it. Also, differently from Brazil you’ll need 3 kinds of insurance: dental, eye and medical. Personally I would not get a job that didn’t pay for my insurance as this is extremely expensive here, especially for a personal plan. Also if you’re married or have kids check if the company covers them too.
- Check where you’re going to live. First it’s ideal if it’s a place you already know and like. But most important is to check how much it actually costs to live there. For example it might be better to get a job that pays 100K in Austin than a job that pays 110K on San Francisco or New York. These 2 cities are crazy expansive right now so your salary better be good.
- Try to get remote work as a contractor while you wait for your visa. Depending on the company and on how impressed they are with you they might do it and I think it’s totally worth it as you’ll already start making friends even before you move. This can be extremely valuable when you actually move.
- Check the company as much as you can. As I said above, the first company that hired me really didn’t have that much money in the bank and the founder could not get more funding and so my visa was almost denied not because of me but because of them. You also don’t want to join a company that might lose funding in a few months and will let you go as your visa is tied to your job. If you do lose your job you have some time to look for another job that can transfer your visa to them. How much time? I have no idea but what I read online ranged from zero to 90 days. I’d say that as long as you don’t have a job on an H1B you’re at risk of being deported even though the risk might be small. Again, no expert here so don’t trust me on this…
- Be sure the product is something you’ll enjoy working with. Moving to a different country is not easy so you better damn way at least like what you’re doing for over 40 hours a week. That does not necessarily mean you have to like the product itself. I’m not much of a gamer but I really enjoy coding them. They present programming challenges no other product does and also are very visual, something I enjoy a lot.
As this article is going in an opposite direction now it’s time to talk about how and where to apply.
I said in Brazil most hiring is done using personal connections so you might think I meant to say this plays no part here but this is not true. It’s always better if you know someone in the company or someone that knows someone. My point when I said that is that this is not the only part of the process. Even if you know someone and get a good recommendation you’ll still have to go through the whole interview process. But it’s always good to be referred.
So if you’re interested in applying to a certain company, try to use your LinkedIn contacts to get introduced. If you’re in a conference try to reach out to someone that works there, introduce yourself and let the person knows you’re interested in working for them. Doing this shows real interest and that you’re a pro-active person.
But if you can’t do any of this just apply online anyway. Get your LinkedIn in order, make a nice one or two page resume and a cover letter and just apply.
Regardless of the method you use to apply, make it clear from the beginning you’ll need the company to sponsor you a visa. A lot of companies do this but some might not be willing to and this will save everybody a lot of time. Don’t think you’ll go through the whole process and impress them enough that they’ll change their minds about visas because you’re so awesome. Sorry, won’t happen.
One small thing that can help here: get a phone number in the US and transfer all calls to your cell in your country. The easiest way to do this is buying a Skype number and setting up call forwarding but there are cheaper websites out there. I use Sonetel for example and it’s really easy and cheap to buy a number in the US and set it up so it forwards all calls to your cell phone. This is not to fool people into thinking in the US and you should make it clear when you give out the number that this just transfers to your local cell, but it makes it easier for a recruiter to call you and you won’t need to keep your Skype running all the time.
Well, there you have it, I think this answers the question. I’d also like to write about how it is to actually move from a place you spend most of your life to a foreign country as this is very important but I’ll leave this for another post. All I’m going to say is, if you’re moving to San Francisco, don’t worry, this place is amazing and we got you covered! Seriously, people are amazing here and you won’t have many problems when you move.
One last thing: Pocket Gems is still hiring software engineers and for other positions too. Check out pocketgems.com/jobs and shoot me an email if you’d like to apply for a job working with awesome people like many others and myself!
Keep tuned for more technical and non technical posts. You can subscribe by email, RSS or following me on twitter.