新社会人の君へ-disるということについて

「ご趣味は?」と聞かれて「Lispをdisることですね(キリッ」と答えてしまい、
合コン開始4秒で蚊帳の外に放り出されるあんちべです、こんばんは。


今から長い文章を書く。
結論だけさっさと言っちゃうと
「まぁ、初めのうちは、あんまり『○○は使えない』とかdisらない方が良いよ」の一言だ。
さぁ、それで話しはおしまい。もし暇だったら続きも読んで欲しい。
(あと、この文章はたった一人のために書いた。
ちょっと妙に聞こえるところもあるだろうけど、そこは聞き流して欲しい)


私はよくいろんなものを嫌いだ嫌いだとdisる。
にわかベイジアンが嫌い(話すと長くなる)、Javaが嫌い(JVMは愛してる)、Perlが嫌い、
MavenとかCVSとかが嫌い、アジャイルアジャイル言ってる人が嫌い(アジャイルが嫌いなわけじゃないよ)…
言い出したらキリがない!毎日新しいdisりの種が沸いてくるんだ!
何度か様々な人に本気で怒られたこともある。
JavaPerl書いてる人に失礼だと思わないのか!?」
全然思わない。
自分の好みを表明するということは、自分の価値観や評価軸の表明だ。
あるいは、私が何を大切にし、何を切り捨てても良いと考えてるのかを伝達する行為だ。
「俺の気分を害するから、お前はそれを嫌いだと言うな」と
他人に言って聞いて貰えるのは、黄金郷に住む王様くらいだ。
言わない方が波風立たなくていいんじゃないかなと思うときはあるし、
それについては全くその通りだけど、
何が好きか嫌いかも自由に言えないのはハードに窮屈だ。
なので私は毎日何かをdisったり、愛を表明したりしているし、することが出来る。
自由だ!実にハッピーなエブリデイだ!わぉ!


だけど、私が滅多にしないdisり方がある。
○○は駄目だ、使えない、役立たずだ、というやり方。
つまりは客観的な評価だ。
さっきも言ったように、私はJavaが嫌いだ。書いてて嫌になる。
でもJavaは駄目な言語だとか使い物にならないとか言った覚えはないし、
今後も多分言うことはないだろう。
Javaは速い、ドキュメントが豊富だ、沢山の使えるライブラリが揃ってる、
蓄積されてきた過去の資産がある、エンジニアが集めやすい…。
客観的な利点なんて幾らでも上げられる。もちろん欠点も色々あるけどね。
Javaには沢山の代え難い利点があることを私は認識している。
していながら、あくまでも「個人的趣味に合わないから嫌いだ」と言っている。
決してJavaには利点なんて皆無で古くさい退屈なところしかない、
そんなことは一切言ってない。
いいかい、そいつへの主観的な好き嫌いを表明することと、
そいつが客観的に有用かどうかについて言及することとは全く違うんだ。
前者は口にしても高々反感を買うくらいだが、
後者はエンジニアとしての質を問われることになる。
Javaにはこういう利点もあるけど、こういう欠点もあって、
トータルで考えると欠点の方が多いから駄目だ」
はまだいい。
解釈や重みの付け間違いがあったとしても、
そこは大目に見られるだろう。
Javaには利点なんて無い、ただ単に昔から使われてるから、
惰性で使われてるだけに違いない」
と利点を認めない態度、それは止めておこう。
単に君がJavaの知識がない若造だと周囲に知らせるだけだ。


君は今までイケてる言語やイケてるフレームワークを駆使して
イケてるWebアプリなんかを作ってたかもしれない。
それはとても素敵なことだ!最高に素晴しい!
君はそれを誇るだろうし、私も君を誇らしく思う。
そして最先端を走る君は、社会で広く使われているとある言語やツールをちょっと試してみて、
「あぁ、こいつはとろ臭いな、クールじゃない、こんなの使う奴は四流のロートルだけだ」
そう思ったかもしれない。いや、君のその判断は間違っちゃいないよ。
君にとってはその通りだったんだ。
あくまでついさっきまで学生だった君にとってはだけどね。


個人でやっていくのと、大きな企業でやっていくのとでは、
例えば同じようなWebアプリを作ると言っても、やることが全然違う。
まずハードが違う。
君は2,3台の自家製サーバを立ててたかもしれない。
企業ならサーバセンターを作り、自家発電の装置を備え、地震対策をし、とんでもない台数のサーバを確保する。
(おっと、クラウドを利用する話になると風呂敷広がり過ぎちゃうから自前サーバの話に絞るよ)
さぁ、そこで君は「○○より▼▼の方がコストパフォーマンスもいいし速いのに、なんで○○を使うんだ!」と言うかもしれない。
君の言う通りかもしれない。
インフラ調達部がどうしようもない間抜けで、わざわざ糞みたいな石を騙されて導入したのかもしれない。
でもさ、まぁ、企業には色々あって、一つ一つのコスパが悪くても、
百台単位でサーバ調達出来るだとか、
大規模数買うとディスカウントが効くとか、
契約しやすいであるだとか(某D社では、納入遅延しても文句言うなよという契約があったりするんだ)、
信頼性であるとか、
個人での購入とはそれは全然違う問題点や利点が出てくるんだ。
あぁ、そうそう、信頼性ってのは忘れちゃいけないよね。
個人のサービスでサーバの死活管理はそれほどクリティカルな問題じゃないかもしれない。
それよりクールなコード書いたりアイデア練ったりする方が、楽しいし、見栄えもするし、
はてブで1000ブクマとか付いたりして楽しいよね。
でも企業では全く違う。大抵のサービスは、決して落ちてはいけない。
落ちるということは、その間の利得が0になるし、
提携している広告主や代理店から賠償を求められたりする。
それはとんでもないことだ。
そんなの嫌なので、落ちないようにしたい。
君の個人サービスなら、真夜中に落ちちゃったとしたら、もう眠いし明日作業しよっかなで済むだろう。
でも企業のサービスではそんなことは言ってられない。
真夜中だろうが正月だろうがクリスマスだろうが、落ちたらサーバセンターに人員投入、復帰するまでぶっ通しで作業だ。
そんなの、作業員も大変で辞めたくなるだろうし、企業としても深夜手当出すの辛いし、いいことなんて一つもないよね。
落ちてはいけないんだ。落ちてはいけないんだ。
サーバの死活問題は、全社員の死活問題になるんだ。


ハードが違うと、ソフトまで色んな影響が出てくる。
君の開発用マシンやサーバのスペックはどんなもんだった?
へぇ、16GBもメモリを積んでるのか。中々張り込んだね!
でも企業のサーバセンターのマシンだと、64GBや80GB、
いやいや、三桁GBクラスのマシンがごろごろしてたりするんだ。
しかもそれが分散処理できるような構成してたりね。
目玉が飛び出るようなスペックになるんだ。
するとどうなるかっていうと、メモリを馬鹿食いするようなアルゴリズムが実用可能になる場合もある。
そしてそのアルゴリズムはメモリを食いまくるという欠点はあるものの、
それ以外は非常に優秀であったりするとかいうケースもある。
君の高々十数GBのメモリでは糞みたいな動きをするとあるライブラリが、
そういう超ハイスペックなクラスター群に乗っけると、
途轍もなくパワフルに動くこともあるんだ。
で、大企業の大システムで大規模なデータをぶん回す時は、そういうことしてたりするわけだね。



やぁ、長話だったね。回りくどくてごめんよ。
もっとストレートに言おう。
そして滅多にしないと言っていた客観的評価としてのdisを君にしよう。
君はまだまだハッカーぶってるスクリプトキディのそれでしかなくて、
営利的な大企業に勤めるエンジニアのものではない。
君が今手にしているそれは、もしかするとお気に召さないのかもしれないし、
嫌いだと言うことは幾らでも表明して貰って構わない。
君は優秀なエンジニア候補だ、嫌いなら好きになるよう改善するなり別のもの見繕うだろ?
ただ、「使い物にならない」と口にするには、ちょっと色んな意味で早計に過ぎるね。
君は優秀な学生だったが、君の入った大企業では、君以上にコードが書ける人は幾らでもいるんだ。幾らでもね。
もちろんそれは現時点での話であって、君が成長したら乗り越えられる可能性は十二分にある。
でも残念ながら、それは未来の話であって、今じゃない。
君以上のエンジニアが、なぜ君が糞だと言い放った様々なツールやライブラリを利用しているか、
もう少し考えた方が良いだろうね。
間違ったdisをしてしまうと、君はパワーのあるエンジニアから
「奴は話す価値のないうすのろだ、理解力に乏しいしイメージが貧困だ」と
今後長きに渡って低い評価を受け、困ったことになるだろうね。
使えないかどうかの評価を口にする前に、
大規模な開発のやり方を学んでみよう。
その上で糞だと思うところがあれば、その時改善していこう。


ここまで読んでくれてありがとう。
中には「お前の想定している企業って、Web業界の中でもごく一部のクラスタだけだよな」
と言われるかもしれない。
全くその通りだ。
冒頭にあるとおり、この文章は実はただ一人に向けて書いたものだ。
(ちなみに、その対象者は弊社の新人でも関係者でもない。個人的な知り合いだ)
もしかして、同じような企業で同じくらい優秀な新人が同じようなdisをすることによって、
その新人の評価が下がってしまうことって他にもあり得るかな?と思って公開した。


私は明日も気に食わないものをdisるだろう。
disってdisって、何がどう気に食わないのかを明らかにし、
それを心地よいものへと改善していく。
肉食動物の肛門に詰まった糞の固まりのようなコードの断片を、
ラッカーやラファティのSF小説のようなとびっきりの物語に変えていく。
そして最終的に、ハッピーな環境を作り上げてハッピーなサービスを構築して、
ユーザの皆様にハッピーをご提供して差し上げるんだ。


※追記
余りにも長いので要約verを用意しました

※追記2
disるということについて-あんちべ氏のあの記事を読んで思ったこと