はじめに
以前自分の大学でGoogleの本社で働いている韓国の方の話を聞けるイベントがあったのでその内容をメモとして共有しようと思います。(すべて韓国語で聞いたので多少間違っている内容があったり、変な日本語になってるかもです)
講義してくれた人について
講義してくれた人はGoogleの本社で働いており、今までに韓国のLGやamazonなどでも開発経験のある韓国の方でした(名前は伏せます)。当時はYoutubeのショート動画関連の開発に関わっていたとおっしゃっていました。
ソフトウェアエンジニアとは
プログラマー = コードを書く人
ソフトウェアエンジニア = コードを書く仕事を含めた全ての開発業務(データベース, アーキテクチャ, teckleadなど)
Googleではソフトウェアエンジニアリングの知識がある人がデータサイエンティストやプロジェクトマネージャーになる。
googleが強調している3つの概念
① Time
時間が経つにつれて環境は絶対変わってしまうからいつもその変化に対応してソフトウェアを作っていかなければならない。10年以上経っても作動するソフトウェア、時間が経っても変化に対応できる持続可能なコードを書く。
② Scale
どんなにソフトウェアの規模が大きくなってもそれに適応できる計算量などを意識したコードを書く。顧客に影響を与えないスケーラビリティ構成にする。
③ Tradeoffs
常にデータ基盤で物事を判断する(A/Bテスト等)。
より良い開発者になるためのマインド
① コードレビュー
自分より技術がある人にコードを見せて積極的にコードレビューをもらう。Googleでは社員全員がYoutubeなどのコードを閲覧することができ、場合によってはコードを変更する権利をもらえる。チーム全員が理解できるようなコードを書く。自信を持ってコードを書き、レビューしてくれる人を尊重する。コードレビューで早い段階でエラーを見つけることで、後々の工程で1からやり直さなくて良くなる。Googleであっても最低2人以上のコードレビューを通過しなければ先に進めない。
② 早く失敗してどんどん繰り返す
アプリなどのアイディアがあればすぐに自分で作ってみる。トライアンドエラーを繰り返す。
③ ドキュメント
優秀なエンジニアはそのコードがどういう仕組みで動いているのかなどを理解し文書化できる。
④ 知識を共有する
自分の勉強した知識などをどんどん周りに話す。アウトプット精神。
⑤ 他人を非難しない
Googleでは何か問題があっても問題を起こした本人を責めたりしない。責められた人が次コードを書く時躊躇して欲しくないため。問題が起こった時はその問題の解決に集中する。
AI時代でも生き残るのに必要な能力
① AIでも理解できないような複雑な要求事項を理解する力
今の段階の生成AIはまだ複雑な要件を理解できない。
② 技術コミュニケーション力
自分が書いたコードやアーキテクチャ、アプリケーションを人に説明できる能力やコミュニケーション能力。とにかく人間関係が大事。互いに助け合い成長し合える人間になること。
その他
- Googleは出退勤時間が決まっていない(自分のやるべきことが終わっていたら帰ってもいい)
- 言語はサーバサイドはCやGO, フロントエンドはTypescriptやAngularなど
- Googleのソースコード管理システムはgithubではなくpiperというやつ
- AIが発展してもエンジニア職は無くならない(人間がベースの部分を作らなくてはいけないため)
- Googleはエンジニアにすごい優しい(amazonは厳しいらしい)
終わりに
自分はまだ学生の身ですが、振り返ってみると結構貴重なお話を聞けたのではないかと思います。皆さんも是非参考にしてみてください! ここまで読んでくださりありがとうございました🙇