IT技術者稼業を続けていく上で、つねに技術的なことを学び続けて行かないといけないのは宿命です。では、どんなことを学んでいけばいいのでしょうか。
国語の授業風景
その昔、灘中学校に橋本武という国語教師がいまして、変わった授業を展開していました。文庫本にすれば1冊ぐらいの小説である「銀の匙」を、縦に横にと知的好奇心の赴くままに広げていって、なんと3年間かけて授業を行うというものでした。当然ながら(ページ数を見ていると)授業は進んでいないように見えるわけで、ある生徒が「こんなふうに進まない授業は、役に立つんですか?」と言ったのですが、その時にこの橋本先生は、
「すぐに役に立つことは、すぐに役に立たなくなることだ」
と返したのだそうです。
技術の時間スパン
IT技術にも、いろんな時間スパンのものがあります。
- 1年〜数年スパン…特定バージョンでの挙動
- 数年〜10年スパン…特定のプラットフォーム
- 10年〜50年スパン…プログラミング言語、プログラミングパラダイム
- 50〜1000年スパン…アルゴリズム
当然ながら、プログラミングは特定のプラットフォームで実装するものですので、その具体的な挙動を知ることも必要にはなってきますが、同じ環境が10年続くほうが珍しいでしょう。たしかに、こういう具体的な挙動と紐付いた知識というのは「すぐに役に立ちますが、すぐに役に立たなくなる(ことも多い)」ものです。
一方で、C言語、LISP、Fortran、COBOLのようにプログラミング言語は数十年にわたって現役として活躍しています(むろん、過去の資産があるために同じ言語を使い続けるという事情もあるとは思いますが、既存ライブラリなど、状況次第ではまさに「資産」として活用できる場面もあります)。
アルゴリズムの世界では、クイックソートが発明から50年ちょっと、線形計画法のシンプレックス法が70年弱、ニュートン法が300年程度、ユークリッドの互除法やエラトステネスの篩は紀元前から伝わるなど、相当に息の長いものも存在しています。
「厚み」と「実利」
囲碁というゲームがありますが、最終目的は盤面上でどれだけの面積を稼げるかです。とはいえ、目先でこまごま稼いでいくと、盤面全体の大勢を取られてしまい、勝てなくなってしまいます。これらを表現する用語もあって、
- 厚み…将来的に勢力を張るための、根拠となるもの
- 実利…今すぐに確保できる地
この2つをどう配分していくかが、囲碁のプレイの上では重要となります。
長丁場でIT技術者をやっていくのであれば、上の囲碁でのように、技術者としての「厚み」を高めるような、今すぐに何かにつながるとも限らないけど、環境が変わってもベースとなるような、パラダイムやアルゴリズムといった知識と、今すぐ「実利」を得るために必要な、現行の環境で必要な知識を、バランスよく身につけていくのがいいでしょう。
当然ながら、具体的な状況に対応した知識がなければ実装は行えませんし、逆にベース知識を欠いた状態では環境の変化の波に押し流されていってしまうことでしょう。