「気合いでやり抜く努力型」

先日のコメント欄より.

JavaBlackさんすごくマッチョでカッコイイです……

http://d.hatena.ne.jp/JavaBlack/20101128/p1#c

マッチョかなあ?どちらかというと頭脳派だと思うんだけど.


それで思いだしたのがこの話.日本のIT業界は,今でもあまり変わってないね.

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

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

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

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

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

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

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

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

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

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

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

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

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

http://karetta.jp/book-node/okite/003137

*1:ここで引用されてる人みたいに. http://d.hatena.ne.jp/moto_maka/20101128/1290886142