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