世界を動かす技術を、日本語で。

シンプルさでは昇進できない

概要

  • シンプルさ は高い美徳だが、評価や報酬の仕組みが 複雑さ を優遇しがち
  • 過剰設計 が昇進や評価で有利になる現実
  • シンプルな解決策 の価値を可視化・言語化する重要性
  • リーダーやマネージャー の評価基準・問いかけの変革が必要
  • 文化やインセンティブ の見直しがシンプルな技術文化の鍵

シンプルさが報われないエンジニアリング現場

  • Edsger Dijkstra による「シンプルさは美徳だが、努力と教育が必要」という言葉
  • 複雑な設計 が昇進や評価で目立つ現実
  • シンプルに解決した人 の成果が目立たず、評価されにくい構造
  • 意図的ではないが、過剰設計が報われる仕組み
  • 仕事の評価方法 が根本的な問題

典型的なエンジニアAとBの比較

  • エンジニアA :問題を分析し、一番シンプルな実装を選択
    • 50行ほどのコード、テストや保守も容易
    • 数日でリリース、次のタスクへ
  • エンジニアB :より「堅牢さ」を追求
    • 新しい抽象化レイヤー、pub/subシステム、拡張性のための設定フレームワークを追加
    • 実装に3週間、複数のPR、ドキュメントも充実
  • 昇進審査 ではBの方が「実績」が目立つ
    • 「スケーラブルなアーキテクチャ設計」「再利用可能な抽象化レイヤー導入」など
  • Aの成果 は「Feature Xを実装」だけで、目立たない

複雑さが評価されやすい構造の背景

  • 複雑さ は「賢そう」に見えるため評価されやすい
  • 面接 でもシンプルな提案は「スケールは?」「1,000万ユーザーなら?」と追加要求される
    • 結果的に複雑な設計が「正解」に見える学習効果
  • 設計レビュー でも「将来のために拡張性を持たせるべき」と指摘されがち
    • 実際には不要な抽象化や柔軟性が増えるだけ
  • 本来の問題解決 よりも、「複雑さを避けた判断」が評価されない構造

本当に必要な複雑さと「不要な複雑さ」の違い

  • 大量トランザクション大規模チーム開発 など、複雑な解決策が必要な場合もある
  • 問題が複雑なとき にのみ、複雑な解決策が正当化される
  • 「将来必要かも」で今から複雑化 するのは「不相応な複雑さ」
  • 経験あるエンジニア ほど「何も足さない」判断ができる
    • 本当のシニアは「使わない勇気」を持つ

シンプルさを評価・可視化するためのアクション

  • エンジニア自身 が「シンプルさの価値」を伝える工夫
    • 「Feature Xを実装」ではなく、「3つのアプローチを比較検討し、必要十分な実装を選択、6ヶ月間インシデントゼロで運用」と説明
    • 「作らなかったもの」も意思決定として明記
  • 設計レビュー で「将来のために拡張すべき?」と問われた際
    • 「後から追加するコスト」と「今追加するコスト」を比較して説明
    • 十分な根拠を持って「今は不要」と判断
  • マネージャーとの対話 も重要
    • 「自分の意思決定も評価に反映したい」と相談
    • マネージャーに「評価のための言語」を提供

組織文化とインセンティブの課題

  • 複雑さばかり評価される組織 なら、それがその組織の文化
    • シンプルさを本当に評価する組織も存在
    • どちらの環境かを見極める重要性
  • リーダーやマネージャー の役割
    • 昇進基準や設計レビューの「問い」を変える必要
      • 「スケールは?」ではなく「最もシンプルな実装は?」と問う
      • 複雑さの正当性を証明する責任をエンジニア側に課す
    • 昇進議論でも「本当に必要だったか?」を問う
    • シンプルな実装をしたエンジニアの実績を積極的に言語化・評価
  • チーム内で称賛するポイント も見直し
    • 大規模プロジェクトだけでなく、不要なコードを削除した人や「今は不要」と判断した人も称賛

まとめ:シンプルさを報いる文化の構築

  • 複雑さを報い、シンプルさを無視する限り、複雑なものばかり増える
  • 解決策自体はシンプル であり、シンプルさを評価する仕組み作りが本質
  • 本当に価値ある判断 は「何を作らないか」を見極めること

Hackerたちの意見

そうだね。ビジネス用語で説明しないとダメだよ、テクノロジー用語じゃなくて。「インシデントを80%削減」、「コストを40%削減」、「パフォーマンスを33%向上させつつ、サーバーのフットプリントを25%削減」みたいな感じで。単純さそのものは評価されないけど、単純さの結果はすごく評価されるんだ。

以前はそうだったね。企業は効率を重視するから。現代のAIと比べてどうなんだろう?その指標は逆の方向に行く気がする。

君はネガティブな指標を挙げてるね。実際には、企業はポジティブな指標にしか興味がないんだ。「限界収益を30%増加させる」ってね。コスト削減やリスク軽減についての口先だけのことは関係なしに。AI経済では成長が全てだから、状況は悪化する一方だよ。

その通りだね。もし彼らに「早く欲しいか、シンプルにしたいか」って聞いたら、毎回「早く」って選ぶと思うよ。

「インシデントを80%削減」、「コストを40%削減」、「パフォーマンスを33%向上させつつ、サーバーのフットプリントを25%削減」私の経験では、こういうことでは誰も本当に昇進したり報われたりしないし、少なくとも最初の一回の拍手を超えることはないよ。みんなが気にしてるのは機能のリリース速度だけ。もし本当にインシデントを80%削減できるなら、君の組織は基本的に毎日の問題に対して非常に高い耐性を持っていて、それを週に一回に減らしたか、もしくは元々インシデントが少なすぎて、80%減っても年4回から年1回になるだけで、経営陣やユーザーにはほとんど気づかれないんだ。

複雑さの山を作らないことの影響は測れないよね。

その動詞(減少した、増加した、減った)は、すでに「悪い」状況だったことを前提にしてるよね。初期設計でそれを避けるのがあまり評価されない。初日から速いシステムを作るより、遅いシステムを作って80%速くする方が評価されることが多いよ。

こういう指標を実際に見たことがない、特にエンジニアリングでは。

私たちのインタビューの一つは、候補者に公共図書館のためのウェブベースのシステムを設計させる技術的なデザインの質問なんだ。どれだけシンプルに保てるかを明示的にテストするもので、「小さな町の図書館」から始めて、「全国のすべての図書館」に要件を変更するんだ。最高のパフォーマンスを出した人は、理論上の最大規模でも、中くらいのサーバーとPostgresがあれば十分だと見積もったんだよ。

ちょっと待って、つまり、全ての会社がデザインシステムのインタビューでSpotifyを作ってるわけじゃないってこと?ありえないよ。

その答えを言ったせいで、100%面接に落ちたことがあるよ。彼らのスケールの定義が10,000 req/secだったから!2026年にはそれ、10 req/secとあまり変わらないし、元の設計で全然問題ないのに…でも、面接官が「シニア」な24歳で、ただプロンプトを読み上げてるだけだとこうなるんだよね。

みんな忘れがちだけど、初期のウェブってサーバーのクローゼットで、現場で毎秒何百ものリクエストを処理してたんだよね。開発者たちがもっとサーバーが欲しいって言って、理由を説明するのに疲れちゃって、ビジネスがハイパースケーラーに売られたんだ。そしたら、ダウンしてる間は毎秒お金が失われるから、高可用性のサービスが売り込まれた。でも、実際にそれを構築・維持するコストが、失うお金よりも高いってことは、大きな組織以外は誰も言わなかったよ。履歴書重視の開発の話はもうやめておくけど、もしかしたら俺が完全に間違ってるかもしれない。これはあくまで一つの視点だからね。

Hacker Newsで議論の続きを見る