コンテキスト: https://togetter.com/li/1331865
グーグルジャパンではなくてUSの本社での採用の話。私が受けたのはSoftware EngineerではなくてDeveloper Advocate。Engineering組織の下についているのでコーディング面接有り。ただし評価項目がSWEとは異なる。
アメリカの4大卒、新卒の時のTOEICは900点以上だったはず(覚えてない)。面接時点でアメリカの現地企業で4年実務経験有り。
CSの授業は受けたことが無い。動画サービスを作っているベンチャー企業でPMのような「コードを書く以外でやらなきゃいけない仕事」をしていたので、知らない技術を振られても要件定義したり仕様書いたりできる筋肉はついていた。JavaScriptとPythonは自習。アメリカで入った一社目にて社内移動でエンジニアっぽい仕事についたきっかけで、2社目は社内ツールを作るチーム、3社目で初めてプロダクトエンジニアリングのチームに入った。
DevRel関係だと面接時点でJSミートアップオーガナイザー2年目、カンファレンス登壇20回程度(ただし全部趣味で書いたコードの話)、HackerNewsのトップに上がったプロジェクト1つ、コンパイラとService Workerについて書いたブログがちょっとシェアされたくらい。
カンファレンスに登壇していたので、今のチームの何人かとは会ったことがあった。ある日突然「Googleの者です」と名乗る人からDMが来て、「君の名前が良く話にでるんだ、今週ニューヨークに行くのでコーヒーでもどう?」という怪しいメッセージをもらう。新手のリクルーターかと思ったので速攻でGooglerの友達に「この人本物?」と問い合わせたら実はDirectorだった笑。共通してやったことのある仕事がテキストエディタ開発だったので、アレは難しいよね、コレはどうやって実装したの?みたいな話をカフェで30分程度して「今の仕事すごく楽しそうだねー、Let's keep in touch」みたいな感じで別れた。
2ヶ月くらい経った頃「チームに空きができたんだけど面接受けないか?」というメッセージをもらったのでリクルーターに繋いでもらい、11月終わりにリクルーターと電話面談、12月終わりに仕事の大きな締切が入っていたので1月に入ってからじゃないと面接はできない旨を伝えて予定を調整してもらった。
この時点で面接準備のための本とかウェブで受けられるクイズとかといったリソースのリストがリクルーターから送られてきたので、Googleを以前受けたという友達からCracking the coding interviewとアルゴリズムの本を借りた。クリスマス休暇中に勉強しようという思いはあったのだけど、本を読んでも全然おもしろくなくて「こんなことが要求されるならべつに入らなくていいや」と心に決めたので、クリスマスは趣味の編み物ウェブアプリの開発の方に力を注いだ。
(ちなみにGoogleでは大学でCS専攻でなかった人向けのインタビューコーチングとかも行っているので、心配な人はリクルーターに聞いてみると良いと思う。私は参加したことが無いけれど、他の友達は模擬面接みたいなのをやったらしい。)
面接の日はお昼前に呼ばれて、コーディング面接する4人を前にプレゼン20分+質疑応答10分、ランチの後コーディング面接4回した。プレゼンは前カンファレンスで使ったCanvas描画関係のスライドを短くカットして、クリスマス中に作った編み物アプリのパフォーマンスを上げるのになにをやったかみたいな話をした。
コーディングはいわゆるアルゴリズム系のクイズ。黙って考えるよりはダメなコードだとわかっていてもさっさと書いたほうが良いだろうと思っていたので、出題されてる最中から「あーじゃこういう関数(中身なし、名前だけ)でこうやって呼び出したときにXすれば良いわけね」みたいな感じでとりあえずコメントから埋めていった。一応全部解答はできたけれど、半分くらいは駄目コード書くだけで時間オーバーになってしまったので「コレさ、前同じようなこと仕事で書いたんだけどもっとエレガントな方法があったんだよね、今思い出せないけど。」みたいな話をした。
CSの「勉強」は一切したことがなかったけれど、当時仕事でtext parserを書いてたり、編み物のために行列計算したり、Babelプラグインを理解するためにコンパイラの基本だけ(ASTとか)は知っていたりしたので、運が良かった。ちなみに解答は全部JavaScriptで書いた。
DevRelという職種のため面接官ほぼ全員「どこかのカンファレンスで見たことがある人」で、私は勝手に親近感を持っており、あまり緊張せずにの面接にのぞめた。受かるかどうかより、今後会ったときに「あーあの駄目コード書いた人だ」って思われたらツライなとか、そっちの方が気になっていた。さらに、面接の日は生理二日目でコードを書くことよりも、いつトイレに行けるのかの方が気になっていた。ニューヨークのオフィスからロンドンとマウンテンビュー繋いでビデオ面接だったので、次から次へと画面に人が出てきて「次の人が来るまで待つ」という休憩時間が無かった。
2週間後くらいにリクルーターからもう2回面接するように連絡が来たので、今度は家からビデオ面接でコーディング面接とコーディング無しのDevRel関係の面接をした。
駄目コードしか書けなかったので期待していなかったけどその後一週間くらいでオファーが出た。オファーは100kUSDちょい上のサラリー+ボーナス+RSUというオファーで、トータルパッケージを見てもニューヨークのマーケットレートと比較していたって普通な金額だった。給与だけみると毎月の手取りは下がるので、ネゴったらSign onボーナスを追加してくれた。ちなみにGoogleのサラリーは額面だけ見ると特に他の企業と変わらないか低いと思う(USの場合)。「パフォーマンスに対して支払う方針だから、ボーナスとRSUを加えたらこんな良い額面じゃないか!」と押してくるリクルーターに対して「毎月の振込金額の方が重要なんだけどなー」とか言った記憶。
給与よりもオファーされたレベルの方が気になったので(自分が思うレベルとは一つ下だった)オファーにサインする前にチームのマネージャーと昇進のプロセスとかの面談をした。仲の良いGooglerが何人か居たので彼らの経験や意見も聞いてみた。
実は面接の準備よりもオファーが出てからサインするまで、配属になるチームの下調べにかなり時間をかけた。 カンファレンスで会ったことのないチームメイトの話も聞いてみたかったので東京にいるえーじさんを紹介してもらって話を聞いたり、チームの中では一番仲が良いJakeとビデオチャットして「今の仕事で一番キライなこと」などを聞いた。
開発者コミュニティに結構深く関わっていたのもあって、いろいろな会社・人のいい噂も悪い噂も(いわゆる#metoo系)毎日耳にしていたので、知り合いの女性エンジニアを中心として「ぶっちゃけあのチームどう思う?」という意見を聞いて回った。DevRelという外向きのチームだったのでチームメイトも他の開発者によく知られており、こういう話は探しやすかった。
当時はこのチームに女性がいることはあまり知られていなくて、チーム構成も2人を除いて全員白人。だたJakeとかAddyとかPaulとか人気者の多いチームなのも知っていたし、そんなところに women of color が入るとダイバーシティ採用だの採用基準を下げただの言われるのは目に見えていたので(実際に「おなじポジションを受けたけど落ちた」と宣言してきた人がその後Twitterで私に対してなぜか攻撃的になった)、そういう理不尽なこと言われたときにちゃんとサポートしてくれるマネージャーなのかもかなり慎重に調べた。
結局「あのチームはみんな良いヤツだけど、たまに問題があることすら見えていない(clueless)側面がある」みたいなフィードバックが主で、まぁ無知なだけなら言えば良いし、なんとなくそういうことズバッと言っても大丈夫そうなメンツだという結論に至った。オファーにサインした日に、「生理の日に面接で辛かった」というBlogを書いたら軒並みチームメイトがFav、RT、コメントを残してくれて入社前からそういうキャラだっていうことは周知された気がする。
実はアメリカで入った最初2社はあまり良い思い出が無くて転職に至り、3社目でやっと心理的安全が保たれた良いチームに出会えたので、大企業という安定とか今後の給与の伸びとかよりも、一緒に働くチームの方を最優先に考えていた。最終的に当時働いていた会社(3社目)の上司に「Googleからオファーもらったんだけどどーしよーおぉぉぉぉぉぉ」という電話をして「やってみたら良いじゃん」という話になったので決断した。あと、当時はトランプが大統領になったばかりでMuslim Banとかが適応されリアルに知り合いがアメリカに戻れなくなったり、ICEの移民摘発とかがニュースに良く上がる時期で、移民としては大きな会社に所属している方が安心というのも少なからず心の隅にはあった。
Googleは散々いろんな問題があるし、チームも完璧な理想とは言えないけれど、microaggressionでイラッとした時に愚痴を聞いてくれたり、対応してくれる上司(「そんなこと自分で解決しろ」って言われないの最高)が周りにいるので居心地は良い。「なにこれ、ほんっとイライラして仕事にならないから今日はもう帰る」とか言ってもすんなり認められるのは他のチームに比べたら相当恵まれているし、色々改善しようという意識は見えるので、ちゃんと調べて入って良かったなと思う。
How I got into Google (Developer Relations)
Context: Site lead at Google Tokyo office sent a call out for posts about "how I got into Google". A bunch of people responded in Tweet or blog form (see also: https://togetter.com/li/1331865). This is a translation of my response :)
Prerequisite
Team
I applied to Google in the US, not Google Japan. The position I applied for is Developer Advocate ladder, not the Software Engineer ladder. Developer Advocates is placed under engineering so I did do coding interview but the criteria they look for are different from SWE ladder (so I was told.)
My English Proficiency
I'm born and raised Japanese, but I graduated from university in the US. When I was new grad, I think I had a TOEIC score of 900+ (don't really remember...). At the time of the interview, I had 4 years of experience working in the United States.
My Experience at the time of the interview
I've never had a formal Computer Science education. I worked at a video startup as "the person who does everything else but code" job (it was sort of like Product Manager), so I did develop a muscle to define the technical specification and write documents even when unfamiliar to me technology was used in a project. Coding wise, I self-taught JavaScript and Python. At my first job in the US, I did an internal transfer to an engineer-like position, the job after that I was internal tools engineer, and at the 3rd job I became a software engineer in a product engineering team.
For DevRel related activities, at the time of the interview I was 2 years into being JS meetup organizer, gave 20 or so conference talks (all on my hobby project), had one project of mine made it to the top page of the Hacker News and wrote mildly shared blog posts on compiler and service worker.
The way it started
I was giving talks at events, so I've met some of my current teammates at conferences before. One day, I received Twitter DM from a stranger who claims to be working for Google asking to grab coffee with me. I was convinced this is some kind of recruiter spam but checked with friends who work at Google. Turns out that person was the director of the team I now work for. We had a 30 min coffee chat. We talked about building a text editor (something both of us did at a job). The meeting ended with "sounds like you are having fun at current job, let's keep in touch".
2 months later, I received another message saying there is a vacancy at the team and if I was interested in interviewing. I got connected to a Google recruiter at the end of November. I had a big work deadline at the end of December so I told them I could not do interview until January.
Preparation for the interview
At this point, the recruiter sent me a list of interview prep resources (books and coding quizzes). I borrowed books from my friend who interviewed at Google before (Cracking the coding interview and an algorithm book). I did intend to study during the Christmas holiday, but I just did not enjoy reading those books. I pretty much decided "if doing this is required for the job, I don't want that job" so I spent the holiday writing my knitting web app instead.
(By the way, Google does have interview training for those who do not come from Computer Science background. If you are worried about coding interview, you should ask about it to your recruiter. I've never done those, but I think my friend was offered a mock interview.)
The interview
The day of the interview, I was called to the Google NY office just before lunch, did presentation round (20min prezo, 10 min Q&A) in front of 4 people who I will later do coding interview with. After lunch, I did 4 interview sessions.
For the presentation round, I did excerpts of my previous talk on painting with canvas and added what I did to make my knitting app that I build over the holiday performant.
The actual coding interview was algorithm related questions (things you'd imagine for coding interview). I thought I should just write it down even if I know it is bad code, so I did thinking out loud and started by writing down the question in code form. For example "Oh, so you are asking to make these function (just name, no logic inside yet), and when it's called like this you want X right?". I think I wrote logic as comments first then filled in code. I was able to answer questions but I do remember running out of time by just writing bad (not performant) code. I chatted things like "ughhhhh, I did exactly this for work once and I do know there is a more elegant solution to this but, can't remember now".
I've never "studied" CS, but at the time I was writing text parser for work, doing matrix operation for knitting, and had basic knowledge of compiler (like AST) in order to make Babel plugin; so I guess I was lucky. I wrote all of my answers in JavaScript.
Because the team I interviewed was DevRel, all of my interviewers were people I've seen on conference or video. I feel like I approached the interview more relaxed. Even though they didn't know me, I did know them. I was worried about them thinking about me as "the person who wrote horrible code at the interview" next time I see them at a conference. Also, I was on the 2nd day of my period so I worried about when I can go to the bathroom than the code I had to write. My interview was done over video call connecting NY, London, and Mountain View, so people turned up on a screen one by one and there was no "waiting for next person to come to the room" break.
About 2 weeks later, my recruiter told me to do 2 more interviews, so this time I did interviews from home. One coding interview and one DevRel related interview.
The offer
I knew the code I wrote was not great, so didn't expect much but did get offer a week later. My offer was little over 100k USD salary + bonus + RSU. Total comp wise normal amount for NY market. If I just look at the salary, my monthly paycheck would go down, so I negotiated and they gave me a sign-on bonus. I think if you just look at the salary amount, Google's comp is normal or lower for the US market. My recruiter explained that Google pays for performance and with bonus and RSU, it was a competitive offer. Though, at the time I cared more about how much I get in each paycheck.
The level I was offered was one below I thought I'd fit, so before signing the offer, I had a call with the hiring manager about promotion process and also chatted with other Googlers about their opinions and experiences.
The research before signing the offer
I actually spent more time researching about the team than preparing for the interview. I wanted to talk to people who I've never met before so my recruiter connected me to Eiji in Tokyo office. I was friends with Jake so we chat over video call and I asked him questions like "what do you hate the most about the job".
Since I was quite involved in the developer community, hearing both good and bad (you know, #metoo kinda thing) rumors of companies and people were an everyday thing. I asked around other engineers mostly women about "what do you really think about that team?". Since DevRel does outside facing works, my would-be teammates were known in the community and I think I had an easier time finding opinions.
At the time, it was not really known to outside that the team had women (there were 2 women on the team), and all except 2 were white. I also knew that the well-known developers in the community such as Jake, Addy, and Paul were on the team. It was quite obvious to me that if a woman of color joins that team, someone is going to say "diversity hire" or "lowering the bar" sooner than later, so I did check carefully if managers were the kind of people who would support me when such annoying claim was made. (For real, some people who told me they applied to the same position became aggressive towards me on Twitter for reasons I don't really understand.)
The feedback I got can be summarized to "The team has good people but sometimes clueless on issues". I thought if it's just ignorance, I can point it out, and I was fairly confident I can somewhat safely call out on things.
The day I signed the offer, I wrote a blog post about "doing the interview while on my period was hard" and many of the teammate Fav, RT, and left comments. So I guess I set the tone I was that kind of human even before joining the team.
In honesty, the first 2 companies I worked for in the US didn't end well for me, and I finally found the team that I felt psychologically safe in the 3rd company. My priority was the team that I will be working with over stability of the big corporation or the potential salary growth. In the end, I called up my then boss from the 3rd company "I got an offer from Google what do I dooooooooooooo" and we chat, and concluded, "maybe give it a go". Also, this was the time Trump just got inaugurated, Muslim ban was put in place, and ICE was busting people's apartments. As an immigrant, I would be lying if I didn't feel a tiny bit comforted knowing I work for a big corporation.
Google as a whole has lots of issues, the team isn't the most perfect, but I do have colleagues to vent and managers who offer support when microaggression happens. (Not being told "just deal it yourself" is actually great.) I feel supported enough to say "This is ridiculous. I can't be productive so I'm going home" when things are really bad. The team does try to improve things when they can, and I know I am very fortunate to be in such an environment. Overall, I do feel it was a good decision to join the team.