「『プログラマー35歳限界説』はある」Rubyの父・まつもとゆきひろさんにその真意を聞いた

IT業界でささやかれる「プログラマー35歳限界説」。体力や学習能力の低下、マネジメント層へのキャリアチェンジといった理由が引き合いに出される一方で、35歳を越えてもなお最前線で活躍するプログラマーが登場し、この説が否定されることも多くなった。

「プログラマー35歳限界説」は本当にあるのだろうか? それともまったくの幻想なのか? Rubyの父・まつもとゆきひろさんに聞いてみたところ、意外にも「この説は成立する」と言う。その真意は? まつもとさんにプログラマーのキャリアについて話してもらった。

 

「35歳限界説はある」 まつもとゆきひろさんがそう答える真意とは?

――IT業界では、古くから「プログラマー35歳限界説」についての議論がありますが、まつもとさんは率直に言って、どう思いますか?

私の見る限り、「プログラマー35歳限界説」は実際に成立しています。そしてその理由は、組織にあると思っています。国内のIT企業において「ある一定の年齢に達したらマネジメント側に回る」というキャリアパスは珍しくありません。「35歳限界説」が成立するような組織が存在し、そこに属するプログラマーの方がそれなりの割合でいる、という表現が正確でしょう。

――なるほど。「35歳限界説」は、個人ではなく組織の問題ということですね。ちなみに、この説の要因として挙げられる体力の低下についてはどうでしょうか? IT業界全体に長時間労働のイメージがあり、それに耐えられないのではないかと思ったのですが。

本当に長時間労働しているのであれば、そうかもしれません。ただし、それは業界全体の話ではないと思います。ソフトウェア開発ができる人たちは、本来は自分で自分の仕事をコントロールできるので。また、若いときほどの体力はないかもしれませんが、その分を経験でカバーできます。なので、体力がないという理由で諦めることにはならないでしょうね。

逆に、そもそも長時間労働を強いられるポジションに陥ってしまった時点でまずい。これも組織の問題に起因するのだと思います。

――「35歳限界説」をあくまで組織の問題と指摘する理由はわかりました。この問題は長らく議論が続いていますが、なぜ変わらないのでしょう。

それは、業界全体の構造や風潮の影響です。そもそも、一口にプログラマーやソフトウェアエンジニアと言っても、働き方はさまざま。ソフトウェア開発は大きく分けて、1からプロダクトやサービス、パッケージを作る、あとは受託開発の2つ。このうち、前者はプログラマーの裁量が大きく、従ってプログラマーが限界を迎えにくい。一方、日本は後者を行う「システムインテグレーター」と呼ばれる企業が、だいたい7~8割くらい。

このような企業は大手クライアントから仕事を請け負い、「受託開発」という形で契約を結び、決められた予算や期限内にソフトウェアを開発し、納品するというビジネスをしています。問題は、彼らが実際にソフトを作るわけではないこと。さらなる下請け企業や、社内の一部のプログラマーに開発を任せきりにするわけです。

システムインテグレーターでは、ソフトウェアエンジニアとして働いていても、クライアントから要件を聞き、どんなソフトウェアを作るのかを決めて、「概要設計書」なるものの作成までしか行わない場合があります。大きなITベンダーでは「入社してから1回も実際のプログラムを書いたことがない」なんてソフトウェアエンジニアもたくさんいるようです。

IT業界には「上流」「下流」という考えがありますが、言葉の印象もあって、「上流」がよく、「下流」がだめだと思われがち。システムを設計する人が偉くて、実際に手を動かすプログラム開発が下賤な仕事というイメージを持っている人は相当数います。下賤な仕事は尊敬されず、単価も低い。日本では、長期間働くほど給与が上がる、年功序列型の給与構造の企業が多く、コストと売上の損益分岐点が35歳辺りにあるため、実態としてこの説が成立するわけです。

――そこで、マネジメント層に引き上げるという発想になるのですね。

そうです。彼らに悪気はないんですよ。今までの下賤な仕事から、より高級な仕事に引き上げてあげるような感覚なのかもしれません(苦笑)。

――国内でそのような実態があるのはわかりました。海外では同じようなことは起きないのでしょうか?

海外では、日本なら受託開発するような仕事を、ほぼ内製しているんですよ。人材流動性が高いので、プロジェクトの間だけプログラマーを雇って、終われば「ありがとうございました」と解散する感じですね。一時的にも正社員として働くので、企業間の契約のように、いつまでにやらないといけないとか、最初に結んだ契約を方向転換できないといった硬直性が生まれにくいんですね。一方、日本は正社員雇用が多く、法律上このような開発手法を取れないのです。

また、アメリカには、仕事の責任範囲を決める「ジョブディスクリプション」という文書があります。たとえば、「私はソフトウェアエンジニアなので、ソフトウェアの設計から分析、開発まで行います」といった内容です。なので、エンジニアがいきなり営業をやらされることはなく、業務範囲を変える場合は、契約そのものを変更せねばならず、企業としては非常に面倒なわけです。

アメリカ的な手法を取る国では、ソフトウェアエンジニアとして一生を終える人の割合は、日本よりもはるかに多い。50~60歳になっても、ソフトウェアエンジニアのままでいる人は、まったく珍しくありません。

――雇用形態もこの説の成り立ちに大きく影響しているのですね。

そうです。むしろ、IT業界の産業構造、その背景に存在する雇用にまつわる法律や契約スタイルのほうが、影響が大きいですね。残念ながらソフトウェアエンジニアに対する国内企業のスタンスは、自由な働き方にプラスになっているとは、言いがたい。

――ちなみに「プログラマー35歳限界説」はいつ頃から出ているのでしょうか。

恐らく、30~40年前からいわれているのではないでしょうか。私が就職した20年前の時点ですでに耳にしていましたね。結局、受託開発をしている人が減っていないから、この説がたびたび唱えられるのかな、と。

 

35歳で限界を迎えるプログラマーが生き残るためには?

――では、受託開発を行う組織に所属しているプログラマーが、35歳を過ぎても活躍する道はないのでしょうか。

そうした組織に所属している場合、35歳を過ぎてもプログラマーとして生き残るには、辞めるというのがほぼ唯一の選択肢でしょう。大きい組織ほどこのような傾向があり、自力で変えようとしても、なかなか変わらないんですよね。もちろん、プロダクトを作ることに対して一生懸命で、スペシャリストを優遇する組織は日本にも存在しますし、なければ海外に行ってもいいわけです。むしろ、そちらのほうがいい。

逆に、エンジニアたちが「辞められないから」といってダメな会社にいつまでも留まるのは、組織を甘やかすことであり、改善を阻害することになる。ダメだなと思ったら、さっさと辞めるのがよいと私は思います。

恐らく、この10年ほどで、受託開発で十分な利益を出せる企業は減少していくでしょう。というのも、すべての産業のIT化が進む現在、本業に直結するシステムの開発をアウトソースすることはつまり、“競争力の源泉”を他社に任せることと同じ。企業戦略的に得策ではなく、常識的に考えてあり得ません。加えて、アウトソース化によるコストアップやスピード感の喪失も、企業の命運に直結する危険性をはらんでいます。

では、反対に「本業に直結しないシステムであれば受託開発でよいのか」といえば、そのような領域は昔と違って、恐らくウェブサービスなどで代替可能です。それをわざわざ受託開発の形式にするのは、コスト的に正当化できなくなっていくはず。

大規模な案件は特にですが、受託開発はビジネスの形態上、“硬直した開発体制”になりやすいんです。それによるコストの増大やプロジェクトの炎上、ひいてはプロジェクト失敗となる確率の高さなどを冷静に考えると、惰性で過去のシステムを踏襲するという理由以外には、とても正当化できるビジネスとは思えません。

システムの受託開発を担う企業は今後、自前で開発力を維持できないような比較的小規模な企業に対し、彼らと一体となって本業に直結するシステムを開発し、継続的にその改善を行うパートナーシップを取る。こういったスタイルでなければ、遅かれ早かれビジネスとしての競争力を維持できなくなるでしょう。ただし、そのようなスタイルは、過去に大規模案件を受託していたようなITベンダーにとって、“おいしい仕事”ではなくなります。

そのような状況になれば、組織の考え方が変わっていく可能性もあります。ただ、あと5年や10年待つこと自体が時間の無駄。もしこういった悩みを抱えるエンジニア個人に相談されたら、「今すぐ辞めろ」と私は断言します。

――よくわかりました。とはいえ、辞めることに不安を抱く人はいますよね。

不安な気持ちはわかります。30歳以下の場合、物心がついてから景気がいい状態の経験がないので、もしここで辞めたら次の就職が見つからないんじゃないかとか、ニートになるんじゃないかと心配になることでしょう。でも冷静に考えると、現在は売り手市場。東京では有効求人倍率が2倍を超えています。つまり、2人分の求人があるのに、1人しか応募がない状態です。さらに、ある転職サービスの調査では、技術系全体の転職求人倍率が7倍以上という結果も。仕事を選り好みしても、見つかるような状況といえます。

――確かに求人倍率の数字を見ると、辞めてもなんとかなりそうと思えますね。ただ、別の組織でも通用するスキルがあるのが前提ですが。

最近の転職事情に詳しいわけではありませんが、その他の職種、たとえば人事などに比べて、ソフトウェアエンジニアには組織固有のスキルは発生しにくいと思います。人事を10年間務めたとしても、人事制度は組織によって異なるので、場合によっては全然役に立たないこともあるんですよね。

IT系で一番多いウェブ制作のケースを考えた場合、ウェブアプリケーションの開発やウェブサービスを作る上でのスキルのバリエーションは、組織ごとにそこまで変わるわけではない。10年間ソフトウェアエンジニアだった人は、ほかの組織でも通用するでしょう。少なくとも現在、ウェブアプリケーションの開発スキルを持っているのであれば、躊躇する必要はまったくありません。

――開発スキル以外に、持っておくとよいスキルはありますか?

個人的には「プログラマーが技術だけで生きるのは幻想」と思っています。ソフトウェア開発をする際、技術だけが必要とされるケースはすごく少ない。どういうソフトウェアを作れば、ユーザーやクライアントが喜ぶか、本当に求められているものは何かを考えることが大切です。ニーズに合致したプロダクトを作らなければ、マーケットで受け入れられず、ビジネスとして成立しません。

つまり、「人間系」と呼ばれる領域に興味を持たないといけないわけです。「本当にそのソフトウェアは、果たすべきゴールを達成しているのか」とか、「このプロダクトが最も強調すべき点や優先順位は何か」とか。

「私はソフトウェアエンジニアです。マネジメントには興味ありません。技術のことだけをやっていきたいです」で終わるのではなく、人間系の領域に興味を持つ人のほうが、最終的にいいプロダクトを作ることができると思います。

――ここまでの話をまとめると、受託開発をしている組織から抜けて、自分で設計から手を動かすところまで一貫してプロダクトを作ることが、35歳を越えてもプログラマーとして生きる方法ということでしょうか?

そうですね。なるべく「設計だけ」「手を動かすだけ」の仕事に根を詰めず、余暇の時間でウェブサービスを立ち上げてみる。誰かの設計書に従ってプロダクトを作るのではなく、0から作ることでわかることもありますし、市場に受け入れられれば、ベンチャーキャピタルから投資を受けられるかもしれません。

また、受託開発的な考え方では、東京に行ったほうが仕事がある、Javaを使う案件数が多いなどと考えがちですが、仕事が多いということは競争率も高い。いい評価を得るのは非常に難しいわけです。本当は競争相手が少ない、もしくはいない仕事を選んだほうが、生き残れる確率が上がるのではないでしょうか。

最後に話を主題に戻すと、受託開発が多い現状は、国内IT業界の産業構造が生み出したもの。こういった説をないものとして真っ向から否定することはできません。現実に「プログラマー35歳限界説」は存在するのですが、環境を変えれば生き残る道もある。プログラマー個人単位で考えたら、全力で逃げるべきです。自分の命のためにもね。