ホームページ目次前の話次の話

努力だけでは到達できないレベルに到達するには?

2008年2月12日

仕事をさっさと済ませるには、毎日長時間働くというのもあるが、 これは残念ながら長続きしない。 何割かは働く時間を増やすことはできるだろうが、 何倍かにすることは不可能である。

それだけではない。 人間というものは、対応できる範囲というものが人によりだいたい決っている。 その範囲を逸脱したことをお願いしても、まずできないもので、 そもそも無理に決っていることを注文する方が悪い。

ということは、頑張らせるよりは、レベルを高くしてしまう方が良いのだが、 実際にそうしようとしても、その実現ははなはだ難しいのが現状だ。 プログラマの技術をアップする確実な方法が見つかったら、 誰も苦労はしないであろう。

そもそもが、適性という問題がある。 知能よりも、適性のほうが遥かに重要である。 実際、とんでもなく知能が高いが、プログラムがさっぱり書けない人は沢山いる。 プログラムも、情報処理試験のように、穴埋めに近い、 つまり入学試験の問題のような形式になっている問題がいくら解けても、 プログラムが実際に書けるとは限らない。

現実のプログラムってのは、結構もやもやっとした状態から、 どうすれば良いかを決め、最終的にはプログラムに落しこまなければいけない。 極端に言えば、無から有を作る作業である。

こういう場合に、プログラミングを勉強せよというと、 直接利用するプログラミング言語の表面的なことだけを勉強する。 まあ、最初の一歩はそれが必要だが、それでは、ただのプログラマから抜けられない。

プログラミング言語だけでなく、設計はいかにすべきかとか、OS、ネットワーク等の全般的な知識はもちろん、 作ろうとしている分野の専門知識も必要になる。 もっと上に行こうと思ったら、当然複数の言語やシステムを知っていて、 その場その場で妥当な選択ができないといけない。 さらに、時代の流れを読み、人々がどう行動するかも読まないといけない。 まあ、プログラムというのは、良いものを作ろうと思ったら、際限なくやるべきことはある。

プログラムができあがっても、プログラムの長さは、同じ機能を実現するにも 人によって様々である。長さが数倍違うのはもちろんだが、 もっと大変なのは、正しく動くかどうかである。 バグがどのくらい出るかは大差がある。 さらには、正しくないデータ、操作に対してどのくらい頑健であるかとか、 考えればきりがない。

そして、もっとも差が出るのが、プログラムの分りやすさである。 コメントを入れれば分りやすいとか適当なことを書いている本も多いが、 それ以上に、どれだけ素直なプログラムであるかが重要だ。 素直で短くエレガントなプログラムだったら、コメントなど無くても分りやすい。 逆に、汚いプログラムにいくらコメントを入れてくれても、実際何の助けにもならない。

という風に、プログラマといっても、大差がある。 何十年かプログラムの相手をしてきたが、どうもこの差は増加しかしていないようだ。

さて、どうやったら、優秀なプログラマを育てられるのだろうか。 実際、どこでも問題になっている。 優秀なプログラマほど集めるのは大変である。 そして、優秀なプログラマは、そもそも開発効率が高い上に、 対応できるレベルも一般プログラマより高いものだ。 世間は、数倍の差とか言うようだが、実際は無限倍と言ってもよい位の差がある。

優秀なプログラマは、いずれも相当の勉強、専門書を読んだり、プログラムを読んだり、 情報蒐集に余念がなかったりする訳である。いや、専門書を読むだけではなく、書いたりしているであろう。

しかし、勉強しろとか、そういう風にいくら言っても、まず成功しないようだ。 長くなったので、今日のところは問題提起だけして終りにしよう。

O'Reilly Japan刊

3/14発売

出版記念
プレゼント

オープンソース
Scheme言語処理系
Gaucheの愛好者団体

詳細はブログで


ホームページ目次前の話次の話