クフでダローバルな日記

タフでもグローバルもない

挫折してプログラミングに思うこと

突然ですが、最近プログラミングや今後の人生について考える機会が多かったので、今後の自分のためにまとめておこうと思います。 酒を飲みがてら。ジンジャーエールおいちい。

いつもとは違って人に読ませるためのものではないので、kuhudaro.mdに投稿しようか迷ったのですが、ちゃんと文章にしようと思いこちらに投稿することにしました。

契機となったはてなインターン

この話を何度もするのは鬱陶しいかもしれないが、今年の夏はてなインターンに行ったことは、やはり自分の人生でもかなりの契機になったと思う。
あのインターンで僕は、他大でプログラミングを生業としようとしている同年代の人達と、遅ればせながら初めて交流した。
もちろん、今までにも少しは交流する機会はあったけれど、あそこまでプログラミングのことだけを考えた1ヶ月はなかったし、本当に貴重な体験をさせて戴けたと思っている。

同年代の彼らとの交流はカルチャーショックから始まったように記憶している。

僕にとっての「プログラミング」は「自分が作りたいものを作る/自己承認欲求を満たす手段」であったし、それ故まず「作りたいもの」があって、その実現のために技術を習得するというトップダウンなものばかりだった。
しかしこのトップダウン的な勉強には、当時から気づいていた大きな欠点がある。 習得する知識の幅が狭いのだ。
例えば、twitterBOTを作るためにはruby,paas,cron,APIなどの知識が必要であり、webアプリを作るのであればフレームワークやhtml・css・jsなどの知識が当然必要になってくる。
しかし、逆に言うとそれさえマスターしてしまえば、すこし発展させたものはごく簡単に作れるようになってしまう。
この簡便さは一見良いことのように思えるが、実のところ全く勉強にならない。全くのコピペプログラミングでしかないのに成果物が生み出せるため、知識の幅が広がるペースが極めて遅いのである。

一方、はてなインターンで出会った彼らは、プログラミングの基礎となる知識がとても豊富だった。
それは競技プログラミングについてもそうだし、扱える言語の数についても僕は全く比べ物にならないレベルだった。
彼らと話していると常に僕は知識の乏しさに恥じ、少しバズッた小さな小さなwebアプリやtwitterBOTをさも代表作のように誇示していた視野の狭さを悔やんだ。

ただ、はてなインターンのマンガチームでそれなりの成果を挙げられたことは、少しばかりの自信につながった。 というより、そういった誉がなかったら僕は完全に挫折していただろうと思う。

夏以降の僕

はてなインターン以降は、自分の課題であるボトムアップ的で幅の広い勉強をしたいと思っていた。
また、視野を拡げるために機会があれば自分から行動するようになった。

そこでまず、「モノ」を作るハッカソンのHackUに出ることに決めた。
このHackUでも、二つのショックを受けた。
一つは多摩美大の学生たちの「プロフェッショナルさ」であり、一つは同じ大学の優秀な同期の存在である。

この東大×多摩美のHackUでは、僕と多摩美の学生三人がチームとなってものを作った。
僕は電気系にいながら電子工作をした経験が殆ど無いので、結局完成度の高いものを作ることはできなかった。 より厳密に言うならば、僕の失敗のせいで全く機能しないモノとなってしまった。
これに関しては僕が自分を責めれば良いだけなのだが、ガワを作った多摩美の学生は、僕に対して適切な指示と交渉をしてくる能力、ものを作るスピードと精密さ、そしてもちろんデザイン性・機能性と、凡そ同い年とは思えないフルスタックな人物だった。
さらに、このHackUで優勝した同じ東大工学部の学生も、ものを作るスピードやデザイン性やアイディアの豊かさにおいて僕を圧倒していた。

要するに、夏にかろうじて自分を支えていたトップダウン的な能力も音を立てて崩れ去ったのである。

それ以降、僕は自分の得意なものを見つけるため、色々なものに手を出した。
競技プログラミングやctf、人工知能の勉強やIT起業との就活イベントなど、目につく物は手当たり次第力を注ごうとして、その殆どで挫折した。
唯一情報可視化技術だけはとても興味を持っているが、これも時間の問題なのではないかと思う。

というのも、そもそも「プログラミング」自体が出来ないのだということに気づいたためである。

作りたいものを作っていた時、本来プログラミングに必要な可読性、保持性、拡張性などは殆ど無視していた。
そんなものはなくても、それなりのものは出来る。

逆に、自分が思いつくもの・作りたいものはすべて実現できるという自信もある。
随分楽天家のように聞こえるかも知れないが、実際は悲観的な自信である。 すなわち、自分が実現できる範囲のものしか、自分では思いつけないのだ。 (実際、僕の場合webサービスのアイディアは思いつくこともあるが、電子工作やネイティブアプリのアイディアは殆ど浮かばない。)

そうなってくると、逆に作りたいものをすべて作っていたら時間が無くなってしまうし、上記に上げたような必須能力は身につかないままだろう。
だからこそ、上記に言ったような「プログラミング」の方法論を身に付けたいと感じている。

はてなドワンゴ合同ハッカソンとこれから

昨日(2015/11/28)、はてなドワンゴの合同ハッカソンに出場した。 作成したものについては今度また別に記すつもりだ。
僕はほとんど優勝する気はなく、久しぶりにただ自分の作りたいものを、馬の合う友人と作ることが出来て純粋に楽しかった。

ただ、やはりここでも自分が到底かなわないような技術力を持つ人達を目の当たりにしたし、それなりに落ち込んだりもした。

しかし、最近はむしろ、そういった技術力を磨くのではなく、純粋に研究をする方がやはり僕には向いているのではないかと思い始めている。 僕はやはり勉強は好きだし、世の中に数多いる自分より優秀なエンジニアと同じ土俵で戦う必要はないのではないかと感じたためである。
もちろん、研究の世界でも自分より優秀な人はいくらでもいるだろうし、彼らに打ちのめされる自分は既に想像できる。
それでも、(この比喩は正しくないかもしれないが)パーツを組み合わせて完成品を作るよりも、パーツとなるもの、さらにはそのパーツを創りだすものというより基礎的な部分の研究に、一工学徒として魅力を感じている。

実際に研究室に配属されるのはまだ先で、研究室を選ぶのにもかなり苦労しているが、この情熱が冷めないように、「ボトムアップ」を意識したプログラマ生活を送って行きたい。