問題を解決するために必要な最小のツールを選びたい

極論感は否めないですが、最近プライベートも含めてチーム(特に開発チーム)の問題を解決するツール(ソフトウェア)について考えることがあったので、メモ。

チームとして何か解決しなければいけない問題があったとして、その問題を解決できる2種類のツールがあったとします。

ひとつは、解決しなければならない問題だけではなく、それ以外のまだ発生していない問題も解決することができる、高機能な「製品A」。もう一つは、解決しなければならない問題にだけ対応できる、比較的機能が少ない「製品B」。

解決しなければならない問題に対する機能はどちらの製品も同等だとした場合、どちらの製品をツールとしてチームに導入すべきでしょうか。

自分は機能が少ない「製品B」を導入すべきだと思います。

「製品A」を導入した場合、まだ発生していない課題を解決するための機能も利用可能になります。「備えあれば憂いなし」という観点で高機能な「製品A」を選びたくなるかもしれません。でも、この場合以下のような別の問題が発生する可能性があります。

  • 機能が多いためメンバーがツールの使い方を覚えるのに時間が掛かる
  • 問題が発生していないのに無理にツールの機能を使おうとして新たな問題が発生する

ひとつめは今いるメンバーだけでなく、これから先の未来のメンバーにも発生する問題です。 ふたつめは後者はすごくたちが悪いと思います。問題を解決するためにツールを導入したのに、そのせいで新たな問題が発生して、さらにツールを上乗せる。そしてまた新たな問題が発生する。ヘタするとループが発生します。「バグをひとつ直したら、新しいバグが3つ発生した」なんて状況に似ています。

技術的負債と同様に、「ツール的負債」みたいな考えも必要じゃないかと思います。導入するツールは、問題を解決するために必要な最小の機能を持っているべきだと思います。それ以上の機能はいりません。発生していない問題を解決するための機能はムダです。負債です。いりません。

だから、「最近流行っているから」という理由で何でもかんでもツールを導入するのはとても危険なことです。みんな使っているから、一般的に良いと言われているからといって、チームが本当にそのツールを必要としているかはわからないわけです。どんな場合でも、チームに発生している問題を解決するために、ツールを導入するべきです。

もちろん、ツールを選ぶときには他にも変数があります。価格だったり、他のツールとの相互接続性だったり、チームメンバーの構成や居場所だったり、カスタマイズ性だったり、色々な観点から最終的に導入するツールを選択します。

それでも、自分は「問題を解決するために必要な最小のツール」であるかどうかという基準を最優先に考えたいです。プライベートでも昔の仕事でも、何度かツールの導入に関して自分は失敗していますが、そろそろ学ばなきゃいけない頃合いだなと思いました。

それでは以上です。ありがとうございました。