ホビーノウハウ
という単語はどうかなぁ、と思いました。バッドノウハウは、明らかにややこしくて、何かがおかしいんだけど、歴史的な理由でしかたがなく、 workaround としてイヤイヤ学習したものの、その知識がありがたがられて、また広がっていって、「歴史的な理由」を強固にしていく、というような主旨だと思います。
ホビーノウハウという単語は C++ の template meta programming はバッドノウハウだ、という主張を聞いて、少し違うんじゃないかな…と思って考えました。最近 PKU でやっている C のコード短縮なんかのコツ、例えば括弧は可能な限り除去する、とかPKUでのmainの第一引数は必ず1だ…とかもバッドノウハウと一般的に言われているものとは少し違う気がします。
以下のような点で違いを感じていて、バッドノウハウと同じ扱いにするのは抵抗があります。
- 趣味性の高さ。簡単な問題をわざわざ難しく解いて喜びを覚えるようなこと。
- 実用性への無関心。あくまでパズルとして楽しんでいるのであって、実用は二の次。もちろんたまたま実用になることもある。
- 実用性が少ないため、あまり無闇にありがたがられず、バッドノウハウのように「歴史的な理由」を生成したりはしない。
共通点。
- バッドノウハウとは近い点も多い。 TeX はバッドノウハウ主神の一つですが、 TeX で書いたハノイの塔はホビーだと思う。あと、人によってはホビーなものが人によってバッドだったり。
- 仕事ではやりたくない。仕事では、保守しにくく妖しげな脆い技術に頼りたくない傾向が強いかと思います。
その他の特徴。
- こんな役に立つんだよみんな使え現象。「MPL でカックロ解けたからみんな使えー」とか「Haskell の無限リストで素数のリストを作って Haskell はこんなに素晴らしーからみんな使えー」みたいな。
- ゲームのやり込みに近いものを感じる。簡単なゲームをわざわざしばりをかけて解く。
ということでヘンな人があやしいことをニヤニヤしながらやっててもそっとしておいてあげてください。調子に乗ってあやしげな段階で仕事に使い始めたりすると有害かもしれませんが、そうでないなら無害なはずです。お願いですから放置して下さい。
というか「それ何の役に立つの?」とかいう質問は割と萎えるというか。はぁ、あなたは役に立つためプログラム書いてるんですか。僕は役に立たないことがだいすきです。好きでやってるんですからいいんです。あなたは役に立つことが好きなんですか。
まとめると、楽しさと役立ち度は負の相関がありがちだとか。結局いつも通りの主張で終わった。役に立つことを前提にして、その中で楽しさを探すのが大人ですが、まぁなんでもいいです。