シンプルさでは昇進できない
概要
- シンプルさは高い価値を持つが、評価されにくい現実
- 複雑さがエンジニアの評価や昇進で優遇される傾向
- シンプルな解決策が目立たず埋もれてしまう問題
- インセンティブ構造の見直しが必要
- シンプルさを可視化し、正当に評価する方法の提案
シンプルさと複雑さの評価の歪み
- Edsger Dijkstraの「シンプルさは美徳だが、評価されにくい」という指摘
- エンジニアリング現場で複雑な設計や実装が評価されやすい構造
- シンプルな実装は印象に残りにくく、昇進や評価で不利になりがち
- 複雑なシステムを作るエンジニアは**「スケーラブルな設計」などの実績**として評価されやすい
- シンプルに解決した場合、「feature Xを実装」だけで終わり、評価材料が少ない
- 複雑さが賢く見えるという誤った印象が蔓延
面接・設計レビューにおける複雑さの偏重
- システム設計面接でシンプルな解決策を出しても「スケーラビリティは?」などの質問で複雑な案を求められる
- 面接官や設計レビューで**「将来の拡張性」「将来的な問題」を理由に不要な抽象化やレイヤー追加**を要求されがち
- 結果として現実には不要な複雑さが増え、保守性や開発速度が落ちる
複雑さが必要な場合とそうでない場合
- 本当に複雑な問題(大規模トランザクション処理や多数チーム開発)には複雑な解決策が必要
- 問題がシンプルな場合、**複雑さは「未然の心配」や「見た目のプロフェッショナリズム」**でしかない
- **「やらない決断」**も重要な技術的判断
シンプルさを評価するための具体策
- 自分の仕事を言語化する工夫
- 「feature Xを実装」ではなく、「複数案を検討し、要件を満たす最もシンプルな実装を選択」
- 判断プロセスや選択理由を記録・説明
- 設計レビューでの対応
- 「将来的な拡張」要求には「必要になった時の追加コスト」と「現時点での複雑化コスト」を比較
- **「今は待つべき理由」**を説明
- マネージャーへの相談
- 「自分の判断や選択を正当に評価できるようなドキュメント化をしたい」と相談
- マネージャーに評価材料を提供
組織文化とインセンティブの転換
- 複雑なシステムを作った人ばかりが昇進する組織は、シンプルさを評価しない文化
- シンプルさを評価する組織かどうかを見極めるポイント
- エンジニアリングリーダーの役割
- 昇進や評価の基準を見直し、「何を作らなかったか」も評価
- 設計レビューでは「最もシンプルな案は何か?」を問う
- シンプルな実装や不要なコード削除を積極的に称賛
結論:シンプルさを報酬とする文化へ
- 複雑さばかりを評価し続ければ、複雑なものしか生まれない
- シンプルさを可視化し、正当に評価するインセンティブ設計が重要
- 問題の本質は「複雑さ」ではなく、「不必要な複雑さ」の温存
- シンプルな解決策を誇れる組織文化の醸成が最終的なゴール