- 設計不良なソフトウェアの現場で起きていること
- 影響範囲が見えないまま進む実装
- ここで言う「影響範囲がわからない」とはどういう状態か
- 実装完了後に始まる、本当の消耗戦
- なぜこの状況は繰り返されるのか
- エンジニアは「疲れたから」辞めているわけではない
- 設計の役割は「人間が判断できる状態」を作ること
- 消耗戦を終わらせるために
設計不良なソフトウェアの現場で起きていること
設計不良なソフトウェアの現場では、共通して起きることがあります。
変更を入れようとすると、「どこまで影響するのか分からない」という声が上がる。
それでも、プロジェクトは止まりません。
- スケジュールは既に決まっている
- 調整は簡単には認められない
- 技術的制約を解消するための時間も取れない
結果として、「今の構造のまま、なんとか実装してほしい」という判断が下されます。
この時点で、プロジェクトはすでに消耗戦に入り始めています。
影響範囲が見えないまま進む実装
影響範囲が分からない状態では、エンジニアは慎重になります。しかし、慎重に考えれば考えるほど、時間は足りません。
- 安全に直したい
- でも期限がある
- 設計を整理する余裕はない
その結果、選ばれるのは「期限内に動く可能性が高そうな実装」です。
設計的には無理があると分かっていても、他に選択肢がないため、応急処置的な実装が積み重なっていきます。
ここで言う「影響範囲がわからない」とはどういう状態か
ここで、この記事で使っている「影響範囲がわからない」という言葉の意味を、少しだけ整理します。
これは単に、
- 調査が足りない
- エンジニアの理解が浅い
という話ではありません。
影響が 大きすぎて、複雑すぎて、人間の脳の仕組み的に追いきれない という状態を指しています。
どこを変更すると、
- どの画面に
- どの機能に
- どの状態に
影響するのか。
それを一人のエンジニアが頭の中で安全にトレースできない。これが「影響範囲が見えない」状態です。
実装完了後に始まる、本当の消耗戦
スケジュール上は、実装は一度「完了」します。しかし、その後に不具合が多発します。
影響範囲を把握できないまま実装している以上、これはほぼ必然です。
- 想定外の画面で不具合が発生する
- 特定の操作順でのみ再現するバグが出る
- 修正すると別の箇所が壊れる
不具合対応という 予定外の作業 が発生し、本来進めるはずだったタスクは後ろ倒しになります。
エンジニアは長時間労働になり、管理者はスケジュールを組み直すことになります。
誰も得をしません。
なぜこの状況は繰り返されるのか
この問題は、エンジニアの努力不足ではありません。むしろ、責任感の強いエンジニアほど無理をします。
しかし、
- 影響範囲が見えない設計
- 技術的負債を返すための時間や構造がない
これが変わらない限り、結果も変わりません。
エンジニアは「疲れたから」辞めているわけではない
長時間労働が続くと、「エンジニアが疲れて辞めた」と説明されがちです。
しかし実際には、
- 頑張っても状況が改善しない
- 技術的負債が解消される兆しが見えない
- 消耗戦が続く未来が想像できてしまう
こうした 構造的な行き止まり を感じた結果として、プロジェクトを抜ける決断をしているケースが多いのではないでしょうか。
エンジニアが定期的に入れ替わる現場では、個人の忍耐力やモチベーションではなく、
- 影響範囲が見えない設計が放置されていないか
- 技術的負債を解消するための構造や仕組みが存在するか
といった点を、疑うべきだと考えます。
設計の役割は「人間が判断できる状態」を作ること
設計の役割は、コードを綺麗にすることではありません。
- 影響範囲を把握できるようにする
- 変更に対して判断できる状態を作る
- 段階的な改善を可能にする
設計とは、 人間が無理なく考えられる状態を作ること です。
消耗戦を終わらせるために
設計を軽視すれば、短期的にはスピードが出ているように見えるかもしれません。しかしその代償として、現場は確実に消耗していきます。
設計不良による消耗戦は、エンジニアも、管理者も、プロダクトも疲弊させます。
設計はコストではありません。 消耗を防ぐための投資 です。