既知の問題を潰す方が簡単だ

ソフトウェアの開発現場では毎日様々な問題が起こるけれど、その問題は、基本的に下記のいずれかのカテゴリに分類されると思う。

  • 未だかつて経験したことの無い未知の問題
  • 既にどこかで経験したことの有る既知の問題

新しい種類の問題に対処するのは大変だ。そもそも、問題の発生を予期出来ないし、問題が引き起こすダメージや対処の方策を考えるだけでも、不明点だらけでかなり難しい。リスク管理なんて言う言葉があるけれど、予備知識のない問題に対処するのは、合理的な方策と言うよりは結果を予見出来ない博打に近いと思う。

しかし、実際に発生した問題がどのような性質を持つのか集計してみると良く分かるけれど、後者に分類される問題の方が実は圧倒的に多い。見かけ上の問題は異なっていても問題の本質まで原因を突き詰めていくと、既知の問題と同種であることが少なくないのだ。新規の開発案件や新しい開発環境での作業でも、発生する問題の本質は今までに発生したものと同類であることが多く、本当の意味で新しい問題はごく限られたものにしかならないように思う。

そんなわけで、対応するのに手間と時間がかかる新しい問題に正面から立ち向かうのは上手いやり方ではなくて、既知の問題の再発を防いで問題発生の件数を減らしたり、問題を素早く片付けられるように工夫をしておく方がずっと効率的だったりする。また、そのような作業を優先して行うようにしておくと、未知の問題に対処するためのリソースも確保できるので余裕を持った対応が可能になる。

もちろん、既に持っている知識を総動員して、新規に発生する問題を予見出来れば理想的なのだけど、その域に達するには少々経験を積んでおく必要が有る。だから最初からそんな難しいことに挑むよりは、既に分かっていて対処が容易な問題を優先させる方がずっと賢いと思う。

日々、問題だらけで嫌になってしまう開発者の気持ちも分かるが、生真面目に一から順番に対処し続ける限り、問題に追われ続ける開発になってしまう。開発者側にも少しばかりの知恵と工夫が必要ではないかと思っている。



関連