目次次「ネクタイで評価」 English

気合いでやり抜く努力型


「精神一到何事か成らざらん」の精神は、今でも日本のビジネス社会の基本 のようである。朝は早くから出社し、夜遅くまで働いて、長時間勤務すること が模範的社員のように未だに思われている。どれだけの成果を出したかではな く、どれだけ長時間働いたか、もっと正確には、どれだけ長時間会社に存在し たかが重要なのある。

さて、プログラマの社会ではどうであろうか。長時間ディスプレイに向かっ て、キーを打ち続けていることが仕事のように思われていないだろうか。まず、 プログラムを作ることを優先していないだろうか。なんたって、誰にも分かる 成果物を出さなければならない。だから、取りあえずプログラムを作る。

少しは、本や雑誌を読んだり、インターネットやパソコンネットなどを利用 して情報を引き出したりすれば良いと思うのだが、初心者はどうもそういう方 向へは行かないらしい。基礎もできぬ前から、作る決意だけが先行してしまう。 もちろん、そういうふうにして作られたプログラムの品質は無茶苦茶に決まっ ている。

スポーツの世界、とくに伝統的スポーツでは「精神」が大切にされる。しか し、そういう世界では、実際に試合をする前に、延々と訓練をさせられる。ス ポーツでは、突然試合を行なったりすれば、怪我をするのは当り前で、最悪の 場合には生涯不具のままになったり、一命を落としたりする。試合中の精神も 重要視されるが、それ以上に練習のための精神が重要視される。

スポーツでは、練習メニューは細かい段階に分かれていて、徐々に徐々にレ ベルを上げていく。急に上げれば、怪我をしたり、体を壊したりしてしまう。 最近は、スポーツ医学なども取り入れて、科学的に訓練を行なう動きも盛んだ。

「精神、精神」と叫んでいる割りには、結構精神以外の重要性を認識してい るのがスポーツ界である。

しかし、先端産業と思われているソフトウェアにおいて、訓練(教育)は殆 ど体系化されていない。まあ、歴史が短い上に、ソフトウェア自体が非常に速 いペースで変化しているので、体系化は難しい。でも、変化が速ければ速いほ ど、知識習得の努力がなされなければならない。

ソフトウェアの世界では、技術の差は物凄い。あるプログラムを作る時、誰 にやらせても同じようなものだ、というのは間違いである。こちらが思ってい た以上のものを作ってくれる技術者から、まったくやらせたこと自体が間違い だったと思い知らされるようなレベルの技術者までがいる。

プログラマにもいろいろタイプがある。日本人は、結構作ることに対して真 面目である。だから、プログラムの作成に時間を費やす。プログラム作りの多 くは、プログラムを書く(打ち込む)こと以上に、プログラムの誤りを取り除 くことに費やされる。たった1文字書き誤っても、誤動作をする。とにかく、 誤りを犯さないのが大切だ。何千行、何万行もあるプログラムの中に誤りを入 れてしまったら、捜すのが大変だ。そして、人間は、その本質において、誤り を犯し易い。

プログラム開発は、いかに誤りを犯さないか、が重要になる。初心者は、頑 張ってプログラムを作ってから、誤りがないかを調べる。当然誤りが出てきて、 必死で捜しまわる。この努力たるや、大変なものである。

どこの会社にも、整理が悪くて、年がら年中捜し物をしている輩がいるだろ う。
「ない、ない」
と喚き、周りの者が捜し物を手伝ってやらないと駄目なのがいるだろう。課 の者全員に「宝捜し」を命じる訳だ。もちろん、捜し物は多くの場合出てこな い。ゴミも重要書類も一緒くたにしているのだから、誰かが誤って捨てても仕 方がない。

そうかと思えば、必要な物を直ぐに捜し出してくれる重宝で大人しい人もい る。目立たないが、騒ぐ人間より余程仕事ができている。

では、上級のプログラマはどうするであろうか。まず、できるだけ誤りを犯 さずに済む方法を考える。これが、上級者にとってのテーマである。こういう ことを考えないようでは、上級レベルまで行くことはありえない。当然、彼等 のプログラムには、誤りを犯しにくくなるような、あるいは、たとえ誤りを犯 しても発見し易いような工夫がされている。

この差は、開発時間の差になり、プログラムの品質の差になってくる。それ だけではない。初心者と上級者の、コンピュータとの接し方をみると興味深い。 初心者は、必死でコンピュータと取り組んでいるように見える。熱心で真面目 な努力の塊のように見受けられるであろう。しかし、うまく動かなかったりす ると、コンピュータに当たったり、無闇矢鱈にプログラムを変更するであろう。 困るのは、無闇矢鱈にプログラムを変更すると、本人の意思とは無関係に、本 人の希望どおりに動作してしまうことがある。もちろん、どうして動いたかは 分からない。こういう試行錯誤だけに頼ってプログラムを組んでいると、無茶 苦茶なプログラムになるのは言うまでもない。

上級者は、本気でプログラムを書けば、初心者の何倍もの量のプログラムを 生産できる。元々、知識や技能が違うのであるから、そのくらいの差があるの は当然である。彼等は、プログラムを作る時、色々な実現方法があり、どの方 法が適切かを考える。

数学の問題を解くときはどうであろうか。初心者は、闇雲に解き始める。そ して、努力に努力を重ねて、途中で挫折してしまう。上級者は、問題を見て、 どの公式が使えるかを考える。一通りではなく、何通りもの解答を検討した上 で、そのうちの1つを書き上げる。数学の解答は1種類と思っている人もいる であろうが、とんでもないことだ。

もっと広く、勉強全般を考えてみよう。成績の良い生徒と悪い生徒は、どち らが勉強時間が長いであろうか。遊んでばかりいるようでも、成績は常にトッ プクラスの生徒がいる。その反面、いつも机に向かってはいるものの、全然成 績の良くない生徒がいる。才能と言ってしまえばそれまでだが、良い成績を取 るための秘訣がある訳だ。キーポイントを押さえ、効率良くやれば良いに決まっ ている。難関大学をいくつも受験して全部合格するのがいるかと思えば、何年 浪人してもどこにも合格できないのがいるのである。

プログラマにも、大変な実力の差がある。このことは誰もが知っている、と 思っている。この差の縮め方も、頭の中では分かっているつもりだ。しかし、 プログラム開発に遅れが出たりすると、「気合いでやり抜く努力型」の推奨に なってしまいやすい。

ただし、努力して試行錯誤を行なって、プログラムを解読不能にさせること がよくある。努力は要注意である。努力の前にやるべきことがないか一考すべ きである。

気合いはもっと怖い。気合いもろともプログラムが空中分解しなければ良い が…。

美しいパズルとは

ナンプレ問題
自動生成


これで、今日から
貴方もパズル作家

Cパズル
プログラミング
〜再帰編〜


Copyright1996 Hirofumi Fujiwara. No reproduction or republication without written permission
目次次「ネクタイで評価」 English