若くなければプログラムは書けないか
- Strategy -

夢空間への招待状

結城浩

若くなければプログラムを書く仕事はできない、とよく言われる。 「例のプログラマXX歳定年説」というやつである。 今回の夢空間はそれについて考えよう。

年齢というものは数字ではっきり示されるけれど、 年齢と実際の能力が直接結びつくわけではない。 …ええい、まどろっこしい書き方はやめよう。 端的に言えば、XX歳になったからもうC言語は書けないなどと十把ひとからげに言うことはできない。 個人差が大きいからだ。 けれど「年齢が高くなると記憶力は衰えていく」これははっきり言える。 これは悲しいかな、私自身の実感である。

今から数年前、私は自分の作っているプログラムの全構造を頭の中に入れておくことができた。 大まかな内容ではなく、変数名や関数名、データ構造の詳細に至るまですべて頭の中に入っていた。

しかし今はそうはいかない。自分がいま作っているプログラムでありながら、 ちょっと油断するとすぐにその詳細は忘れてしまう。 その忘れるスピードは我ながら情けないぐらいに早い。 「三日たったコードははじめて見るコード」 という格言ができそうなくらいによく忘れる。 年齢が高くなると記憶力は確かに衰えていく。 そして記憶力が衰えるというのは、プログラムを書く上では当然ながら不利な条件である。

しかし、私は生業として毎日プログラムを書いている。 プログラムを書いて日々の糧を得ているわけである。 記憶力が衰えたからといってプログラムの質を落とすわけにはいかない。 それでは私はどうしているか。簡単なことである。 いま書いているプログラムの内容を忘れても大丈夫なように、 自分の仕事のやり方を変化させたのである。

記憶力が衰えてもプログラミングするためには、具体的にはどうすればよいか。 まず第一にドキュメントをよく書くようにした。 要はプログラムの説明文を書くのである。 他の人が書いたプログラムならば、その人に聞くことができる。 しかし、数日前の自分が書いたプログラムを読んで理解できなかったら、 もう聞く人はいないのである。 そのために私はドキュメントやコメントをせっせと書く。 私はこれを密かに「三日後の自分への手紙」と呼んでいる。

第二によく計画を立てて、無茶をしないようにした。 徹夜してガンガンとプログラムを書くのではなく、 全体をいつも見渡して「よし、次はここの部分を征服しよう」と計画を立ててからプログラムを書き始めるようにした。 馬力ではなく、知力を使うのである。

もちろんプログラミングスタイルも変わってきている。 大域変数を少なくするとか、関数をこまめに分けるとか、 地味だが有効な方法を数多く学んでいる。 その詳細についてはまた別の機会に書くかもしれない。

 * * *

プログラマはXX歳で使いものにならなくなる、 というセリフは不安感をあおりたてる。 しかし私はこう考える。 確かに年齢が高くなるとプログラムを書くのに不利な条件が増える。 特に記憶力は重要なファクタの一つである。 けれど、もっと重要なのは自分の仕事の方法論、やり方である。

記憶力も旺盛で、体力もある若いときと同じやり方でプログラムを書き続けてるのは無理がある。 自分の現在の知的・肉体的な能力をよく見きわめて、「仕事のやり方を変化させていく」ことが大切なポイントであるように考える。

プログラマは柔軟な思考が売り物である。 便利なツールが出たらそれを使い、 より質の高いコンパイラが出たらそれにバージョンアップする。

プログラマなら、柔軟な思考を自分自身に適用したらどうだろう。 自分というハードウェア、自分の中で動いているソフトウェアをじっくり点検してみよう。 どんな性質を持っており、何が得意で、何が不得意か。 情報処理のスピードはどうか。 自分自身の能力をよく把握して、 それに見合ったアルゴリズム−−すなわち仕事の方法論を編み出していくのである。

 * * *

若くなければプログラムの仕事はできない、というのは不正確である。 仕事のやり方を自分で変化できなければプログラムの仕事は続けられない、と言えばより正確だろうか。

(Oh!PC、1992年11月30日)