りらのひとりごと

機械学習とかCSとかする女子大生のブログ

Google STEP教育プログラムでエンジニアインターンした話

こんにちは.りらです.

この記事は情報系を勉強する女子大生 Advent Calendar 2017 - Qiitaの19日目として書かれています.

今回はGoogleのSTEPインターンのお話をしようと思います.私は去年と今年の二回参加しており,去年はChrome Browserチーム,今年はGoogle Translateチームに配属されていました.

STEPインターンに参加するまでのお話は後輩のこの記事で詳しく説明してくれているので,ぜひ参考にしてください.

STEP教育プログラムってなに?

Googleによる,女性や障がいを持つ方などエンジニアリングの世界で人数が少ない人たちのための教育プログラムです.エンジニアリングの知識がそこまでなくても,プログラミングを少しかじったくらいの子たちが成長できるように手伝うことで,STEP出身者がいろんなところで活躍できたらいいなという趣旨のものです.プログラムの概要をまとめた動画があるので,雰囲気はこれで分かると思います.


Google STEP 教育プログラム

STEPプログラムは二段階に分かれています.

  1. Developmentコース
  2. 長期有給インターン

Developmentコースでは,5~7月の毎週金曜日5~8時にGoogleオフィスに集まってエンジニアさんたちによる授業を受けます.毎週授業のテーマに沿った宿題が出て,世界の第一線で働いているエンジニアさんたちがコードの添削をしてくれます.授業のあとは夕食が用意されていて,みんなで仲良く食べることができます.

後半の長期有給インターンには,Developmentコースの参加者の中から面接を突破した人が進むことができます.期間はだいたい2ヶ月くらいで,大学のカリキュラムを考えると8~9月に参加する人が多いです.基本的に自分の都合に合わせて日程は決められます.

ちなみに最近のSTEP教育プログラムには,最近オンラインコースというのが発足して,YouTube情報科学に関する動画を公開しています.私もちょこっと出ています(宣伝).


10分でわかる情報科学:グーグル翻訳


10分でわかる情報科学:情報科学はなぜ重要なのか


10分でわかる情報科学:検索エンジンの仕組み


10分でわかる情報科学:ソフトウェア エンジニアとQ&A

STEPに参加したきっかけ

去年の春休みのこと.私は大学二年生から三年生になるところでした.何となくインターンとかしてみたいなー何かないかなーと思い,探してみたことがありました.元来ミーハー気質な私は,Googleってなんかかっこいいじゃん!オフィスとか潜入してみたい!と思い,「Google intern」でググってみました.

すぐ見つかったソフトウェアエンジニアインターンはすでにスキルを持った人たち向けで難しそうでしたが,そのあとSTEP教育コースというのを見つけました.「主に学部生向けの情報科学教育コース」.これだ!これなら私でもいけるかもしれない!とダメ元で応募を決意したのでした.

それまでに私が学んでいたプログラミングは,大学の授業で習ったC言語の基本だけでした.

インターンに進むまで

Developmentコースの途中くらいから,長期有給インターンの話が出るようになります.具体的には,インターン希望者は全員コーディング面接を受けます.インターンに進む人を選ぶ基準は,この面接とDevelopmentコースの成績や頑張りを総合しているっぽい?です.詳しくは知りません.

Developmentコースには優秀でコードがバリバリ書ける人たちがたくさんいたので,私なんて絶対無理だーと思っていたのですが,運良くインターンに進むことができました.自分のスキルが周りより優れていたとはあまり思えないので,毎週の宿題とかについて質問したり,自分なりにかなり頑張っていたからかな?と思います.

したがってSTEP出身のインターンは通常のソフトウェアエンジニアインターンに比べて敷居の低いインターンという位置付けになるかと思います.

インターン一年目〜Chrome Browser〜 

スペックの低いMacを使っていた私はChromeが重すぎて当時Firefoxユーザーでしたが,Chrome Browserチームに配属されました.去年の話です.

インターン生は全員Hostと呼ばれるメンターさんのもとで机を並べて働くことになります.インターン始めた頃の私は,大規模なコードのプログラミングなんて全くやったことがなく,

  • C++なんて書いたことありましぇーん
  • エディタどれにしよう.Emacsがおすすめですか.へー

という状態でかなりちんぷんかんぷんでした.しかし幸いなことにメンターさんをはじめとするチームのメンバーの方々がものすごく面倒見が良く,多大なる時間を割いて基本的なこと(ターミナルのコマンドやEmacsキーバインドとか笑)から日々丁寧に教えてくれました.(今から思うと頭が上がらなすぎる....!)

困った時にチャットを送るとすぐに返事がきて教えてくれたり,質問してもいないのに「困ったことない?」って聞いてくれたり.なかなか質問する勇気が出ない時に「インターンは質問するのが仕事だから」と言ってもらえたのはかなり心の支えになりました.

STEPインターンはメンターさんと毎週30分の面談をすることになっていて,プロジェクトの話から,全般的に困っていることやこうしてほしいこと,さらにはキャリアやこれからのことについてなんでも相談に乗ってくれます.さらに自分が最近思っていることを話したり,自分のパフォーマンスについてフィードバックをもらったりしました.メンターさんが常にサポート態勢でいてくれるのは本当に助かりました.

プロジェクト

Chromeインターンのいいところは,オープンソースなのでプロジェクトのお話ができることです!ほかのチームだと通常社外秘なのでお話しできません.

私のプロジェクトは,Java Scriptで書かれているV8と,C++で書かれているblinkをつなぐC++の「bindings」というのがあって,Callback関数のbindingsはそれまで手で書かれていましたが,それを自動生成しよう!というものでした.具体的には,WebIDLで書かれたコードから,PythonのCode Generatorを用いてC++のbindingsを生成します(図参照).今まで3500行くらいのC++で書いていたものが,35行のWebIDLで生成できてしまうのです!すごーい!

これによって人間が書かなければいけないコードの量が大幅に減りますし,ミスも減ってデバッグもしやすくなるので,大変インパクトのあるプロジェクトでした.

f:id:lila-lila:20171217183008p:plain

          ↓↓↓

f:id:lila-lila:20171217183022p:plain

Chromeの仕組みは(歴史的な経緯もあり)かなり複雑で,理解するのに時間を要しましたが,Chromeの中のCode Generatorを触るというレアな経験かつインパクトのあるプロジェクトができて,やりがいがありましたし,面白かったです.

インターンの生活

基本的にフルタイム勤務なので,朝から夕方まで普通の社員さんたちと同じように働くことになります.有名なGoogleの楽しい職場環境について.

社食

有名ですね.とても美味しいです.Googleオフィスの中でも東京オフィスは特に美味しいらしく,マウンテンビューの本社からきた人もこっちは素晴らしいと言っていました.社食は三つあって,

  1. スタンダードな社食.たまにお寿司が出る.
  2. インターナショナルな社食.毎日違う国の料理が出る.
  3. 本格的な日本食の社食.お刺身とか出る.

があります.主に三つ目の社食に通っていましたが,その日のメニューを見て今日はここに行こう!という楽しみもあります.「入社3ヶ月でめっちゃ体重増える」というのがGoogleあるあるらしいです笑

さらにスタバみたいなコーヒースタンドもあって,バリスタさんが美味しい飲み物を作ってくれます.私はいつもソイラテを注文していましたが,ある社員さんは「トニックレモネード」がおすすめと言っていました.普通のレモネードに入っている炭酸水をトニックウォーターに変えたものです(たぶん).おいしかったので,オフィスに行く機会がある方はぜひお試しあれ.

小腹がすいた時は

職場フロアの数カ所にスナックやいろんな飲み物が置いてあります.私はついつい食べすぎてしまう人間なので,いつも黒烏龍茶を飲んでかすかな抵抗をしていました.自分でカフェラテを作れるバリスタマシーン(かなり高いらしい)もありました.

また,お金を入れずに飲み物が出てくる自動販売機があって,珍しいのでテンションが上がったりしました.

ゲームルーム

これも有名なのではないでしょうか.スプラトゥーンや無数のボードゲームビートマニアなどがあります.煮詰まった時には息抜きに寄ってリフレッシュできます.また,卓球台やビリヤード台もあって頻繁に熱い戦いが繰り広げられています.

疲れた時は

マッサージが受けられます.指圧やオイルマッサージなど複数の選択肢があります.これは基本的に有料ですが,度々マッサージポイントがもらえるので,それを使えば無料です.

また,オフィスフロアにはお昼寝ルームやマッサージチェアもあるので,ちょっと疲れた時には寄ってリフレッシュできます.

運動したい時は

社内にジムはないですが,外にあるジムと会社が契約していて,社員やインターンは無料でジムに通うことができます.普通にジムに通うとものすごく高いので,ありがたいですね.私は食べすぎた分を消化するべくたまに通ったりしていました.

また,社内のクラブも豊富です.例えば週一でヨガの先生を呼んでヨガ教室を開いたりしていて,時間がある時はたまに参加していました. 

 

こうして見てくると,恐るべきGoogleの職場環境.快適に過ごしてもらうための努力を惜しまないですね.インターン生も同じように享受できるのでかなり楽しめました.

社内イベント

インターン期間中にいろんなイベントに参加させてもらいました.

TGIF

Google社内では,毎週金曜日の午後5時からはTGIF(Thanks, God. It's Friday!)というイベントがあります.要するにアルコールありの夕飯という感じなのですが,同じ時間にオフィスにいる多くの人が一斉に集まっており,違うフロアや職種の人と友達になったり,情報交換をする社交の場になっています.照明がちょっと暗くなっていたり,DJ好きの社員さんたちがダンスミュージックを流していたりして,なんとなく外資企業っぽい感じを味わうことができます(雑)

社内プレゼン大会

インターンがあと二週間くらいという時に,この年のインターンは全員社内プレゼン大会にて自分のプロジェクトを発表しました.Google Japanの大部分のエンジニアの前で英語プレゼン...チームの人の力も借りて入念に準備しましたし,たったの5分間でしたが,かなり緊張しました.(チームの人の悪ノリで頭のおかしい自己紹介をしたところ,大ウケだった)(そのおかげ?せい?で後々「あのプレゼンの子ね!」とたくさんの人に覚えていただいていた)

 

そのほかにもBBQ大会があったり,インターンでディズニーに行ったり,歓迎会&送別会でスイーツを食べに行ったり,とにかく盛りだくさんで楽しいイベントが盛りだくさんでした.

なんだかこうして書いているとずっと遊んでいたように見えますが,ちゃんと仕事はしてましたよ!笑

インターン二年目〜Google Translate〜 

去年のインターンが終わる頃に今後どうするかみたいな質問が来て,来年もインターンとして戻ってきたいという希望をしたら,今年もインターンに参加できることになりました.もちろんインターンとして戻って来るための審査はあったらしいです.今年はいまアツいGoogle Translateチームでした.

自分の研究で機械学習に触れていることもあって,Google Translateのプロジェクトは興味深いことが多く,このチームでインターンできたのはとってもラッキーでした.内容は言えませんが,メンターさんがくれたプロジェクトは面白くかつチャレンジングなものでした.

去年と大きく違ったこと

主に

  • プロジェクトのレベルとメンターへの依存度
  • 英語が必要な環境

だったように思います.去年は全ての仕事に関して手取り足取りだったのですが,今年はなるべく自分で解決するように努力して,だめだわかんなーいとなったらメンターさんに質問する,という形にしていました.また,去年のメンターさんは日本人の方だったのですが,今年のメンターさんはアメリカ人の方でした.インターン期間中メンターさんと話す機会がもっとも多いので,かなり英語力が上がった気がします.インターンが終わった時のフィードバックで,コミュニケーションは問題なかったと言ってもらえたのはとっても嬉しかったです.

去年にはなかった出来事としては,メンターさんが途中一週間アメリカに出張に行っていたことですね.チームの性質にもよりますが,私のプロジェクト内容をよく把握しているのが主にメンターさんだったので,質問をした時の返信が朝と夜しかこなくて日中悶々とする日々が続いたのが結構しんどかったです.インターンは社員さんにパフォーマンスを評価されて次に進めるか(次のインターンや就職など)が決まるという性質上,プロジェクトを終わらせなければというプレッシャーも大きかったと思います.その後メンターさんが帰って来た時,「全然プロジェクト進まないんだけど!!!!」と思っていることを正直にぶつけたら,「そんなことないよ〜大丈夫だよ〜」と励ましてくれたので無事持ち直せました.この時ストレスが溜まって機嫌良く過ごせなかったのは私の余裕のなさゆえなので,この辺は反省点かなと思います.

さらに去年は夏休みだったので学校のことは気にせずに過ごせましたが,今年は卒論生なので授業こそないものの,研究室にも同時に顔出す必要があったのも苦労しました.物理的に研究室にいなければならない時間とインターンの業務時間が被っていたので,先生と相談したり,メンターさんと相談したりしてうまい方法を探すのに労力を要しました.私は不器用なのでうまくどっちもやりこなすことができず,最終的にインターンを優先することになりましたが,やはり一つに集中できる環境でないと大変だなと痛感しました.

こう見るとなんだかつらいことばっかりのように見えますが,プロジェクトはインターン最終日のTGIFの10分前に完全に動いたことを確認し,思わず泣き崩れるという感動的な最後を迎えたのでした.めちゃめちゃ嬉しかった.

今年参加した社内イベント

今年もいろいろ遊んでもらいました.

チームオフサイト

Translateチームを含むエンジニアチームでオフサイトに行きました.いわゆる社員旅行みたいなものです.ここでいろんな人に社員さんを紹介してもらったりして,たくさんの方に仲良くしてもらいました.上下関係なくみんなでフランクに話したり,面白い話を聞いたりして,夜まで楽しく過ごしました.合宿みたい.

社内卓球大会

Google Japan全体の卓球大会があり,ど素人ですがノリで参加しました.案の定グループリーグ下位で敗退しました.みんなガチ勢でした.でも楽しかったですし参加賞で特製卓球ボールもらえました.

f:id:lila-lila:20171217234838j:plain

ハロウィン

インターン最終日が社内ハロウィンの日でした.私は仕事が切羽詰まっていたので何も仮装しませんでしたが,す,す,すごかったです.みんな個性豊かでした笑

2回のインターンを経て思ったこと

Googleの中にいて見聞きし体験したものの中から,印象的だったポイントをお話しします.

まず一つ目は,圧倒的にフレキシブルな職場環境.朝8時に来て17時に帰る人もいれば,15時に来て終電で帰る人もいて,そのあまりの自由さにかなり驚きました.さらに産休や育休をとる文化が広まっていて,男性も育休を取るのが普通なのがすごくいいなと思いました.また,個人的な事情により仕事を減らして働くことが認められており,子どもがまだ小さい忙しいママさんなどは,仕事を6割や8割にして家庭との両立に無理のないようにしていたりしました.もちろんリモートワークをしている人もたくさんいました.ここまで自由なのはエンジニアだからかもしれません.

二つ目は,社内におけるエンジニアの立ち位置について.チームの人に紹介していただいたりして,エンジニア以外の社員さんたちとお話しする機会が何度かありました.とても印象的だったのは,彼らが口をそろえて「エンジニアの人たちには,純粋にプロダクトのことだけ考えていてほしい.お金のことはまかせて!」と言っており,一方エンジニアの人たちは,「セールスの人とかが頑張ってくれているから(お金にならないかもしれないけど)こんな自由に仕事をさせてもらえている」と言っていたことです.これはお互いの揺るぎない信頼感に基づく発言だなと思いましたし,エンジニアの職場としてとても良い場所だなと感じました.さらに,Googleが「お金にならないかもしれないけど,社会的にするべきこと・正しいこと」に挑戦し続けることができる大きな要因なのかもしれないと思いました.

 

ふう,大変長くなりました. 記事を分けるべきだったかもしれません.

以上,ミーハーをきっかけに気づいたらインターンの機会をいただいていたありがたいお話でした.言いたいことは,「ダメ元でもとりあえず出してみるって大事」です.何らかの参考になりますように.