「Binary 2.0」「バッドノウハウ」などの提唱者として知られる高林哲氏との対談の中編です。
ハッカーに重要な技能
弾:ハッカーとして、一番重要な技能って何だろう?
高林:「粘り強さ」じゃないですか。「深追い」ってぼくは呼ぶんですけど、問題を解決する場面で、わかるまで調べると。デバッグとかもそうじゃないですか、気分転換して、ぱっとひらめくときもありますけども、自分がしでかしたバグだったら結構ひらめくこともあると思うんですけど、他人のプログラムって徹底的に調べていかないと…。
弾:もう地の果てまでも。
高林:追いかけていかないといけないですよね。そのときにどこまで追いかけるかっていう、忍耐力っていうか粘り強さが必要かなと。ぼくなんかは、今日はもうこれでおしまいと諦めるときがあるんですけど、どんどん追いかける人は地の果てまで行っちゃうんで。たいしたもんだなと思います。Binary Hacksっていう言葉はぼくが言い始めたんですけど、書籍は何人かで書いてて、その中でぼくはわりと簡単な部分を書いてます。難しい部分は鵜飼(文敏)さんとか首藤(一幸)さんとかほかの人たちが書いてるんですが、その、かなわないなと思いますね。
弾:どんなところがかなわない?
高林:追いかける力とか、どこまでも調べ尽くす力とか。
弾:自分は日本海を渡ったところでハアハア言っているけれども、あの人たちは太平洋を渡ってそのあとで大陸横断を平気でする人たちであると。
高林:うん。
弾:じゃあ、彼らに対して逆に自分はどんな点が有利だと思う?
高林:別にないと思うけど。
弾:ずいぶん謙虚ですね、それは。じゃあ逆に、さっきプログラマとして重要なことは「諦めないこと」って言ったけど、それはより「深く」っていうほうなの?
高林:そうですね。
弾:たとえばより「広く」っていう方向だとどうなんだろう。そっちは重視してない? たとえばRubyしか書けない人がHaskellの本を読んでみようとか、それはどうなの?
高林:それは大いにいいことじゃないですかね。
弾:大いにいいことではあるけれども、人の時間には限りがあるわけで。
高林:どっちかという話ではなくて、自分が一番得意そうだと思ったところに一番時間かけるのがいいんでしょうね。
弾:では、自分の苦手を克服することにはあまり時間をかけるべきではない?
高林:それももちろんいいんですけど、向いてないことやるよりはやっぱり、向いてることを極めるほうがたぶん効率的。
弾:ここで意地悪な質問なんだけど、深めていくよね、そこで突然その技術に対する需要がばったりなくなっちゃったら?
高林:それも、しょうがないかな。たとえば、弾さんがブログに書いてたと思いますけど[1]、普遍的な概念っていうのはあまり変わらないじゃないですか、そういうところだったら変わらないから。
弾:ということはつまり、つぶしが利くところを深く掘る?
高林:そうですね。
弾:まあそれが見つかるかが結構重要で。それを見つけるにはBinary Hacksを読め、でいいのかな。
高林:Binary Hacksも、普遍的とはまったく言えませんけど、ある程度、まあ10年持つくらいの話が多いんじゃないかと思いますね、たとえばgdb[2]なんか10年後もありそうですし、結構長持ちするんじゃないですか。Amazon APIに詳しくなっても5年後にはまったく変わってるかもしれないけど、たぶんBinary Hacks的なことはあんまり変わらないだろうと。それに、ツールの使い方は変わっても、しくみはそう簡単には変わらないですからね。