新しいもの

English version.

ソフトウェア開発をする際に、どのソフトウェア、プログラミング言語、フレームワーク、ライブラリを使うかを決める(いわゆる技術選定)って難しいですよね。使おうとしているものが「必要なことをやってくれるか?」とか「コミュニティがちゃんとあるか?」とか「来年もメンテナンスされチエルか?」など考えることがたくさんあります。

そんな難しい問題に対して、今も「新しいもの」に飛びつくエンジニアをよく見かけます。自分もやってしまったことがありますし、読者の方も同じようなことを見たりやったりしたことがあると思います。新しいものにはそんな魅力(魔力といっても良いかもしれません)がありますが、安易に飛びつくのは危険です。

今回の記事では、新しいものに飛びつくことの危険性を説明し、読んでいる方々が少しでも良い判断ができる手助けになれれば何よりです。

新しいもの

技術選定の際に「新しいもの」を選びがちであることは先程も述べましたが、どうも人はそういうものに惹かれやすい性質があるように感じています。心のどこかで「新しいものは良いものに違いない」と思っている節があるのかもしれません。新しく出てきたものの説明とかには「これもあれもできます」とか「以前の〇〇よりも優れています」などと書いていて魅力的ですし、自分の経験という観点でも新しいものを身に付けられて、経歴書にも書けますし、面接とかでもネタにできます。 ということで、 npm install 、pip install 、gem install して、README通りに設定して、動作するのを確認して満足、という感じになりがちです。

問題1:エッジケース

最初の問題は導入したものがすべての「エッジケース」に対応できていない可能性があることです。自分がカバーしたいケースは一見問題ないように見えるかもしれませんが(そもそもそれを元に探していますしね)、本当にそれだけで大丈夫化が問題になります。特に開発の初期段階ではすべてケースを洗い出せていない可能性があり、新しいものが見えていなかったケースで利用できなくなり、振り出しに戻ってしまう可能性があります。

問題2:市場におけるポジショニング

次の問題は利用しようとしている「新しいもの」が市場におけるポジショニングを見つけられていない可能性があることです。長く使われている(生き残っている)ものは、多くの人が困っているような課題で、かつ、課題で有り続けているようなものを解決していることが多いです。
新しいものは、一見課題を解決しているように見えるかもしれませんが、それが「多くの人が困っているような課題で、かつ、課題で有り続けているようなもの」を解決しているかどうかはわかりません。違った場合は、そのうち廃れてしまう可能性があります。

問題3:採用

3つ目の問題は、その新しいものを扱える人が見つからないことです。自分みたいにマネージャーの立場としては無視できない問題です。おそらくチームにも導入した人以外に詳しい人がいる可能性もなく、チームの安定性に影響します(バス係数 が1の状態)。さらに、新しいものを扱える人を採用するのも簡単ではありません。
チームではなく個人の観点でも、避けた方が良いです。自分で対応するから別に問題ないと考えてしまうかもしれませんが、自分が必ず対応できる状況か分かりませんし、自分がそのときに対応したいか分かりません(5年後に対応したいと思うでしょうか?)。

では新しいものを使っていはダメなのか?

もちろん使っても良いと思います。使わないといけない場合もあるでしょう。
エンジニアリングにおける他の問題と同じで場合によリます。上記で述べた問題は、場合によっては問題ないかもしれませんし、未来のことは誰にも分からない面もあるので、結果的に正しかったということもありえます。
重要なのは上記で述べたような問題やリスクを意識し、新しいものを使うことのメリットと比較して判断することです。

この記事が気に入ったらサポートをしてみませんか?