退屈な技術(Boring tech)の意味
- NetBSD が「退屈」だというのは最高の賛辞である
- システム管理者が求めるのは予測可能性であり、驚きではない
- 技術が退屈だということは、信頼性が高いという意味
- 多くの人がテストし最適化してきた結果
- 予期しない動作や文書化不足の問題が発生する可能性が低い
- 問題が発生した際に助けを得られるコミュニティや資料が存在する
技術環境の複雑性
- 技術は単独で存在するのではなく、さまざまなシステムと相互作用する
- 構成要素が多いほど、予期しない問題が発生する可能性が高まる
- 新技術が常に最善とは限らず、実証済みで安定した技術のほうがより良い選択になることがある
- Kubernetes クラスターを数台の仮想マシンに置き換え、安定性を高めた事例 が存在する
「退屈な技術」への反論と解釈
- Robert Roskam の主張
- 「退屈な」技術 = 長い間存在してきた技術、という前提は誤りかもしれない
- 普及していることが、そのまま理解されていることを保証するわけではない
- 古い技術が常に保守しやすいとは限らない (例: COBOL システム)
- 反論
- 古いからといって退屈なのではない (例: Oracle は複雑で保守が難しい)
- BSD は退屈な技術だが、Linux ほど普及しているわけではない
- 重要なのは年齢ではなく、成熟度(maturity) である
結論: 退屈な技術 = 成熟した技術
- 古い技術 ≠ 成熟した技術
- 成熟した技術 = コード、文書、コミュニティ、運用経験が蓄積された技術
- NetBSD が退屈だというのは、信頼性と安定性が高いことを意味する最高の賛辞
5件のコメント
「退屈な技術」という表現はやや否定的な印象を与えかねないので、「成熟した」という表現のほうがよいですね。
Oracleは複雑で、保守が難しいです (涙)
退屈な関係は古い関係ではなく、成熟した関係だ
以前GeekNewsに投稿されていた
業界で10年過ごした後、考えが変わったソフトウェア開発トピックたち (https://ja.news.hada.io/topic?id=19081) で、
Javaはつまらないからこそ、むしろ優れた言語だ
という文章を思い出しますね
Hacker Newsの意見
退屈な技術が良いと思う理由は、製品の実際の技術に集中できるからだ。SaaSアプリを運営しながら、製品に関わるさまざまな分野で最先端の作業をしていると考えている。データベースやバックエンドフレームワークのように「裏側」で動くものは、できるだけ退屈で安定した状態に保ちたい。プロジェクトを一人で進めると時間は非常に限られる。顧客が気にしない部分をいじるより、製品の面白い新機能の開発に時間を使いたい。顧客は、私が Node の代わりに Deno や Bun を使っているか、NPM の代わりに pnpm を使っているかを知らないし、気にもしていない。彼らが知っているのは、私のアプリがどれだけうまく動くか、どんな機能があるかだ
この意見には同意するが、個人的な経験から反対側の見方も提示したい。多くの場面で、誰かが自分のやり方、つまり組織に個人的なソフトウェアの好みを選ばせたいときに、それを「退屈な」選択と呼ぶ。「退屈だ」と呼ぶことで、その人の 好み を、多数派に受け入れられている成熟した自明の決定として特徴づけ、他の選択肢は単にソフトウェアエンジニアが光り物を追いかけているだけだと言う。しかし実際は、ほとんどの場合もっと複雑だ。どちらの解決策にも長所と短所がある。異なる人々に対して、より強く、あるいは弱く響く価値の交換がある。「退屈で、だから当然より良い」という主張には注意すべきだ。深い議論もなく他人の好みを自分の好みに置き換える手段であってはならない。そうでなければ、実質的な主張を示さずに議論に勝とうとする、別の傲慢な試みにすぎない
「退屈な」技術に「安定している」という要素も加えたい。特にここでの「安定」は「クラッシュしない」という意味ではなく、「変わらない」という意味だ。一般に、古く確立されたものにそれを見ることができる。しかし、それが保証されているわけではない。多くの場合、それは技術の管理者が特定の行動を取った結果だ。これはしばしば下位互換性の観点で説明できる。安定性を得るために追求できる明確な行動だ。ただし、同時に範囲を大きく制限するものとも見なせる。たとえば、私たちはスケールについて語るのが好きだが、決して目にしないような規模のために設計し、構築する必要はない
永遠の論争は、古いもの対新しいもの、退屈なもの対面白いものではない。成熟は年齢に関係なく成熟だ。依存関係を更新するとシステムが壊れたり、曖昧なデフォルトによって予期しない動作が導入されたり、抽象化レイヤーをたどることを強いられるシステムは成熟していない……(Spring と Java のエコシステムを見ている)。それは古くて不安定なのだ。安定性、予測可能性、よく設計されたシンプルさが成熟を定義するのであって、年齢だけではない。Python は成熟していて退屈だろうか? ツールチェーンの問題や、さまざまな種類の頭痛の種がある……。Go や Rust のような新しい言語は、こうしたツールチェーンの問題をすべて解決し、最高の形で本当に退屈なものにしている
退屈なのは、仕事を探していない限りは良い。退屈な技術に固執すると、徐々に自分を雇用市場から外してしまう危険が大きい。次の雇用主は、あなたが優れたビジネス価値を提供したことなど気にしない。多くはきらびやかな新しいものを欲しがる。今の雇用主の求人広告を読むと、自分が採用されるとは思えない
GitHub では、プロジェクトが成熟しているのか死んでいるのかを見分けるのが難しい。コミットが何のためのものであれ、誰かが監視して保守しており、新しい問題も素早く解決される可能性があるというシグナルだ。つまり、新しいものはその点で常に有利になる
退屈な技術を使って昇進したり採用されたりした人はいない。私が多くの求職応募に対して返事をもらえないのは、自分がやってきた仕事の大半が「退屈」なもので、自分が書いたオープンソースコードの大半がシェルスクリプトだからだと思う。すべては素晴らしく動き、バグも保守コストもまったくないが、魅力的ではない。知的エリート主義が私の役割を定義してきた(「DevOps Engineer」は文字どおり「クラウドのシステム管理者」だが、私たちはシステムを管理することを <i>恥じるべき</i> なので、そう言えない)。履歴書に「Python と Shell」よりも「Go と Rust」が多ければ、すぐに採用されていたはずだと確信している
退屈な技術は仕事を終わらせ、私たちが解決しようとしている問題に集中させてくれる。その代わりに不要なことをしなくて済む
この話題について Ask HN をしようと思っていたが、この投稿は私の質問をするのに素晴らしい場だと思う。あなたにとって、使わずにはいられないほど退屈な技術とは何だろうか? それをどれくらい長く使ってきたか? 私にとっては Vim、C、Python、Fedora、mutt のようなもので、25〜30年使ってきた。あなたはどうだろう?
新しい技術の利点がリスクを上回るなら、それを使う。課題は証拠を評価することだ。新しい技術は利点を誇示するが、欠点はそれほど大きく宣伝されず、投資した後になって発見されることが多い。「退屈」か「面白い」かというのは、誤ったフレーミングだ