力への意志

(この記事は闇 Advent Calendar 2013 - Adventar の8日目です。)


コンプレックスの話をする。

僕がプログラミングを始めたのは、2008年の夏、大学1年の夏休みだった。大学のサークルの新歓を巡ったはいいが、どこもかしこも絶望的につまらなくて、当時エンジニアとネットウォッチャーしかいなかったTwitterをみていると、彼らがとても楽しそうに見えていた。

だから僕はTwitter漬けになって、一人でプログラミングの勉強をすることにした。大学では最低限の単位を確保しつつ、とりあえずなんでもいいからアプリを作るぞと、はてブで流れてきたホットそうな技術をひたすら手につけてみた。とにかく、新しそうなものをやるという戦略だった。


最初にやったことは、ゲーム用だったWindowsのデスクトップマシンを潰して、ひたすらUbuntu8.04をインストールしては、Railsのサーバーを建てようと試み、失敗すると理由がわからないからOSインストールまで戻して再試行していた。その過程でUNIXコマンドの使い方を否応なしに覚えた。Rubyを実際に書く段階までは進めなかったら、Rubyを書けるようにはならなかった。

それとは別に、最初に触った言語はJavaだったが、AWTで簡単なデスクトップアプリを作って、「集合知プログラミング」 を読むためにPythonを覚えてからは、Pythonばかり使っていた。

僕は最初の方にPythonを覚えたのは結構良かったなと思っていて、言語仕様が小さいからすぐに「本質的な作業」に集中できる。ここでいう「本質的な作業」とは、言語の文法や使ってるライブラリの取り回しに振り回されず、ビジネスロジックそのものを記述する行為のことだ。その先にアルゴリズムとかデザインパターンとかがあり、その需要を感じ取れるようになるのは、ある程度経験値をためてからだ。

ここに至るまで、ものすごく時間がかかる。具体的に言うと、ここから1年ぐらいはいろんなサンプルコードを写経しては、これなんで動くんだろうといじくり回していた。僕は周囲に誰も教えてくれる人がいなかったから、些細なミスで簡単にこける。些細なミスの解決法は、ギーク達は教えてくれない。そんなことにいちいち気にかけていたら時間が足りないからだ。でも、僕にとってはその解決法を知ることが、その時は世界の何より大事なことだったりするわけで、アンバランスに感じていた。

たくさんの言語を覚えた人はもう忘れていると思うのだけど、「現行のプログラミングのパラダイム」に対して初心者が覚えるべきことは膨大で、なんでもいいから手に馴染む言語を一つ持つということは、何にも増して必要なことだと思う。僕はそこに至るまで寄り道をしすぎて、かなり時間を無駄にした。

ここで時間があいて、プログラミングをやったりやらなかったりしていた。大学3年になった頃、Pythonなら不自由なく使えるようになっていたのだが、僕はその「本質的な作業」に向かい合った結果、自分のアイデアのなさとか、ただ漠然とプログラミングという行為に憧れていただけなんだなという事実に気づき、絶望した。

今になって思うのは、「斬新なアイデア」ってのは突飛な発想をすることではなく、積み重ねたファクトからそのとき必要な「何か」を推論することによって、自分の実力に応じて勝手に需要が発生するものだ。それに気づけなかった。それに関して自分は無能であると思う。恥じるべきだと思う。

コンプレックス

憧れを語るのはある種の無力の表明だ。だがそこへ至る努力を誰が否定することができるだろうか。背伸びし続けていると、背が伸びていることもある。

僕は同世代のプログラマに対して常にコンプレックスがあった。Twitterで最初の方に知り合った@ymrlは最初からコード書けたし、彼はギークがたくさんいる研究室にいたから羨ましかった。なんかの花見で知り合った @trapezoidと@uzzu は、高専上がりで2009年で既にドワンゴで仕事していた。

最近でもコンプレックスを持つ人はいるが、直近だと個人の名前を出すのは恥ずかしいので言わない。さらに、同世代より下にさらにできる奴らがいる。悔しい。

でも、それはインターネットでは、いきなり勝負のレベルが「日本」や「世界」になるからだってのもある。スト2が地元で一番強いやつが、調子に乗って不用意に出場した地方大会で叩きのめされるようなものである。インターネット以降の世代は、最初の入口からして本物のトップを目の当たりにして勝負の世界に挑まねばならない。そこで自分にできること、できないことを考え、取捨する。自分が勝負できる技術はなにか?

僕はといえば、どうだ。ブログで煽り記事を書いてビューをとってセルフブランディングしたりして、実態以上に自分を大きくみせることに労力をかけ過ぎてはいないだろうか?

自分はもともと文章を書くことに抵抗がなくて、人に受ける文章みたいなものは、ネットウォッチの結果、ある程度パターン化しきってると思ってる。自分に何かの才能があるとしたら、その方だ。あると便利だが、それは僕が欲しかったものではない。

ほんのちょっとの主張と、読み応えを演出する分量と、ポール・グレアム風の叙情的なフレーバーを混ぜて、読者が消費しやすい形で提供する。僕は名前と少しの定期読者を得て、読者はそれなりな何かを読んだ気になって帰ってもらう。そんなことを繰り返して一体何の意味があるのだろうか?

今日は闇AdventCalendarなので、そんなこと考えずに読みにくい文章を淡々と重ねてるだけなんだけど、実力以上に煽る能力を身につけてしまったから、道化と化してる部分が結構あると自覚していて、本当の実力を知られたら、絶望させてしまうのではないか?という不安は常にある。

で、そのコンプレックスの反動と、自分だけが勝負できる技術を身につけたい、という気持ちが合わさって、変な言語や、変な環境に手を出して、結局うまく扱えずに自滅していることがよくある。結局、そういうものを扱うのは、総合的な体力がいる。誰かのひいたレールの上以外を走るには、茂みの中の小道をみつける野生の嗅覚が必要になる。そんな単純なことに気づくのに数年かかった。

お前の価値を見せろ

世の中が抽象的なフリした紛い物であふれる中、プログラミングは本物の技術だし、僕はなんでもいいから本物になりたかった。そこで本物の振りをした。本物のふりをしている中で、いつか本物になりたい。昔はただ絶望していた。今は、それほど絶望してはいない。

そしてその気持ちが、他人や、社会にも向かっていることがある。俺が本物になろうと努力している間、お前は何をしていたのか、お前は何を提供できるのか?

別にすべての人間が自分だけの価値を持つ必要ないんだけど、例えば起業家志望とかで、自分をエンジニアとして使いたいという人間、特に学生起業家みたいな連中はそういう人間がたくさんいて、彼らはだいたい偽物で、バカで無能で、なにもしてこなかったやつで、就活でサークル活動頑張りましたみたいなこと言っちゃっうんだけど、高い意識で騙せる奴は騙せただろうが、俺にエゴと意識のぶつかり合いで勝てると思ったのかクソが。みたいなことが多々あった。

お互いに領域について解釈できないときは、へーそうなんですね、って距離をとるしかない、たまには本物がいるけど、金を稼げる本物かってのは別の問題で、社会は厳しいなって思う。金になる本物ってのは、本物の詐欺師であるとも思う。

世の中だいたい、だいたいそんなもんばっかで、辛い。