1.つかみ
●自分のこと
わたしは、50代に手が届く歳のプログラマです。これからある思いつきを述べたいと思います。あくまで「思いつき」なので、出典もなければソースもありません。 ですので、即コメントをつけられても議論が成立する目算も立ちません。あえて「コラム」という形式で開陳したいと思っています。
主張の骨子とは、
- 「きちんと見ることを尊ぶ」のは、プログラミングにとって不利であり、反対に、「きちんと見」ないのは、プログラミングにとって有利である
- 自転車(など2輪車)に乗るときのドライバーの「見方」は「きちんと見る」とは違い、プログラミングにとって有利な見方である
というものです。
わたしは学生のころ、東京都下の多摩丘陵と狭山丘陵に挟まれたあたりに住んでいたのですが、自転車が好きでよく遠出をし、武蔵小杉や、新宿や、奥多摩や、町田や、川越なんかに行きました(最大範囲)。
もちろん小学生のころはそんなに遠出はしませんでしたが、休日には親と近所の川なんかまで行って、うどん屋で天玉ざるなんかを食べるのがレジャーでした。
そうしている内に、どうも自分は他人と比べて「見方」が違ってきてしまったようです。
どんなドライバーでもそうでしょうけれど、
- 運転中は個々の風景をきちんとは見ない。風景はどんどん後ろに飛んでいくので、きちんと見ることはそもそも不可能
- その代わり、数秒先の交通のフローを予測したりする方を優先する
のは確かだと思います。
普通、4輪車や2輪バイクでは、免許を取って乗るもので、「見方」が固まった後に乗り始めるわけですが、自転車だと小学生でも乗って構いません。そのためわたしは、「きちんと見ないこと」に極端に慣れてしまい、日常生活でもその見方を優先する様に三つ子の魂に刻まれてしまったようです。
(具体的にいうと、「常に視野全体をパンフォーカスで見て、物の形より加速度により気を取られる」という「見方」だと思います。定性的で分かりにくい説明だとは思います)
●疑問に思ったこと
わたしは50代に手が届く歳なのに、いまだにプログラマをしています。それなりに手早くプログラムを作れます。何のかんのいって、プロのプログラマは手早さが勝負です(そうでなければ、仕事は他の人に割り振られることになるからです)。
ただし、知能は並です。どこをどういいつくろっても、決して突出しているわけではないのは間違いありません。学校の成績でも折り紙付きです。しかし、プログラミングの手早さはかなりのものです。それも、20年以上の実績からそういい切って間違いないと自負しています。
では、仕事の早さが「知能」によるものでないなら何が違うのか? それこそ昔から
- 属人化はまずい
- 忙しい人間でもぱっと見て分かる資料を作れ
- 「論文」なんか誰も見ない
- 後輩ができるようにしろ
といわれ続けてきましたが、全然分かりませんでした。雑誌やインターネットの記事や単行本、あらゆる媒体で「生産性の差はどこから生じるのか」をあたってみたのですが、答えをくれたのは0件(1兆倍しても、1兆乗倍しても厳密に0となる件数)です。
「生産性の差」がどこから生じるかは、万人に寄与する情報ですから、いつかは必ず世に出るはずです。しかし、「厳密に」0件です。なにかが変ですし、分からないと成果も出ないので怒られて損。それでずっと考えてきました。
●ひらめいたこと
転機は、(会社員になってから自転車に乗らなくなったのですが)健康診断で「メタボ」といわれ、人間ドックの別室で「何かしろ」と詰問され、クロスバイクを購入して、1カ月に1度乗り始めた時点でした。
クロスバイクの掲示板に何回か書き込みやレスするうち、(昔は明示知としては気付かなかった)「自転車などに乗っているときの『見方』の違い」に、はたと気付いたのでした。特に、交通が錯綜して、まわりじゅう交差点(四つ角の意味でなく、他車とぶつかりうるすべての点の意味)だらけになった場合。自分自身でも気付くくらい「きちんと見ていない」ことを再認識しました。
(本当に危険な時は、1秒にも満たない時間で目の前が灰色になっていることすらあります。運転中はそれこそ常に全方位直接目視を心がけ、1秒未満を稼げるようにしておくべきなのは、むべなるかなです)
そして、運転者としての状況と、コーディング中の状況の強い類似性も認識しました。
逆に考えると自転車(など2輪車)に乗るときのドライバーの「きちんと見」ない見方は、プログラミングにとって有利であるということ。このドグマを導き出したのでした。
まぁ、つかみはこんなところです。次回は、「きちんと見ることを尊ぶ」人がなぜ不利か、について考察したいと思います。
●注意書き
もちろん、自転車(特にスポーツ自転車)は、反則金制度も、示談特約つきの保険もないという、非常に高リスクなスポーツです。また都心で走る場合、どう考えても小型二輪免許の上位技能を必要とする(原付なら、他車も車として尊重してくれるが、自転車だと「よけさせる存在」としか見られない場合が多く、そのよける技能分上乗せ)ため、わたしとしては決して手放しでは薦めません。
●コラムのコメント欄の方針
コメントに対し、当意即妙の回答を、それなりのタイミングでする自信がありません。
ですので、このコラムで、
- わたしは基本的にコメントに答えない
- コメントを書く人は、回答がない前提で議論を進めていただく
とさせていただきます。
コメント
やまもと
周りを見ないで、前に進む。自転車なら、自分が怪我をするか運悪く人にぶつかっても、死ぬほどの事故にはならないでしょう。しかし、車だと危ないのでは?ちなみに、私も50歳前のプログラマで、頭はよくないけど、プログラムは結構速いと思っています。しかし、超優秀なプログラマが書いたもので、『頭の中でプログラムを作って、それをPCに打ち込むのだけど、打ち込むのがもどかしくなる』なんてかいてあるのを読んだことがありますが、私は、その境地は経験したことはありません。自分は、打ち込んでそれを見ながら論理を考えるタイプです。多分、普通のレベルのプログラマなのでしょう。
通りすがり
>何のかんのいって、プロのプログラマは手早さが勝負です
>(そうでなければ、仕事は他の人に割り振られることになるからです)。
私は、手早さを未だに評価のものさしにする日本のIT業界に対して、ある種の哀しさを覚える者です。
日本ではプログラマは、SEから言われた事を、ただ単にプログラムに焼き直すだけの単純労働者である、という認識が一般的に普及しており、当のプログラマもそれを良しとしているように思えます。
アメリカではSEは存在せず、全ての技術者がプログラミングも行うソフトウェアエンジニアで、頻繁に変わる顧客要求に柔軟に対応できる(Strong Cohesion & Week Couplingを実現する)設計能力や、それを実装するプログラミング能力によって評価されます。
この10年間の間に、デザインパターンやUML、リファクタリング、テスト駆動型開発といった新技術を次々に開発し、エンタープライズシステム分野での著しい生産性向上を実現してきているアメリカに比べて、リファクタリングもテスト駆動開発も出来ないプログラマが何と多いことか、またそうしたプログラマが書いたコードの柔軟性の無さを理解できず、手早さだけでしかプログラマを評価できないSEの何と多いことか、
暗澹たる気持ちになってきます。