Fabien Penso

I'm Fabien, and this is my blog. I'm a Rails&iOS Engineer, and a photographer. I also enjoy travels.

Getting a job in San Francisco

Getting a job in San Francisco

Read this first

I wrote this post because I was receiving emails from friends about my past experience and wanted to gather all my advices in a single post.

I now receive more emails from readers than ever, at least a few per week, asking me questions about getting a job in San Francisco. I love you to blog, link, talk about this post, and if you really need to talk to me @fabienpenso is best. But while I would love to answer everyone of you over email, I just can’t.

However, if I receive the same questions over and over again, I’ll amend this post with more details. But please please please, don’t expect me to answer private emails about this subject.

This post also got featured on Hacker News on #3 position. I suggest reading the comments for further information. I’m also available for consulting.

My background

I’m a French citizen living in Paris, I moved to San Francisco in 2010 and worked for Causes for about a year, until I resigned and left. I had previously traveled there twice, for a few months each time. Causes was a small company, and the dev team was even as small as 4 Software Engineers at some point, but we had close to 150 millions users. You can read about what I wrote when I left on this blog post.

I’ve worked almost 15 years, I’m 34 years old but started very early in my business career, after leaving the University at 18 which I had only joined because I got rejected from a better school I wanted to go to. Overall, I think starting my professional life early was the best move and the best thing that happened to me. Today I focus on Rails & iOS development, and always enjoy being part of new projects.

Because of my connection to the French community and my past travels to San Francisco, I sometimes get requests by email about the matter. I decided to compile my replies within this post. Please note that applies to Software Engineers and I can only compare to what I’ve previously known: French companies.

Why going to San Francisco?

Mecca for Software Engineers, the only place in the World where the guy in front at Starbucks has big chance to be Software developer. If you are an Engineer, interested about Internet and startups: this is the only place to be. Working in fashion? Go to NYC. Working in Software development? Go to SF. It’s just that simple.

You’ll see an immense amazing positive atmosphere everywhere, people working day time for a normal job and coding on evenings in coffee places, trying to work on their latest idea. They might even raise a few millions dollars on it, really.

Why I left?

I love culture, I love exhibitions, I love museums and art. Yes San Francisco (and NYC of course) is better than any other American cities about that, but I was still missing my Parisian way of life. After almost a year I felt it was time for me to go back.

I love Paris as much as I hate Parisians1, and I had enough of working full time for a startup; I wanted to go back. Nothing fancy, lots of my friends love San Francisco and live there for a long time.

And one day I might very well go back.

Job Interviews

A French guy I knew, and I would have hired before, got rejected by me because his technical skills were not good enough. But I only found out doing a US style interview, a few years back I would probably have hired him.

Questions during recruitment interviews in San Francisco are way, way more technical. When you live in SF, you’re surrounded by Engineers, and companies need to know how good you are compared to others. They don’t always need an answer, and might just want to see how you think, how you interact when having a problem and so on, but you will get tough questions. Remember you’re not at home, and you have additional stress from the interview. The interview might include pair programming for a few hours with one of the employee, solving puzzles, and so on.

Questions could be writing a substring() function and being able to tell how fast it runs using Big O notation (I knew nothing about this before coming, and still got offers…), sorting arrays with specific sort methods, writing games, etc. It will involves doing something in a limited amount of time, it will require you to know coding, and I highly suggest you code for a few weeks before applying if you’re not confident doing it at any time of the day without notice.

Read this book and prepare yourself for your interviews.

The recruitment process

Here are some common steps you might go through:

  1. Skype call / Phone interview
  2. Technical interviews with some team members, rarely more than 2 hours.
  3. Longer technical interview
  4. Meet the whole team

The team spirit

Interviews are much longer than I was used to, and the so called team spirit is crucial. You must fit the spirit of the team you want to join. As an example, I’ve been interviewed at Twitter and went through speaking to about 11 people during 2 full days (I think the entire mobile team at the time), spending hours at their office and answering most of the time the same questions (what have you done in the past, why do you want to join us, etc).

I got rejected because of a single guy in the team who didn’t think I was a fit. Quite surprising for me as I had developed specific iOS Twitter applications, and worked with the Twitter API for a long time. I had internal connections, early access to their streaming API, and even met Ev Williams during Chirp because someone wanted to show him the project I was working on2.

Or maybe I got rejected because I was just too much of a dick.

The rejection email from Twitter was very formal, something like “thanks for coming by but we don’t have something for you right now, good luck”. Spending 2 days of your time at a company to get such a short email is apparently very common in the US, and when I was on the other side trying to hire for Causes someone told me it prevents the candidate to sue you. Those emails have to be short and concise.

When rejecting candidates for my own company I wanted to tell them why I rejected them, and how to improve, but I have been told not to do it, for legal reason.

I will add than Twitter had a specific atmosphere compared to other so called startups. The employees seem to be hired on more than skills, everyone at their office is very much hipster like, beautiful looking, feeling super confident and ready to kick it. Walking around Twitter sometimes almost feels like walking within a TV show.

But being rejected by a team because you’re not a fit doesn’t mean you can’t try another within the same company, if the company is big enough (Apple, Google, etc).

Referrals

Because I have a few years of experience, and a few projects than worked (the most popular in France is probably the French website linuxfr.org which had over 40 millions hits a month back in 2001, a few dozen of thousands of users, and won the Linux Journal readers choice awards), I get people asking me for Engineers to hire. In France my word would almost be enough for someone to be hired, they get a few more questions but people trust my judgment and hire the guy. In the US, my word would not make a difference and the candidate still go through the whole recruiting process.

In San Francisco referral helps, but won’t get you a job.

It took me quite a long time to understand this, but even with a very good referral, you still go through the full hiring process, which is much longer than the one we have in France. I believe the US way to be better, as you can see how good and experienced is the candidate, even him being a friend of a friend.

A French friend of mine I had referred to Causes got rejected at step one, even I told them I’d like him to be hired.

Being local

Before those “on site” interviews for jobs, you need to actually be in San Francisco. My best advice is go to San Francisco for a few weeks, do some sightseeing, enjoy the city and contact all the companies you want to work for before coming. Try to have your days full of appointments and meet as many as possible while being here. Many cool companies are hiring and always have a job listing on their page. Send your resume, get in touch with them.

Usually you’ll have phone screens first, then it could even be remote pair programming but if your English isn’t perfect, I’d suggest just doing it from San Francisco.

Come visit, take a month off. Meet as many people as possible, first with companies you don’t care about so you get trained to US style interviews. Keep the ones you really want to work for when you feel confident enough.

Improve your chance to get a job

Attitude: You must be super positive, happy and bring more than just skills. This isn’t easy for French, they’re more willing to complain for every change you want to input than embrace them.

“Do not put up with ego-centric personalities or downer attitudes.”

Ev Williams

Expertise: Learn Ruby, iOS and use Agile methodology. If you believe into A/B testing, Specs, TDD you probably have a better chance to get a job than if you don’t.

Recruiters

Avoid them like the plague, most companies I would love to work for avoid them too. Get in touch with companies you want to work for, make them aware you’re looking for a position, and don’t even bother to ask recruiters.

However if you do use recruiters, be aware than they sometimes get tens of thousands of dollars if they find someone for an Engineer position. Someone responsible for recruitment for a famous startup told me she would give me as much as $20,000 if I found her someone who worked in the company for 6 months. That’s what she would have to pay a recruiter anyway, so she was happy to give it to me.

Sadly even for that amount I knew noone available.

The only case you might be looking for recruiters is if you’re looking for very specific positions like CEO, but you’re probably not reading this article if you do.

The Salary

Back in 2011 I had $100k a year, that might seem a lot for you but it is not that much in the Valley. I accepted because I had lot of stock options, they took care of my VISA, and I just wanted to live in San Francisco for a while. The cost of living is enormous and you’ll probably have to pay at least $2,000 a month for a small studio. This is so ridiculous than you’ll have to get roommates like you’re 20 years old, or live with a house owner who will put you rules like not to invite your friends at home.

San Francisco is now the most expensive city of the US for housing, more than Manhattan.

An intern working for a startup might get $80k a year, a Senior Engineer probably at least $150k. Recruiting in San Francisco today is a nightmare, and you’re the Gold. I repeat, if you’re a skilled Software Engineer: you’re the King everyone wants. Make your rules and write your story.

French will note US companies don’t pay much tax on salaries like they do in France, what could make you think is a lot of money isn’t. Your French salary costs 40% extra to your company, but not in San Francisco.

The VISA

The way you get your VISA changes all the time, what may be true today might be untrue tomorrow. I was lucky to get a H1B, which seems to be one of the best VISA to later apply for a Green Card.

This is a long process, and you’ll have to go back home. You can not start working while being in the US without a VISA, and you can’t apply for a VISA while being in the US on a Waiver VISA (the one you get when you come from a list of specific countries). There is no efficient turnaround than I’m aware of, you must go back home and wait for your VISA, but your company will probably agree to have you work remote while it’s being done. Your company will pay a lawyer to deal with the Immigration (USCIS) and you’ll have to give the lawyer all the details about your diplomas, I even had to find out the grade per class I had 5 years before, during my Master Degree school year, and the class list I had during that year.

My only advice: Request a Green Card, don’t wait.

Seriously, ask your company to apply for a Green Card for you from the first day you start working for them. Your Green Card has to be sponsored, and if you own a Master Degree of Computer Sciences, the process might be much faster than you’d expect. I heard stories from people getting it within a year.

The Green Card will give you the flexibility to work for anyone you want, it’ll give you way more freedom than anything, and if the company is willing to wait for your VISA you’re probably very well able to request this from them. They know you’ll have to stick with them until the Green Card process is done, and maybe even 6 months more after.

If you had one thing to remember after reading this blog post, it’s requesting a Green Card.

When you’re leaving

Foreigners, moving from a culture to another isn’t easy, and you might very well want to come back home. France and the US have more difference than you’d expect, and I suggest to hold to it for at least a year. Big culture changes require time to accommodate.

However you might decide to quit. If you do, remember how small is the Valley. It is very small, believe me. Everyone talks to each other, and I’ve even seen employees negotiating their leaving telling their CEO/company they’d give them a nice referral if being asked, getting a good one in return.

It’s such a nightmare to hire Software Engineers, noone wants you to spill on the company telling everyone how bad your experience was. But don’t burn your bridges, you might want to come back to San Francisco or continue to work remotely with the silicon valley community.

Some random notes

I would suggest French people not to work for French companies in the Valley, unless you have no other choice. You won’t learn as much from the American culture, and the French company would probably not pay you as well as other startups. They know you’re used to be paid less, they’ll pay you less.

Why go half the way? Get the full experience and work for an American startup.

You’ll have a blast.

Checklist

A list of things you should have before applying anywhere:

  • A resume3. Let’s be honest, if you’re good you don’t need a resume. But having a nice one helps: Spend a few hours on yours.
  • A Github account with published code.
  • A website is nice, a blog is too, mostly if about technical stuff. You’re reading mine.
  • Know coding, languages often requested these days include Objective-C, Ruby, Python, Java (Android).
  • A Linkedin page, startups use it a lot (and so do annoying recruiters).

Well this blog post became much longer than I expected, I hope you found it useful. If you did, drop me a note at @fabienpenso. If you didn’t, drop me a note anyway telling me how to improve it.

You can stay up to date via my RSS feed.

Thanks for reading.

  1. People born in Paris, or living in Paris for a long time.

  2. TweetSell.it: a service gathering all Tweets about sales, parsing the item and its price. See a video demonstration I did, as the website is now offline.

  3. See mine if you need a sample. It uses Latex and the moderncv theme.

Github Twitter Facebook LinkedIn RSS