プログラマ35歳限界説には2つの解釈がある.
1つ目は, IT業界自体が人間の能力には何も期待しておらず, 単なる体力勝負であるから, 体力が落ちてきて無駄に給与が高くなった35歳で廃用という意味.
2つ目は, 本当に頭が働くのは35歳までで, そこを過ぎたあとは, 真の知能職であるプログラマをすることは難しいという意味. 私が興味あるのはこちら. そして本記事のスコープもこちら.
数学の世界では20台のうちに大きな成果を出さないと終わりだと言われる. 人間にとって究極の知能職だからだろう. 囲碁や将棋では, 本当にトップレベルの実力が出せるのはやはりせいぜい35歳くらいまでで, それからは徐々に落ち目になる.
囲碁や将棋のプロを見ているとしかし, 40を過ぎてからも50になってからも強い人が時々いる. 羽生善治の著書をいくつか読むと, 彼が30になった時から自分の能力が落ちてきたことを自覚していたことが分かる. しかしその能力は「読み」においてである. 深く深く読んで読み切るということは, ワーキングメモリと処理能力の問題であり, これは20台と30台では大きな差が出る. 大きく劣化する. 羽生はなぜ30になってからもトップで居られるかというと, 経験に基づく直感によって良い手が見えるようになったとか, 網羅的に読むのではなく直感から絞った数手のみを読めば十分になったとか, 将棋をする時の脳の働き方自体に変化があったと言っている. 囲碁では30台になると目算が出来なくなり, 死活が読めなくなるが, しかし, 直感的にどっちが良い悪いというのを判断し, 死活もたぶん生きる死ぬをほぼ正確に直感によって言い当てることが出来るようになる.
ここにおっさんプログラマになるヒントがあると思う. おっさんプログラマになるためには, 経験を直感に変換するしかない. その上で, 猛烈な読み勝負に持ちこまないことが必要となる.
経験を直感に変換するためには, 良質な経験をたくさん積み, その上で自分で考え抜くしかない. 猛烈な読み合いを回避するもう一つの方法は, 高級な概念によってプログラミングをして, 細かい読み合いを避けることだろうと思う. これは, Haskellなどの関数型言語や, Rustのようにコンパイラがエラーを阻止してくれる言語を使いこなすことで実現出来ると思う.
若者よ, HaskellとRustをやろう.