Why Silicon Valley?
It's probably every software engineer's dream to work in Silicon Valley,
to rub shoulders with the best in the world and to tackle the most
interesting problems on daily basis. Unfortunately, for those born
outside of US, that will remain just that: a dream, thanks largely to
the stringent 65,000 H1B visas quota every year.
Not so for the Aussies.
Thanks to the FTA negotiators (and George W Bush) back in the early
2000's, Australia is currently the only country in the world eligible
for E3 visa. So to leave one of these 10,500 annual quota unclaimed
while still dreaming about Silicon Valley is just not on!
To get an E3 is not difficult. There's literally thousands of blogs and
Q&A on how to apply for it. But none of it matters if you cannot get
a job offer in the first place. Job application is always the most
difficult part, yet it's also the part people least blogged about. I
guess that's because everyone's situation is different.
So, for whatever it's worth, this is my experience of landing a job in
the Silicon Valley as a software engineer. Hopefully, it can help
someone out there.
Starting The Job Search
There are many ways to work in Silicon Valley: through a friend or
network, get transferred from Australian office, meet recruiters who fly
out to Australia, create a start-up etc. Congrats if any of these
avenues is available to you and you're happy with the position and
compensation.
For me, none of the above was effective, so I resorted to the old fashion way: job sites.
In my opinion, it's the best option because there's more selection, more
flexibility and better match for my skill set. In Silicon Valley, small
is beautiful, and job sites are often the only way to introduce
yourself to them.
Moreover, I planned from the outset to chase as many offers as I can in
order to leverage my negotiation power. I let the recruiters know about
it and they encouraged it for obvious reasons.
Preparing Resume
The first thing I did was to get my resume ready. It's no different from
preparing a job search in the Aussie market, with one exception: phone
number.
I read it somewhere: "Never leave an Australian number in the resume"
and it turned out to be one of the best advice. I discovered later
recruiters simply don't dial international numbers, it's part of their
job training!
So, I apply for a US number through
Skype Number
service. You can pick whatever area code you like. I picked (408)
because it's a well known area code in the south bay; basically the area
I wanted to work in.
I left my Australian address in the resume to let the recruiters know
I'm a foreign worker looking for a visa. I didn't leave age, marital
status or ethnicity because, by law, companies in US must adhere to the
equal opportunity hiring practice.
As for availability date, put down the actual date which you'll be
available, never put down anything like "Depend on E3 application
process", it'll confuse the hell out of the recruiters.
Job Search
Once my resume's ready I proceeded by surfing the major job sites e.g.
linkedin, indeed, and cybercoders and look for both permanent and
contract positions. At this stage, I really don't care how
stable/unstable the position is, I just want to get my foot in the door.
One thing worth mentioning is that searching with keywords like E3 or
H1B will almost never yield any result. If anything, you'll only find
ads that say H1B is not welcomed.
It took me a while but I was eventually able to view myself as a local
candidate. After all, E3 is a subclass of the E visas (the Employment
visas), so we're really not that different from someone holding an
EAD.
So whenever I'm challenged with the question: "Are you allowed to work
in US", I have no problem to check "Yes" because I know E3 application
is really no hurdle.
I've also read it somewhere it's a good idea to travel to US on VWP for 3
months and do face-to-face interviews. While this may be true for other
industries, it's definitely not for IT. In fact, companies ubiquitously
carry out one or two phone / Skype interviews and online coding exams
before ever inviting someone to the office. At this stage, they couldn't
care less if you're living next door or half a world away, they just
want to know how good/bad you are. I certainly saved a lot of money by
staying in Australia.
Talking to Recruiters
Be prepared to hear nothing back for 90% of the jobs you applied for. At
least that's what happened to me. Most likely because they don't want
to hire a foreign worker, but I can never tell. For those that do got
back, it's almost always the agents who called.
The initial calls always come in the middle of the night, so I used the
Skype messaging service to tell the caller I'm unable to pick up the
phone and I'll call back, translated to English: "I'm in the middle of
my sleep, in a time zone 18 hours ahead of you, and you are talking to
my Skype account". When I call back, I always let them know their 2pm is
my 7am and they'll quickly adapt to the call pattern.
Most recruiters aren't familiar with E3, so you'll have to explain it to
them. The key points to mention is it doesn't apply restriction on who
you can work for and there's virtually no quota restriction.
Keeping a good relation with your recruiter is paramount. These guys can
get you to interviews you'd otherwise have no shot at. I was fortunate
enough to impress one of the larger recruiters,
Jobspring,
and they just send me to one interview after another. They even passed
on my resume to their SF office (80 km away) and ask for more help. It
was as if I've struck a gold mine. Can't say enough good things about
these guys. Look them up when you get a chance.
Phone Screening / Online Coding Exam
This is the where rubber meets the road.
In Australia, most interviewers ask about work experience on certain
programming language, framework or product and a few questions on the
fundamentals and design (anti-)patterns. Not so in Silicon Valley. They
love to dive right into the theories e.g. how would you implement a LRU
cache?
I had to spend a good couple of months on my books from Uni just to get
re-acquainted with all the data structures, algorithms, big O notation
and concurrent computing theories. I learnt or re-learnt everything from
BST traversal, RPN, Shunting Yard, sorting algorithms, collections I
never knew existed to some of the programming fundamentals I've
overlooked in the past. I visited
CareerCup and
worked through many of the interview questions. In the end, it was time
well spent. I strongly recommend it to everyone, even if interview is
not your favourite activity.
Beware the online coding exercise is not for the fainthearted. Not only
are you pressured to get the right answer, you're also pressed by time. A
couple of times I was able to come up with the right answers but was
never invited back for a second round simply because I wasn't fast
enough. Chances are, I would've never enjoyed working in those companies
anyway.
Test yourself and see if you can write a bug-free in-order BST traversal iteratively in 15 minutes.
Beyond the coding questions, you've got to know your stuff well to
impress the interviewers. I went through at least 20 first round
interviews and 10 second rounds (each lasting at least 1 hour) in the
span of 4 weeks and as time wore on, I got sharper and sharper. I can
answer the follow-on questions before they even had a chance to follow
on.
I can safely say, I've done more interviews in one month than many
people have done in a lifetime. Not sure if it's applicable to everyone,
but it's definitely something to prepare for.
"Why Do You Want to Work in US?"
By far the most common question in interviews, and in some ways, a difficult question to answer.
Imagine someone asks you "why do you want (or not want) to get
married?". You can either convince him with a few words or argue about
it for hours. The bottom line is: it's a very personal question, there's
no "right" answer. It's the same with this question.
At the beginning, I'd give a long-winded answer like "I want to work
with the best", "Design large scale system", "Work on the most
challenging problems" ... blah blah blah. Only to invite questions like
"What do you mean?" and "How do you know this is what you'll be doing?"
Over time, my answer got shorter and shorter until it's just a one-liner:
"I've been working in Australia for xx years and I feel like it's time for a change of scenery"
In a few cases, that's all I needed to say. If the interviewers wanted
to know more, I'd give them a few more lines and wait for them to
respond. The more they asked, the quicker they move on to other
questions.
Still, one interviewer managed to spend 10 minutes on this question.
Needless to say, we had a mutual dislike towards each other and the
interview ended pretty quickly thereafter.
Face-to-face Interview
By the tail end of the month-long phone interview process, I was able to
distill my leads down to about 6 to 7 companies. And that's when I
booked my flights and hotels. I asked my recruiter to book 2 interviews a
day, one in the morning and one in the afternoon over 4 days.
It turned out to be a really bad idea.
Each final interview was at least 5 hours long! I thought, alright, the
next one can't be 5 hours, and it went for 6! I lost count the number of
times my stomach rumbled for the lack of food. It was quite a culture
shock.
Still, I can't complain. Spending long hours in the interview rooms can
only mean one thing: I'm still wanted. Sure enough, offers came on the
third day and I knew it was worth it; I wasn't going home empty-handed.
The interviews were pretty much the same as phone interviews, except the
interviewers come one after another, each talking for about an hour.
Since the start-ups usually hire nothing but engineers, everyone asked
technical questions, only some behaviour questions and they're usually
easy to answer.
I didn't get anything out of the left field like "How do you estimate
the number of people currently logged on Facebook?" I'm sure even Google
have stopped asking these silly questions, so there's no need to
prepare for them.
Negotiations
I was lucky enough to get a few offers and talked up my price a little
bit. I ended up with a figure exceeding my initial expectation, but I
didn't stop there.
I threw in questions on health covers, annual leaves, relocation costs
and most important of all, Green Card. At this stage, I was in the
driving seat. E3 was a foregone conclusion. Companies were more than
happy to shell out $5,000+ to get it done; they've spent far more on
H1B's in the past, five grands is like pocket change to them.
Obviously, the promise of GC will depend on my performance in the next
few years, but it's comforting to know there's the possibility.
Anyway, that's pretty much it. I hope my experience can offer help for
others out there. Look forward to hearing about your stories.