Googleでの14年間からの教訓
103日前原文(addyosmani.com)
概要
Googleでの14年間の経験から得た、技術力以外でエンジニアが成長・活躍するための重要な教訓をまとめた内容。
技術選定やコードだけでなく、人間関係、組織運営、思考法がキャリアに大きな影響を与えることを強調。
ユーザー志向、チームの調整、行動優先、明確なコミュニケーションの重要性を解説。
失敗や曖昧さ、見えない貢献の扱い方についても具体的なアドバイスを提示。
個人の成長と組織の成果を両立させるための普遍的なパターンを体系的に紹介。
Googleで学んだエンジニアリングの本質的な教訓
- 優秀なエンジニアは、単にコードを書くのではなく、人間関係や組織の複雑さを乗り越えるスキルを持つことが重要。
- 技術的な知識やツールは変化しやすく、普遍的な価値は行動パターンや思考法にある。
- 経験を通じて得た教訓を共有し、次世代のエンジニアに役立てる意図。
1. ユーザー課題への執着
- 最も価値を生むエンジニアは、技術よりもユーザーの課題を深く理解することに執着。
- サポートチケットやユーザー観察を通じて本質的な問題を掘り下げる姿勢。
- シンプルな解決策は、問題の本質を理解したときに自然と現れる。
2. 「正しさ」より「共に正解へ」
- 技術議論で勝つことより、チームで合意形成することの重要性。
- 他者の意見を尊重し、確信に疑いを持つ姿勢が長期的な成功を生む。
3. 行動優先・まずは動く
- 完璧主義は停滞の元。まず動き、後で改善することが成果につながる。
- プロトタイプやMVPを早期にユーザーへ届け、現実から学ぶ重要性。
4. 明確さ=シニア性
- 巧妙なコードよりも、明確で分かりやすいコードが組織的なリスクを減らす。
- 他人が保守しやすい設計を常に意識。
5. 新規性のコスト意識
- イノベーションは限定的に。標準から外れる技術選定は運用負荷や障害のリスクを伴う。
- **「退屈な技術」**の方が予測可能で安定。
6. コードは自己主張しない
- 成果を認知してもらうには、人の推薦や説明が不可欠。
- 自分の価値を他者に伝える工夫がキャリアを左右。
7. 書かないコードが最良
- 不要なコードを追加しない勇気。削除や未実装がシステム改善につながる場合も多い。
8. バグも依存関係になる
- 大規模サービスでは、バグや挙動もユーザーに依存される現実。
- 互換性維持や廃止設計の重要性。
9. 遅いチームの本質は「不一致」
- 実行力不足よりも、方向性や優先度の不一致が進捗を妨げる主因。
- シニアエンジニアは調整や優先順位付けに多くの時間を割く。
10. コントロールできることに集中
- 組織変化や外部要因は制御不能。自分の行動や学びに集中することが効果的。
11. 抽象化は複雑さを移動させる
- 抽象化の裏側を理解し続ける姿勢。障害発生時に基盤知識が活きる。
12. 書くことで理解が深まる
- 他者に説明・文書化することで、自分の理解の浅さに気づける。
- 教えることは自己学習の最短ルート。
13. 見えない貢献(Glue work)の可視化
- ドキュメント作成や調整業務は不可欠だが、意図的・限定的に実施し、成果として残すことが重要。
14. 議論で全勝=サイレント抵抗の蓄積
- 簡単に勝ちすぎる議論は要注意。本当の合意には時間と歩み寄りが必要。
15. 指標は目標化した瞬間に無効化
- 測定指標は必ず操作される。速度と品質・リスクの両面でトレンドを重視。
16. 「知らない」と言える安全な文化
- シニアほど「分からない」と言える強さがチームの心理的安全性を高める。
17. ネットワークはキャリアを超える
- 人脈構築の重要性。信頼関係が新たなチャンスや成長を生む。
18. パフォーマンス向上は「不要な作業の削除」から
- 賢い最適化より、不要な処理をやめることが最速の改善策。
19. プロセスは不確実性削減のため
- 書類作成や形式的な手続きではなく、協調や失敗コスト削減が本来の目的。
(続きや新たな論点が必要な場合は、次のセクションで展開できます)