【Google Developer Day2010】「Google エンジニアの日常」

山内 知昭様のセッションでした。
これはまとめていいのでしょうか…?と思うのですが、ダメなら、最初からセッションはしないだろう!
ということで以下メモです。



アジェンダ

  • どんな仕事?
  • 動やって仕事を?
  • 好きな仕事できる?
  • 仕事以外の職場環境はA?
  • ワークライフバランスってどう?
  • どうやったらグーグルエンジニアに?
  • 実例
職種

 ちょっと書きそこねたところは省略名だけです。

  • SWE
  • PM
  • SRE
  • SWE in Test/Test Engineer
  • Ops


一人一人エンジニアが、アイディアを出して、最初から最後まで関わる

マシン環境
  • 占有
    • ラップトップ
    • デスクトップ

 →データセンター上のvirtual workstationを代わりに持つこともできる。
  家とか外出先でも作業ができるという利点

    • 大きなディスプレイ30inch
  • 共有
    • 世界中のデータセンター

コードやデータの管理

  • ソースコード
    • 基本的に全世界・全プロジェクト共通のリポジトリ
    • オープンソーう・プロジェクトなどの特殊なものは別・VSCのコマンドを直接実行することは少ない
      • 様々なラッパーや補助システムがある
  • データ
    • ホームを含む様々なディレクトリがNFS

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

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

ビルド・ジョブ実行

  • ビルド
    • 内政のビルドツール
    • 自動的に分散ビルド・分散テスト
  • ジョブ実行
    • 世界中のデータセンターの計算クラスタが自由に使える

 ・クォータの制限はあるが、かなり大きい

    • 同じバイナリをローカルでも実行可能

 ・テスト実行で便利

    • 他のプロジェクトの生成ファイルにもアクセス出来る

 ・中間処理の終わったwebページなど
  自分のやりたいことだけができるというめりっとが

仕事の進め方

Q.どんな体制で開発しているの?
A.世界中から開発に参加

Q.分散しすぎて効率が悪いのでは?
A.プロダクト単位のコアチームの構成

    • ある程度地理的な配置を考慮
    • VCでつないでチームミーティング
  • 時差12時間もあるとさすがにしんどい
  • 個々のプロジェクト
    • 少人数(1〜数人)
    • face to faceコミュニケーションは重要
    • 必要に応じて出張して開発
  • その他
    • メールが中心。チャットを使う人も。


Q.英語ですか?
A.英語です。
日本人同士なら日本語で話しますが、読み書きはそれでも英語です。
ただし、ブロークンな英語でも割と許してくれます。
(SWEの場合。他の職種はわかりません)
でも、話すのはともかく、聞けないのはしんどいかも

Q.ローンチプロセスとかは?
A.製品,サービスによって詳細は違いますが…

    • クォリティなどは大丈夫?
    • インパクトは大丈夫?
    • セキュリティーは?
    • リソースは足りてる?
    • メンテナンス出来るの?
    • 法律に違反してない?
    • 関連チームへの確認はおk?

など

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

個人と組織

Q.好きな仕事が出来るの?
A.半分yes半分no

Noの理由
    • コアメンバーになるにはコアチームが(東京に)居ないと難しい
    • 他のエンジニアからのサポートかないとしんどい
Yesの理由
    • 20%projectなら比較的自由にプロジェクトを選べる
    • Full-time projectでも課題発見・解決は裁量の範囲
    • 親切な人や使えるリソースが多い

仕事が好きになりやすい環境→好きな仕事をやれる可能性が高いといえる


Q.仕事以外の職場か環境は?
A.オフィスに来るのが楽しくなる仕掛け

    • 朝・昼・版の食事。お菓子屋飲み物無料
    • オフィスデコレーション、遊具、マッサージ
  • チームの絆を深める仕掛け
    • 仕事中のおしゃべりはおk

 ・休憩時間とかはきまっていない

    • 各種イベントーオンサイト-オフサイト
      • ランチタイムのミニトーク
      • ハッカソン
      • funイベント

 

Q.ワークライフバランスはどう?
仕事が好きそうな人がおおいけど大丈夫?
A.仕事時間の最良は自由度が高い
有給の他に疾病休暇(有給)有り

    • 1週間まとめて休んで家族旅行とか普通
    • 子供の病気とかで当日の朝連絡して休むのも普通
  • 子どもが生まれたら
    • 父親は育休を取るのが普通(4週間は有給)
    • 母親は産休を取ることがdけいる(14週間は有給)
      • 少なくとも取りにくい雰囲気はないはず


Q.どうやったらエンジニアになれる?
 A.まずレジュメ

  • エンジニアが見てこれは!と思えば面接へ
    • 電話面接。
      • 人事や管理職ではなく、職場のエンジニアが面接
      • 技術力を党質問が中心
        • ホワイトボートにコードを書く事も
        • 面接官は面接の後、合否の理由をレポートにする客観的に核

   

だから具体的にどうする?

  • 英語
    • 出来ないとあとしんどい
    • 英語のAPIドキュメントを読んで理解できて、海外に個人旅行ができる程度の英語力があれば、とりあえずは大丈夫だと思う
  • 技術
    • 様々な分野を知っている方がいい
      • CPUの仕組みからソフトウェアデザインまで
      • 表層的でない理解が求められる なぜそうなるのか
      • 人に支持する力ではなく自分で作れる力を重視
      • きれいなコードを素早くかけると好印象

 

経歴

・文学部
→工学部に:光学系基礎、経営学
院進学しないで就職
プログラミングとの出会いは21歳

職歴

2社経験

グーグルに入社した経緯

  • 検索広告で募集を知る
    • 転職フェアにグーグルがくるというので話を聞きに行く
    • とりあえずレジュメを送ってと言われたのでダメもとで送る
    • なぜか面接の連絡、1次に受かる
      • 2時面接はカリフォルニアで、と言われて焦る
      • 会社を休んでマウンテンビューで

落ちた。

  • 惜しかったからまたチャレンジしてと言われて、1年後の再戦を勝手に誓う
  • 1年間、情報科学の勉強を仕事の傍ら、独学する

→1年後再度応募で受かる。
 

他の会社と違うところ

  • どのオフィスに所属しても、エンジニアとしては台東
    • 時差や規模がハンディでないわけではない
コードレビューが必須
  • プロジェクトのコアメンバー
  • プログラミングごとの認定エンジニア
エンジニアがエンジニアを評価
    • 採用でも人事評価でも
豊富なリソース
  • 計算機、コードだけでない
  • 実際に使える

1つのリポジトリなので、他のチームのコードをそのまま使える。
人的なリソース。何か会ったときに人に聞くことができる 仕事がしやすい




一番驚いたのは、育児休暇辺りです。
普通の日本企業では考えられない待遇ですね…。
また、コードレビューが必須というのはすごく魅力的だと思いました。
エンジニア同士でブラッシュアップしていける環境素晴らしいです。