Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

銀の弾丸はない。けれどいい弾丸と悪い弾丸はある。そしていい弾丸は多い方がいい。

システム開発においてプロジェクトを成功させるには、という視点で提案や考案をすることがあります。
たとえば、次のような感じで。

  • 反復型開発をして仕様変更に柔軟に対応したい
  • DIコンテナAOPを使って開発効率を上げたい

この部分はいろいろな項目があると思います。
そんなとき、こういう返答がありませんか?

  • プロジェクトに銀の弾丸はない。○○(反復型開発・DIコンテナなどの用語が入る)を使ったからといってプロジェクトが成功するわけではない。

たしかにその通りです。DIコンテナを使ってもプロジェクトが失敗することもあります。
銀の弾丸ではないです。
でも、だからといって使わなくてもいいという結論にはならないはずです。
それ1発で成功に導ける弾丸はないけれど、いい弾丸はそろえるべきです。
それもできるだけ多くそろえるべきです。

銀の弾丸でないからその弾丸は使わないというのは論理の筋が通っていないです。


プロジェクトをこう例える人もいます。

  • プロジェクトは魔物である

銀の弾丸がない世界で魔物を倒すには、手に入る中で最高の弾丸をそろえるしかありません。
それも使えるお金の中でできるだけ多くそろえるしかありません。

開発プロセスフレームワークもそれぞれ最高のものをそろえてこそ、
プロジェクトは成功に近づくはずです。
銀の弾丸がなくてもいい弾丸を何発も当てれば魔物は倒せるかもしれません。


どんな魔物と闘うのか。それによっていい弾丸の定義は変わることもあります。
散弾なのか、速度なのか、威力なのか。
銀の弾丸がないから、今まで使っている弾丸でいいわけではなく。
新しい弾丸が出ればどんな特徴があるのか、最低限把握してこそ利用の是非が判断できるはずなのに、
冒頭の言葉が知らない言い訳になっているのはあまりにも暴力的だと思います。