前回のエントリのコメントについて
前回「年をとって考えるのをやめる人」についてのエントリを書いたところ、そのコメントで後進に技術を伝えるという仕事の重要性について記載頂いた。
これについて、少し思うところをポエムチックに書いてみようと思う。
ちなみに、mewの開発者として有名な山本和彦氏が、「教育は歳をとってからでもできるから、若いうちは大学ではなくて研究開発の現場にいるために民間に転職した」というのは、どこで聞いたか忘れたが有名な話であると思う。
学ぶ側の人のこと
学ぶ側にも学ぶ技術というのがある。言い換えれば「勉強の仕方」で、これを知らない人はどうやら多い。ただ、勉強の仕方は、教わることで伸びるタイプとか、自力で勉強するタイプとか色々なので、単一ではなく、個人個人で自分に適した学びの技法を持っているかどうかに左右される部分も大きいように思う。
本稿では、学ぶ側の人のことは、少しわきに置いておこうと思う。
年寄りが教える側にたち、技術を次の世代に残していくことについて考えたい。
教えられる技術とは
あるやりかたが、感覚的なものでなく技術として昇華した場合、それは伝授できる。
基本的には。
少し脱線するがスポーツや音楽の技は、「あの人は技術点が高い」的な評価軸があるわりに、他人に伝授することが難しい。これは、その技術の言語化が難しく、身体に染み付くことでようやく会得できるものだからである。これを身体知と呼ぶ。
言語化の部分は、数値化、データ化とも置き換えられる。
言語化、数値化、データ化、デジタル化、こういうった出力が可能なものは、保存もしやすいし、再生もしやすいし、教えやすいし学びやすい。
身体知のデジタル化というのは、それはそれで研究しているひとたちがいるようだが、本論からは外れるので、別の話ということにする。
本稿では、技術は伝授可能なもの、というところをスタートにしたい。
UNIXというのはある意味恐ろしいもので、40年前の技術がいまだに現役で利用できる。
ここでいう技術というのは、たとえばシェルでの操作、コマンドの組み合わせ、シェルスクリプト、awkスクリプトなどのことだ。40年前にperlはなかったが、しかしperl4の頃のノウハウは今でも役に立たないということはない。
そういう観点での「UNIX的UNIXの使い方」というのは、今でも通用するし、むしろ若者は老人並の使いこなしをしてもらいたい。
カーネルのソースコードは、Version6, SystemIII, SystemV, 4.*BSD, Linuxと変化はしているものの、たとえばBSD系列のOSのディレクトリ構成は4.2BSDでおおよそ固まっていたりするなど、コードリーディングのノウハウというのは今でも通用する。
デバイスドライバの構造も、機能は増えたし(昔は当然のようにdetachやカーネルスレッドなどはなかったし、マルチプロセッサも考慮されていなかった)、抽象化も進んだ(昔は当たり前のようにI/OポートやMMIOを直接叩いていたりした)が、基本的な構造は変わっていない。
しかしハイパーバイザはなかったし、コンテナ型仮想化もなかったし(chrootはあったが)、go言語もなかったし、Scalaもなかったし、Rustもなかったし、Javaすらなかった。
しかしLISPはあった。すごいぞ、LISP。
各論を言い出すと切りがないのだが、ただこれらのノウハウは、若い層でもできるやつはできる。できないやつはできない。
不思議なもので、優秀な若者は、お前何年生まれだよと聞きたくなるくらい、昔からの技術も普通に使いこなし、その上で新しいことを知っている。歴史を学ぶことにも貪欲だが、最近あまりよい歴史書が出ていないので、この点は少し可哀想かもしれない。
結局、老人が若者に教えられる内容というのは、テクニックの集合ではなく、その根底にある考え方とかコンセプトといったものが一番重要なのではないかと考える。
伝えるべき「考え方」とは
自分の持つ技術を、他者に伝えられる「考え方」に消化して、連成して、昇華する力というのは、どのおっさんも持っているわけではない。結局、学問を作ることと同じだからだ。
学問を学んでいない人間が、学問を作ることは、なかなかに難しい。
果たして、考えるのをやめてしまったおじさんに、これができるのだろうか。
あるいは、考えるをやめてしまったおじさんというのは、手を動かすパワーもなくなったのに、少ない力で伝授できる「学問」という抽象度で自分の知見を語ることもできず、何もできなくなってしまったおじさんなのではないだろうか。
その一方で、ペアプログラミングとまでいかなくても、横について細かく指導しながら開発なりオペなりする人材としてのおっさんというポジションはありうるのかもしれない。
ただそれも常につきっきりはできないので、最初尻を叩くと後は自力で走れる系の若者の尻を叩くというポジションだ。
いやまてよ、本当に手取り足取りが必要なレベルの若者と、新しいことを勉強したり考えたりしないおっさんとのペアで、二人で一人という計算はできるか?
……なんか、そういう発想はどうなのかと思ってしまうなあ。
問題なのは、おっさんだからと言って、誰もがみんな伝達可能な「知見」を持っているとは限らないということで、そのレベルだからこそ楽しくなくなって考えることをやめてしまうのかもしれないとも言える、ということだ。
さて、だんだん収束に向けての方向付けがあやしくなってきたぞ。
思うのだが、無理に「偉い仕事」をさせようとするから無理があるのであり、トップエンジニアになれなかった人は、それはそれでトップでない仕事をしてもらえばよいのではないか。
それこそ、トラディショナルな構成の社内ネットワークインフラの整備などは人によっては適任だろう。ここでSDNとか言い出すと死ぬが。
サポート技術員という仕事はありうる。
あるいは、そういう人こそマネジメントをやってもらうべきなのではないだろうか。
もしかしたら瓢々と管理業務をこなしてくれるかもしれない。
もちろん、前提として、トップエンジニアのほうがマネージャより偉いという認識に、全員が改める必要はある。
この場合に完全能力給を謳っている組織はどう能力を評価すればよいかという問題はあるが、これもまた別の話ということで。
だから、別におっさんが無理して教育頑張ろうとかしなくてもいいと思うよ、個人的には。