ソフトウェアエンジニアリング 例え
他のエンジニアリングを経験したことがないので飽くまでソフトウェアエンジニアリングの話。また、開発方法にも色々な物があるので、これはイチ例えとしてのもの。
ソフトウェアエンジニアリングとは毛糸玉を如何に触らずに目的のモノを作り出すかである。
作りたいもの:
それぞれ20cmの赤と緑の糸を端どうしで結んだ、ラッピング用のリボン。
単位コスト:
- 何もせずにいるだけで1秒ごとに1円。
- 毛糸だまを触れずに観察すると、1秒間ごとに100円。
- 毛糸だまに触れていると、1秒間ごとに1万円。
これぐらいのスケールでだいたい合ってる気がする。あくまでスケールなので実際のコストではない。
当然だが、一人頭にかかる最低限の費用であって、二人同時に毛糸だまに触れていれば毎秒2万円かかる。
それぞれが何に相当するか:
- これはプロジェクトがあるという事実だけでかかってしまう謎の費用。
- リサーチや設計をするコスト。
- 実装にかかるコスト。
それぞれの説明:
- ソフトウェアエンジニアの意識の中に置いておくのにもコストがかかるみたいな気持ちで捉えてれば良い気がする。
- ここで毛糸がどのように絡まっているか観察して、効率よく紐解くプランを設計するのが大事である。もちろん顕微鏡を買うのにも追加でコストがかかるのでかなり難しいフェーズ。顕微鏡を買うのかそれとも実際に少し触ってみて(秒間1万円)、要る要らないを判断するのか。とてもむずかしいフェーズである。でもこれは設計中に(設計に)変更を加えるほうが、実装中に(設計に)変更を加えるより圧倒的にコストが安いという結論にも至れる。
- なぜ設計より100倍も高いのか。設計より進行が遅いからである。まず設計というものが、実装ではないがゆえに、コードそのものほど細かいことを決めていないからである。設計をもとにコードに落とし込むという思考。さらに実装、コードレビュー、テストなどに時間がかかる。このステップで設計の不備を見つけると、手を離して設計し直すということが稀である。故にこのステップまで入るとコストがものすごくかかる。つまり毛糸だまに触りながら設計を直すのだ。そもそも観察するだけではわからず、実際に触れてみてわかるものというものが多いので、前段階でクリアできなかった問題が浮かび上がったときにこういうことになる。