この記事で言いたいこと
エンジニアとしての「正しさ」と、 会社としての「合理性」は、必ずしも一致しない。
そして多くの現場で、 過剰設計は「善意」で始まり、「負債」として残る。
この記事は、 限られたリソースで戦う会社のエンジニアとして、 どこで割り切るか・何をやらないか についての整理です。
僕たちはマイクロソフトではない
まず前提として。
- 無限の開発者がいるわけでもない
- 専任SREがいるわけでもない
- 失敗しても許される資本力があるわけでもない
多くの会社は、 限られた時価総額・限られた人員・限られた時間 の中で戦っている。
それなのに、
- 将来スケールする前提の設計
- まだ存在しない要件への備え
- 理想的すぎるアーキテクチャ
を最初から持ち込むと、 その瞬間に 会社の体力を削り始める。
過剰設計は、なぜ起きるのか
過剰設計の多くは、悪意ではなく エンジニアの誠実さ から生まれる。
- 将来困らせたくない
- 技術的に正しいことをしたい
- 後から怒られたくない
- 「わかってない」と思われたくない
気持ちはわかる。 でも、ここに落とし穴がある。
「将来のため」は、今のビジネスを犠牲にしていい理由にはならない
ビジネス合理性という視点
ビジネス合理性とは、 売上・コスト・リスク・速度 を天秤にかけること。
例えば:
- 今月リリースできないと失注する
- 運用できる人が限られている
- 修正コストより、作り直した方が安い
- スケールする前に撤退する可能性もある
こうした現実の中で、
「技術的に美しいか」 より 「今、この会社にとって得か」
を優先する判断が必要になる。
「正しい設計」より「戻れる設計」
私が意識しているのは、 完璧な設計 ではなく、戻れる設計。
- 作り直せる
- 捨てられる
- 影響範囲が小さい
- 理解できる人が多い
これは、 スケールしない設計ではなく、 失敗しても立て直せる設計 だと思っている。
エンジニアの価値は「技術」だけじゃない
限られた環境では、 エンジニアの価値はコード量では測れない。
- どこを作らないと決めたか
- どこで割り切ったか
- 誰が運用できるかを考えたか
- 会社の体力を理解しているか
これらは、 コードレビューでは見えにくいけれど、 事業にとっては非常に重要な能力だと思っている。
まとめ:合理性は「逃げ」ではない
- 過剰設計は優しさから生まれる
- でも、会社を苦しめることもある
- 僕たちはマイクロソフトではない
- 限られたリソースで勝つ必要がある
だから私は、
エンジニアのエゴより、 ビジネス合理性を優先する判断をしたい。
それは妥協ではなく、 現場で生き残るための選択だと思っている。
関連記事
- 入力を減らすことが、管理部を救う — 「やらないこと」を決める具体例
- UIを作らなかったら、利益が出た — 過剰設計を避けた実体験
- レビューで疲れないための、三つのレイヤーの話 — 「背負いすぎない」判断基準