しゅみは人間の分析です

いらんことばかり考えます

ひとつの道具で100点を目指さない

我々*1が業務で解いていく現実の問題はたいてい複雑である。複雑さとは、複数の問題が暗黙的に組み合わさったものが多い。あるいは、適切な制約が見えていないものもある。

ところで、ソフトウェア上の道具では、あらゆる問題を解くためのものよりも、「ひとつのことをうまくやる」方向性を維持できているものが長生きしている。

それゆえ、複雑な問題を解くのにひとつのソフトウェアだけで解決できることは少ない。孤独な実装作業を行い視野が狭くなっていると、たいてい無理をして「ひとつの道具ですべての問題を解く」方向に走ってしまう。しかし、そういった道具の使い方は歪であって、後から振り返るとやりなおしたくなることが多い。

「ひとつのことをうまくやる」とは、「それ以外のこと」を捨てた結果実現できるものなのである。

なので、問題がスパゲティ状に絡まった現実の問題を解くためには、「ソフトウェアの責務」を超えたことを無理やりやらせてはならない。ひとつのソフトウェアで解決するのは、問題の8割くらいまでで、残り2つくらいで95点くらいまで持っていけばよいと思う。

100点をいきなり目指すのも問題があって、95点を取るのと100点を取るのとではコストが数倍は変わってくる。また、今日の100点があくる朝には仕様が変わって別の採点方式になってることもよくある。

 

「この問題はこの道具で解くのがよいか?」という疑問は重要で、しかし、今その人が知っている道具が適切でないとわかっていても、何を使えばよいかはわからないことがある。そんなときは、人に相談してみるのがいちばんである。たいていの場合、問題を注視しすぎた自分よりも他人のほうが視野が広く、自分とは違う経験をしているものである。コードレビューと同様に、問題を解く方法を考える段階でも、他人の視点を借りていきたいものだ。

*1:ソフトウェアエンジニア