「目新しい技術」を避け「退屈な技術」をソフトウェア開発で採用すべき理由とは?
「目新しい技術」はそれ自体が興味深いものであるため、メリット・デメリットを度外視して試しに使ってみたいと考える人もいるはず。しかし、エンジニアのダン・マッキンリー氏は、企業が開発を行う際は「退屈な技術」を採用すべきだと主張し、その理由を説明しています。
Dan McKinley :: Choose Boring Technology
https://mcfunley.com/choose-boring-technology
http://boringtechnology.club/
最先端の技術は目新しく、時として「銀の弾丸」のように見えるもの。開発に利用する技術を選定する際、技術そのものに対する「興味」が選定基準に含まれている事例がまったく無いとは言えません。
しかし、企業が「興味をそそる技術的なイノベーション」そのものに集中すると、企業の成功を遅らせるどころか、失敗にすらつながるとのこと。世にある企業の大多数は「世界の金融を再考する」「ウェブ上の支払いを再発明する」といった、大きな目標を掲げているはずであり、技術そのものは問題ではないはずだとマッキンリー氏は主張しています。
MySQLやPHPなど、いわゆる「枯れた」技術は、確かに目新しさに欠けるかもしれません。しかし「退屈な技術」は必ずしも「悪い技術」ではないとのこと。「退屈な技術」を採用する利点について、マッキンリー氏は大きく分けて2つ主張しています。
1つ目の利点は「問題に対する解決策が世に知られている」点であるとのこと。マッキンリー氏は「理解できない問題」を「解決策が知られている」場合と「解決策が知られていない」場合に分類し、ソフトウェアのバグのほとんどは「解決策が知られていない」問題であると指摘。画像は「退屈な技術(Boring tech)」と「目新しい技術(New, shiny tech)」について、それぞれが抱える問題の量をイメージ化したものです。
青色のグラフは「解決策が知られている」問題の量を、紫色のグラフは「解決策が知られていない」問題の量を指しており、目新しい技術の方が「解決策が知られていない」問題をはるかに多く抱えていることが表されています。
マッキンリー氏が主張する2つ目の利点は「組織全体のコスト最適化を図れる」点です。企業が新しい技術を導入すると、その技術に対する運用やテストに追加のコストがかかります。つまり、複数の開発で「枯れた技術」を採用することで、大幅なコスト削減が可能になるというわけです。
しかし、多くの人は「Rubyを使用する企業がPythonを導入する」といった簡単な事例ではコストを認識できるにもかかわらず、「Redisを追加する」といった事例ではコストを正しく認識できなくなるとマッキンリー氏は主張。それぞれの問題に対して最適な技術を用いる近視眼的な観点ではなく、運用中のコストも含めた大局的な判断が必要だとマッキンリー氏は語っています。
近視眼的に新しい技術を導入してしまうことを避けるためには、技術的な問題が「すでに導入している技術」で解決できないかを話し合い、新しい技術が誰にとって必要であるかを明白にすることが大切であるとのこと。マッキンリー氏の経験によれば、話し合いの末「不可能」という結論に達することはほとんどなく、既存の技術を用いた創造的な思考で解決できる場合が多いそうです。
「技術選択に注意を払うことで、開発は本当の意味で自由になります。技術自体に集中することは、意味のないことです」とマッキンリー氏は語っています。