KDOC 4: テッキーな人たち
高校時代、数学がさっぱりできなかったので、他の人より頭が劣っているのではないか、とよく考えていた。仕方ないので大学は文系の学科に進んだ。あまり興味が持てなくて、ずっとコンピュータを触っていた。卒業間近にして仕事を決めるとき、やっぱりプログラマーになろうと考えて仕事を探した。独学でいくつか作ったものがあったので、職を得るのはそれほど大変でなかった。
実際に職業としてやってみて、少なくともWebプログラマーには数学は必要ないことがわかった。誰かの作ったライブラリのAPIを呼び出すだけだ。ときたま耳に入ってくる、同世代のコンピュータ科学専攻の人たちがすごいことをするのを脇目に見ながら、しばらくは数学などのことについて忘れていた。ただ身近にいなかったために、自分ができなかったことをあっさりとやってのける人々がプログラミングをやったらどうなるのかを考えたことはなかった。努力はしていたので、漫然と、自分は彼らとそう大差ないところまでいけているのではないか、なんて考えていた。
新しい職場では、数学や科学をバックグラウンドにする人たちと働くようになった。彼らは驚くほど優れていて、オタクだった。ライフゲームのマス目について、図や数式を交えて小1時間議論ができる人々であった。同じものを見ていても、明らかに見え方が異なるのを感じた。彼らは数字の並びや図形を自在に操作し(頭の中だけで)、それを言語化して議論しあって正解に近づけていく。
プログラミングでもいかんなく発揮され、設計段階での奥深く考察を非常に早いスピードでやってのける。先に考えて議論しているため詰まることが少なく、最短距離で仕事を終わらせる。言語の1つ1つの挙動に対する理解が深い(単なるマス目だけで数学的議論ができるほど抽象化して考えられるのだから、そうなるだろう)。説明の語彙が多いため、すばやく疑問やつまりの助けを求め解決し、前進する。
要するに異次元に仕事ができた。彼らを見たとき、自分はいかにしょぼい存在か、と凹んだ。
彼らとの違いは何なのか、近づける方法はあるのか考えた。もっとも大きな違いは、何回かふれたように、マス目ひとつで議論できるような、数字や図形に対する強い興味に見える。それがあるからこそ深く考え、勉強の数学だってできるようになったはずだ。頭脳や才能といったこと以外で、建設的思考で彼らから学べることは、興味の方向性だ。単純に見えることでも興味を持ち、視点を変えれば直感に反することや、不思議なことがあるはずだ。たかだが直交する2本の直線に着目して考え会話できるのだから、オレだってもっと自分の興味のある分野を掘り下げることができるように見える。そうしてもっと詳しくなれるように見える。
行動の観察。
- いくつもの問題の解き方を持っている
- 実装できるのは当然で、どの方式が優れているかを議論し、複数を比較する
- 抽象的な物事を議論できる
- 議論するための語彙・前提がある
- 数学的知識を使って問題を抽象化して解く
- 一見何の関係もなさそうなことに応用する
- どの分野でも理解が早い
- 言語化が異常にうまい。素人にも理解を与えられる
- 雑な理解をしてない、明確に理解して応用までやる
- わからないところを明確に伝える
- 背景知識のない人にわかりやすく説明できる
- 用語や仕組みへの解像度が高く、応用できる。日常生活で使う
- ライフゲームの実装やルールの定義ですごい盛り上がれる。イカした方法が少なくとも5つ出てくる。単純に見える図形や数字について、興味を持ち深く考えられる
- LinuxとUnixのファイルシステムの実装の違いについて盛り上がれる
- ああわかった、で終わらずにもっと深くどうなっているのかを探求する
- プログラミング言語の仕様の深い部分を知っている。マイナスの値に対して余りを求めたときの言語ごとの仕様の違いを知っている