研究者の視点からのプログラマー35歳定年説

パソコン普及時からの懸念

1980年代くらいからであろうか。コンピュータが家庭や職場に普及し始め、職業としてのプログラマーが脚光を浴びつつあった。私も今でこそ研究を職業としているが、学生時代趣味でプログラミングにハマっていたため、将来はプログラマーになることを一時期は考えた。

ところで当時からこんな噂があった。

プログラミングは頭を使う仕事のため、若いうちしかできない。20代後半くらいで頭がついていかなくなる。

また「プログラマー35歳定年説」という認識が一定の人たちの間で広まっていた。

当時私はこれを懸念し、社会人になってからもしばしば気にしていた。それから20年近くが経過し、私も今研究者として40歳になろうとしているが、この噂の真偽はどうなのだろうか。

この問題をIT企業の視点から論じた情報はたくさんあるが、ここでは研究者からの視点も交えて論じてみたい。

頭の柔軟性は歳とともに低下するというけど

確かに脳の特定の機能はある年齢を境に低下していく。だいたい10代後半~20代前半がいろいろなことを最も吸収できる年齢だと言われているようである。脳の重量は20歳くらいをピークに減少していくというデータもある。

それでは35歳くらいになるとプログラミングに頭がついていかなくなるのか?

まず事実として言えるのは、30代だろうが、40代だろうが、プログラムを書ける人は大勢いるということである。昔私とともに渡米した研究室の助教授は30代後半で私の隣でバリバリプログラムを書いていたし、昔私がいた研究所でも30代前半、後半、あるいは40代でプログラムを書いて研究や仕事をしている人がいた。昔のIT系のバイト先でも社員に聞いたところによると、40代でプログラムを書いている人もいたようである。
 
私の知っている範囲でこれだけの人が仕事でプログラムを書いているのである。どうやら35歳を境にこれまで使ってきたプログラミング言語に頭がついていかなくなる、ということはなさそうである。
 
そういう私も現在研究のためにバリバリプログラムを書いている。
 
昔大学の先生や事務の方にも35歳定年説の相談を持ちかけたことはあるが、そんなことはない、と否定していた。

但し、いろいろな意味で個人差はありそうである。私は昔は力づくでどんどん汚いソースコードを書いて、それを後で読んで修正することができた。今は綺麗なソースコードしか書く気にならないし、汚いソースコードなど例え自分が書いたものでも読む気がしない。
 
プログラムを書く速さは若い人の方が速いという話をIT企業の方から聞いたこともある。私自身も若い時の方がプログラムを速く書けたような気がしなくもない。もっとも速くプログラムが書けても、バグが出やすかったり、拡張や保守がしにくいコードになってしまうなら、イマイチではないかと思うが。

新しいプログラミング言語の習得は?
 
昔IT企業のセミナーでこんな話を聞いたことがある。
 
「今40歳くらいの人は新たにC言語を習得するのに四苦八苦している。歳をとると難しいことは考えられるようになっても、新しいことを覚えるのは難しい。」
 
実はプログラマーの寿命を考える上でこれまでやってきたプログラミング言語を使っていけるか、という問題の他に今後登場する新しいプログラミング言語を覚えられるか、という問題もある。何しろ情報技術は日進月歩。どんどん新しい言語が登場する。

IT企業に勤める親戚からも、歳を取ってからの別の言語への移行は難しいという趣旨の話を聞いたことがある。

但し今までやってきた言語と異なる言語を短期間で習得するのは容易ではないというのは、必ずしも歳を取ってからだけの話ではなさそうである。大昔にCOBOLで実装されたシステムの改良があるとき必要になり、当時COBOLでプログラミングをしていた40歳以上の人が急遽必要になったという話も確かIT企業に勤める後輩から聞いた。本当に若い人が短期間で新しいプログラミングをマスターできるなら、若い人たちCOBOLを勉強してもらえばいいだけの話だろう。

IT企業で最新の開発環境でバリバリプログラミングによる開発を行うために新しい言語を覚えなければならないとすれば、確かに長期間の経験が必要だろうし、若い人の方が有利ではある。

私自身は例えばPythonを始めたのは30代半ばくらいである。初めてPHPを使ったプログラミングをしたのも30代の後半である。いずれも新たな言語でプログラミングをするのにそれほど苦労した記憶はない。

実はだいたいどのプログラミング言語も共通する考え方がある。それは変数であったり、if文、while文などの構造であったり、関数であったり....。従って共通する考え方さえ身についてしまえば、あとは文法が違うだけなのである。

共通する考え方とは、一般的な知識と言い換えることもできるかも知れない。コンピュータ・サイエンスあるいは情報科学、計算機科学といった分野をしっかり勉強しておけば、他のプログラミング言語への移行は難しくないはずである。もっとも全く新しいパラダイムプログラミング言語が登場した場合はどうなるか分からないが。

そういえば昔研究室に30代半ばか後半くらいの数学科出身のプログラマーがいた。彼曰く、「私がプログラマーとして長寿命なのは、数学の基礎がしっかりあるからだと思います。力づくのプログラミングをやっている人はだいたい30歳くらいでダメになっていますね。」とのことだった。数学科を出ていなければ、歳を取ってから新しい言語を覚えられない、ということは流石にないと思うが、少なくとも理系的な思考は身につけるべきだろうし、そもそも理系的な思考が身に付いていない人はプログラミングを好きになれず、早々と去って行ってしまう気もする。

実は40代の現役プログラマーが書いた非常に参考になる書籍がある。柴田芳樹著「プログラマー現役続行」(技術評論社、2007)である。本の中では、筆者の経験をもとに、歳を取ってからもプログラマーとして活躍していくための心得が綴ってあり、特に重要なものとして、論理的思考力、読みやすいコードを書く習慣、継続学習力、情報科学の基礎力、朝型であること、コミュニケーション力、英語を挙げている。

35歳を過ぎてプログラマーはあり得ない?

しばらく前、IT関連企業に勤める大学の後輩2人と飲む機会があった。彼らは口を揃えて、「35歳を過ぎてプログラマーはあり得ない」と言っていた。35歳を過ぎてもなおプログラミング能力があるかどうか、という問題と、35歳を過ぎてもなお職業的プログラマーとして社会の第一線で活躍できるか、という問題は別である。

簡単に言ってしまえば、歳を取れば普通はそれだけ多くの給料を払わなければならない、35歳を過ぎたプログラマーに高い賃金を払うより、若いプログラマーに安い賃金で働いてもらった方が雇用する側としては得だし、扱いやすいということらしい。

そもそもプログラマーとは何かを考えると、日本では設計通りにコーディングする人、というイメージが強いのではないだろうか。ただコーディングするだけの人を雇うなら、何も35歳を過ぎた人をわざわざ雇わなくてもいいという判断がありそうである。

私のかつての職場にも40代のプログラマーとおぼしき人がいたが、職場での評価は決して高いとは言えなかった。興味があるのは、データベースやWebシステムのコーディングだけ。研究プロジェクトが何を目指していて、どういうことが問題となっているのか、関心を示している様子がなかった。かと言って、情報技術の卓越した知識や技術があったわけでもない。

ずっとコーディングだけでキャリアを形成するのはキツいことが伺える。

もっと大きな仕事はしたくないか

35歳を超えてもただ人の指示に従ってコーディングするだけ、というのでは、雇う側からしてみれば、コストパーフォーマンスの面でも扱いやすさの面でも難ありである。そもそも本人はずっと使われるだけでいいのか、もっと主体的に何かをしたくはないのか、という気もする。

もしプログラマー一筋でずっとキャリアを形成したいなら、前述の柴田氏の本に書いてあることを参考に、若い人には真似できないような自分ならではの世界レベル(少なくとも国内最高レベル)の情報技術を身につける必要がありそうである。単にコーディングだけを長年やっていても、スキルの向上は意外と早く飽和してしまうかも知れない。

私の現在の米国の職場の同僚の一人のプログラマーは40歳を超えていたが、まさに世界レベルの技術力を持っていた。彼はその歳でついこの間ITのエリート企業グーグルに転職していった。これくらいの技術力があれば、雇う側も高い給与を支払って高齢プログラマーを雇おうという判断に至るかも知れない。

別の視点から考えて、自分が中心となって、給料をもらって、社会に影響を与えるような大きな仕事をしようと思った場合、プログラマーはどのようなことができるだろうか。1つには、世の中を変えるようなものすごいプログラムを作ることだろう。これを個人で担当するとなると、世の中で出回っているソフトウェアを画期的なアイディアを持った個人が作った例がないわけではないが、どうしても小規模なものにならざるを得ない。

やはり大きな仕事をするためには、多くの人を動かさなければならないだろう。プログラマーがある一定の年齢になると、管理職への転身を進められるというのはこういう意味で自然である。

また、そもそもプログラムを開発する目的は何なのか、を今一度考える必要がある。プログラムを開発する目的は特定の顧客の業務効率の改善なのか、家庭で使用するソフト(年賀状作成ソフトなど)を作るのが目的なのか、あるいは私のように、生命現象を解明するのが目的なのか。這い上がっていくプログラマーは目的の方にも強い関心を向け、継続的に勉強している気がする。そうして得た知識や経験が自分の強みになるのではないだろうか。実際私の分野では、分子生物学をかなり深く知っていてかつプログラムを書ける人は強い。プログラミング+αで自分の強みを形成していくべきなのだろう。