google developer day 2010 japan: google エンジニアの日常 (山内 知昭)

31

Upload: google-developer-relations-team

Post on 05-Dec-2014

3.758 views

Category:

Technology


5 download

DESCRIPTION

Google のソフトウェアエンジニアがどのような環境でサービスの開発を行っているかを紹介します。

TRANSCRIPT

Page 1: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)
Page 2: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

Revised v4Presenter

Life of a Google engineerグーグルエンジニアの日常

Tomoaki Yamauchi

Sep 28, 2010

Page 3: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

Revised v4Presenter

自己紹介と今日の内容

Page 4: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

今日の内容

どんな仕事をしているの?どうやって仕事をしているの?好きな仕事ができるの?仕事以外の職場環境は?ワークライフバランスってどうなの?どうやったらグーグルエンジニアになれるの?ケーススタディ

Page 5: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

Revised v4Presenter

仕事内容

Page 6: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

どんな仕事をしているの?

SWE (Software Engineer)Googleの製品・サービスを作る人

PM (Product Manager)ユーザーとSWEの架け橋になる人

SRE (Site Reliability Engineer)Googleのサービスを動かし続ける人

SWE in Test / Test EngineerGoogleの製品・サービスの信頼性を高める人

OpsGoogleの社内システムを動かす人

Page 7: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

SWEはどんな仕事をしているの?

idea design implement launch

最初から最後まで

Page 8: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

どんな製品・サービスがあるの?

Page 9: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

Revised v4Presenter

仕事の環境

Page 10: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

どんなマシンを使っているの?

専有ラップトップデスクトップ

データセンター上のVirtual Workstationを代わりに持つこともできる

大きなディスプレイ - 30 inch

共有世界中のデータセンター

Page 11: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

コードやデータはどう管理しているの?

ソースコード基本的に全世界・全プロジェクト共通のリポジトリオープンソース・プロジェクトなどの特殊なものは別VCSのコマンドを直接実行することは少ない

さまざまなラッパーや補助システムがあるコードレビューが必須

データホームを含むさまざまなディレクトリがNFS

どの端末でも同じホームで作業できるどの端末でも同じコマンドが実行できる

ジョブの入出力などの大容量データはGFS

Page 12: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

ビルド・ジョブ実行

ビルド内製のビルドツール自動的に分散ビルド・分散テスト

ジョブ実行世界中のデータセンターの計算クラスタが自由に使える

クォータの制限はあるが、かなり大きい同じバイナリをローカルでも実行可能

テスト実行で便利他のプロジェクトの生成ファイルにもアクセスできる

中間処理の終わったWebページなど

Page 13: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

Revised v4Presenter

仕事の進め方

Page 14: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

どんな体制で開発しているの?

世界中から開発に参加

Page 15: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

分散しすぎてて効率悪いんじゃ?

プロダクト単位のコアチームの構成ある程度地理的な配置を考慮VCでつないでチームミーティング時差12時間もあるとさすがにしんどい

個々のプロジェクト少人数(1~数人)face to faceコミュニケーションは重要必要に応じて出張して開発

その他メールが中心。チャットを使う人も。グループウェア(カレンダーやバグトラッカーなど)

Page 16: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

英語ですか?

英語です。

日本人同士なら日本語で話しますが、読み書きはそれでも英語です。

ただし、ブロークンな英語でもわりと許してくれます。(SWEの場合。他の職種はわかりません)でも、話すのはともかく、聞けないのはしんどいかも。

Page 17: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

ローンチプロセスとかは?

製品・サービスによって詳細は違いますが・・・クォリティは大丈夫?インパクトは十分?セキュリティは?リソースは足りてる?メンテナンスできるの?法律に違反してないよね?関連チームへの確認はOK?などなど

エンジニアが主体的に関わっていく範囲は広いエンジニアへからインプットエンジニアへのフィードバック

Page 18: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

Revised v4Presenter

個人と組織

Page 19: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

好きな仕事ができるの?

半分Yesで半分No

Noの理由コアメンバーになるにはコアチームがいないと難しい他のエンジニアからのサポートがないとしんどい

Yesの理由20% Projectなら比較的自由にプロジェクトを選べるFull-time projectでも課題発見・解決は裁量の範囲親切な人や使えるリソースが多い

Page 20: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

仕事以外の職場環境は?

オフィスに来るのが楽しくなる仕掛け朝・昼・晩の食事。お菓子や飲み物。(無料)オフィスデコレーション、遊具、マッサージ 各種クラブ

チームの絆を深める仕掛け仕事中のおしゃべりはOK

休憩時間とかは決まっていない各種イベント - オンサイト・オフサイト

ランチタイムのミニトークハッカソンFunイベント

Page 21: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

ワークライフバランスはどう?

仕事が好きそうな人が多いけど、みんな大丈夫かな・・・?

仕事時間の裁量は自由度が高い有給のほかに疾病休暇(有給)もあり

病気の時のために有給を残しておくとか考えない1週間位まとめて休んで家族旅行とか普通子供の病気とかで当日の朝連絡して休むのも普通子供が生まれたら、

父親は育休(4週間は有給)をとるのが普通母親の産休(16週間は有給)をとることができる

14週間(法定) + 2週間少なくともとりにくい雰囲気はないはず

Page 22: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

Revised v4Presenter

採用活動

Page 23: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

どうやったらグーグルエンジニアになれるの?

エンジニアの採用は、エンジニアの大事な仕事

まずはレジュメエンジニアが見て「これは!」と思えば、面接へ

電話面接。オンサイト面接。人事や管理職ではなく、現場のエンジニアが面接技術力を問う質問が中心

ホワイトボードにコードを書くことも面接官は、面接の後、合否の判断とその客観的な理由を書いたレポートを提出

合否の決定何人も面接したレポートを元に、会議で決定

Page 24: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

だから、具体的にどうすればいいの?

英語全然できないと入った後しんどい英語のAPIドキュメントを読んで理解できて、海外に個人旅行ができる程度の英語力があれば、とりあえずは大丈夫だと思う

技術さまざまな分野を知っているほうがいい

CPUの仕組みからソフトウェアデザインまで表層的でない理解が求められる。「なぜそうなのか?」人に指示する力ではなく、自分で作れる力を重視きれいなコードをすばやく書けると好印象

Page 25: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

Revised v4Presenter

ケーススタディ:私の場合

Page 26: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

経歴

大学特に情報科学や情報工学ではない

文学部:言語学工学部:工学系基礎、経営学

院進学しないで就職プログラミングとの出会いは21歳のとき

職歴大手SIでオープン系のインフラ構築支援のエンジニア中堅ソフトウェアメーカーでソフトウェア開発エンジニア

Page 27: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

グーグルに入社した経緯

グーグルの検索広告でエンジニアを募集していることを知る

転職フェアにグーグルが来るというので話を聞きにいく

とりあえずレジュメを送ってと言われたのでだめもとで送る

なぜか面接の連絡が来て、なぜか1次面接に受かる

2次面接はカリフォルニアで、といわれて焦る

会社を休んでマウンテンビューへ

Page 28: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

グーグルに入社した経緯(続き)

期待して結果を待つが、落ちる

ショックだったが、惜しかったからまたチャレンジして、と言われて1年後の再戦を勝手に誓う

1年間、情報科学の勉強を、仕事の傍ら、独学する

1年後、再度応募して、今度は受かる(今度はカリフォルニア旅行はなし!)

晴れてグーグルエンジニアに

Page 29: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

平日の過ごし方(一例)7時 起床。重要なメールの確認

8時半 家を出る

10時 オフィスに到着

10~11時 メールの処理を終える

11~12時 コアチームとビデオ会議

12~13時 昼ごはん。雑談

13~16時ごろ なんとなく集中

16時から30分位 マッサージチェアでリラックス

16:30~18:40 お菓子を食べながら、もうひと頑張り

18:45 会社を出る

20:15ごろ 家に到着

24時ごろ 就寝

Page 30: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

他の会社と違うとところ

どのオフィスに所属しても、エンジニアとしては対等時差や規模などがハンディでないわけではない

コードレビューが必須プロジェクトのコアメンバープログラミング言語毎の認定エンジニア

エンジニアがエンジニアを評価採用でも人事評価でも

豊富なリソース計算機、コードだけでない実際に使える

Page 31: Google Developer Day 2010 Japan: Google エンジニアの日常 (山内 知昭)

Revised v4Presenter

ご静聴ありがとうございました