米国大学院留学生による大企業ビッグデータ部署でのインターンの感想

6月12日(月)から8月18日(金)までの10週間、米国のとある大企業(まあまあ有名)のビッグデータ部署でインターン生として働いた。週40時間勤務のフルタイム雇用である(給料も出る)。僕は以前に日本のとある大企業(とても有名)のデータ系部門で2週間の有給インターンをしたことがあるため、それとの比較をしながら、共有しても問題ないことについて記録しておく。
期間
まず、驚くのは期間の長さだろう。大学にもよるが、日本の夏休みは8・9月のおよそ8週間であることが多い。米国では夏休みの期間がおよそ5月21日 - 9月1日の約13週間となっているため、日本よりも長く大規模なプログラムを施行することができる。10週間のインターンはそれほど珍しくなく、長いものだと12週間のインターンであったりもする(ちなみに僕のプログラムは本来11週間だったが人事のミスで到着後10週間になった。アメリカではこういう理不尽なことがよく起こる)。今回僕が働いた部署では、この夏に20名強のインターンを採用した。この数はさほど大きな数字ではなく、日本でインターンしたときは総勢30名ほどであった気がする。
勤務時間
およそ9時5時である。朝早く8時前に来れば静かなオフィスで作業に集中できるし早く帰っても問題ない。米国の大半の企業では、5時以降に残っている社員は恐らく1割を切るという印象を持っているが、今回の会社に関しては大体間違っていなかった。日本のインターンでは終わらないので夜8時くらいまで作業していた気がする(2週間と短いせいもある)。勤務時間の多寡は当然ながら会社の置かれている状況によって良し悪しがあるが、5時で終わることによるワークライフバランス健全化への効力は凄まじい。未だにリスニングに難を感じていたので、帰った後にネットフリックスで1話見ていた。個人的に興味を持った分野に割ける時間があるのはありがたい(といっても、学生が出せる進捗に比べれば数分の1程度に終わってしまうが)。プレゼン直前の週末は練習が足りていなかったので一日1−2時間ほど練習していたり、インターン最終ごろに成果を早期に確定させる(引き継ぎの関係上)ため2−3時間作業したことはあったが、2度きりだ。
配属
原則1チームにつき、1人のインターン生が配属される(僕の場合は2次試験の面接官がメンターとなった)。日本でのインターンは、複数名の学生がチームを組んで、社員の指導のもとで指定された課題について取り組む、というものだった。一方で今回の米国でのインターンはそもそも僕しかチームにインターン生がいないため、プロジェクトは自分個人に与えられるか、社員と取り組むことになる。どのインターン生と話してもそれぞれ異なる課題を与えられているため、他のプロジェクトの話を聞くのは非常に面白かった(考えてみてほしい。20数名全員が、ビッグデータにまつわる異なるプロジェクトに取り組んでいるのだ)。いくつかは、ええっそんなことをやっているのかと問題設定自体に驚くこともあった(ただ、日本のインターンも指定とは言えいくつか面白い問題設定を聞いた覚えがあるし、その点では変わらないかもしれない)。
内容
学生にやらせるプロジェクトであるため、それほど難しいものは与えられない。社員からしたら(指導の手間は増えるが)一つ仕事が片付いてハッピー、学生としては実際の仕事を体験できてハッピーというわけであろう。10週間という長さであるため、およそ2−5週間ごとに新しいプロジェクトに取り組むことが多い(僕は10週間で2つのプロジェクトに取り組んだ)。これは、2週間で集中的にただひとつの課題に取り組む場合と異なり、仕事上の異なる面について語ってくれる点で有意義だった。たとえば僕の1つ目のプロジェクトは、まさに純粋な「ビッグ」データの問題、すなわちデータ量が増えた場合でも問題なく実行できるように高速化・並列化するもので、僕が普段大学で学んでいる機械学習統計学のような話は一切関わらなかった。一方で2つ目のプロジェクトは、1つ目のプロジェクトに取り組んでいる間に見つかった課題を、機械学習で改善できないか、というものだった。つまり、最初の5週間と後半5週間で、まったく異なるスキルセットが価値を持つという結果になった。ビッグデータの取り扱いはまだまだ新しい作業分野であり、作業内容は非常に流動的だった。時にはOS、時にはソフトウェア開発、時には数学と、幅広い分野の基礎知識が役に立つ。そのため、一人で解決できないプロジェクトに発展することがままあり、エンジニア間交流は非常に盛んであるように思えた。
非エンジニア
もう一つ面白かったのは、非エンジニアの社員がそのようなビッグデータの世界にどう貢献しているのか、という点だった。彼ら彼女らは当然ながら工学・数学の訓練を受けていないので、Howの部分では議論に参加できない。だからといって部署内で価値を出していないかというと、全くそうではない。彼らは基本的に、プロジェクトマネジメントと、ブレインストーミングの際に圧倒的な価値を発揮する。Howの部分の認知負担がないぶん、プロジェクト全体の遅れに気付くのが早く(エンジニアがボソッと呟いた情報から危機を察知してその場で電話して事態を収集するようなこともあった)、またエンジニア泣かせのユーザーフレンドリーな案を出すことができる(僕の2つ目のプロジェクトは、彼らの大プッシュから始まった)。彼らは、自分たちがビッグデータを理解できなくても、決して臆さない。彼らは自分たちが行っているのはビジネスであり、その部分の基本を抑えることで、ブラックボックスと健康的な関係を築けることをよく理解しているように思えた。日本では、そもそも非エンジニアとインターン接触する機会が極めて少なかったので比較ができない(それ自体が問題だと、米国でインターンした後に認知するようになった)。
マルチタスク

さて、ビッグデータを扱う上でマルチタスクは避けられない。というのも、データ量が大きいためデータベースからデータを取得するまでに数秒から1−2時間かかる。つまり、
(1)データを取得する操作を実行する
(2)データが出力されるまで他のことをする
(3)出力されたデータを利用して作業を進める、
というプロセスが、何千通りにも亜種を持って毎日現れる。マルチタスクは生産性を下げるので止めましょう、という話ではない。スクリプト化したり、アラートを付けたり、並列実行したり、キャッシュを別に保存したりしたが、ここには、恐らくもっと創意工夫によって生産性改善の余地があったように思う。TezやPrestoは偉大だ。

プレゼン
最終プレゼンテーションは、VPレベルの社員20名ほど+遠隔地で同時中継で行なった。制限時間は7分。ほぼ全てのHow(手法名や確認手順など)を切り捨て、WhatとWhyだけで完全にテクニカルな内容を非エンジニアに伝えるという、全く今まで経験したことのないタイプの難しさを経験した。日本では、評価は手法の正しさ、技術力、創造力を基準に行われたように思う。
今思うと、なぜ日本のときはインターンで争っていたのだろう?という疑問が思い浮かぶ。フルタイムで全員を採用するかを決める、という観点に立てば、学生の技術力が小集団の中で1位であるかどうかをエンジニアに判断させるよりも、学生が仕事内容と意義を他人に短時間で理解可能な形で説明できるかをマネージャークラスに見学させ、彼らが必要に応じてフルタイムオファーを別の部署でも与えられるようにしたほうが、遥かにマッチングシステムとして効率性が高いように感じる(もちろん、働いたチーム内からオファーを出すのもアリで)。そもそも学部3年生と博士課程生をそれらの尺度で比べるのは意味がない。
そう思ったのは、そのたった7分のプレゼンでも、全く会ったことのない別の州のマネージャーからお前のやっているプロジェクトに似たものを始めようと思ってる、いまこういう求職かけてるから興味あればレジュメを送ってくれ、と連絡が来たのだ。残念ながら希望する条件ではなかったため丁重に断ったが、しかし社内における採用効率化としては正しい方向性であるように思う。
メールを使うのに、TCPパケットの詳細な仕様を知っている必要はない、という話をいつか聞いたことがある。それと同じでビッグデータを使うのに、非エンジニアが詳細な手順を知っている必要はなく、現状の道具でビジネス上の機能として何を果たせるのか、に関する適切な理解が肝なのだろう。
食事
日本のときは、インターン生を連れて行くと交際費ということで食費が支給されていた。今回働いた会社では、ランチは社員の自費ということになっていた。その代わり、フリーで飲める数十種類の飲料と軽食が常に職場に用意されていた。これは好みによるだろう。
飲料は、自由の国という雰囲気が現れており、完全にジャンク飲料な清涼飲料水から、低脂肪乳やらプロテイン系飲料まで様々だった。
日本では飲み会に行って、普段見られない社員同士の交流を楽しむことが多かったが、みな5時に帰るので残念ながら米国にそれはない。その代わりランチでの交流が多い。一回ランチに行くたびに社員たちの仕事に関する理解が深まったので、ランチもある程度生産性向上に機能している(ただし、遠いところまで食べに行って時間を浪費するケースもままあるが)。
日本の大学の研究室に居たときも経験はしたが、米国でチームで働くようになって特にチームメンバーからの意見でプロジェクトの質が大きく向上することが増えた。とくに、問題を簡潔に共有することができると最高に費用対効果が高いのだと分かった。同じ問題を紹介しても、過去に類似の問題を解いたことがあるかどうか、あるいは別分野の手法を知っているかで、全く異なる解法が提案される。それが試してみると案外うまく機能するのだ。これは個人的には非常に楽しくて、自分でも思い付けなくても単に1時間程度割けば非連続に成果が良くなるというのは、チーム開発の醍醐味であるように思えた。
インターンが見つからなかった場合
なお、残念ながらインターンのオファーを貰うことができなかった学生は、卒業に必須ではない「夏学期」と呼ばれる期間に他学期と同じように講義を履修することを選ぶと聞く。実際、今年4−5月ごろのキャンパスではそのような計画について話し合っている学部生らしき集団を見かけることがあった。経験が得られなかったので、せめて実力を磨く、というわけであろう。
総括
以前は、仕事においてコミュニケーションが大切だという文句を、どちらかと言えば社内政治が大切であるという意味で取っていた。だが大企業で働いてみて、自分を含む個々の歯車がいかに他の構成部品の現状を知らないまま動き出すのかを目の当たりにし、ごくごく単純な交流の効果を実感した。生産性を挙げる上で鍵となる情報を、すぐ側の社員が実は持っていたということが何度もあり、プロファイルから恐らく最適である相談相手を選ぶ、という癖が付いた。人間を知識単位でバラバラに分解して最適化できないのは生産性において不幸である。だがそれをミーティングとカジュアルな会話で補うことは、どこか趣のある活動だった。総じて、仕事と生産性について理解の深まった10週間だった。なおインターン終了後は、有り難いことにフルタイムでの内定(実際には面接が1回必要だそうだが)をもらった。