More info...

2013-12-03

ヒゲモジャのギークが提案する技術習得戦略

先月、Dbtech Showcaseで松信さんがデータベース技術の羅針盤という講演をされた。残念ながらプレゼンそのものを観に行くことはできなかったが、その前の日に松信さんと一緒に昼飯を食べたとき、講演のあらすじについては伺っていた。その際にも同じようなことを松信さんには言ったのだが、スライドを見直した上で改めて自分の意見をまとめておこうと思ったので筆をとることにする。

なお、このエントリではスライドに書かれているトピックについて語るので、まだ松信さんのスライドを見てない人は先にスライドに目を通してから本エントリを読んで欲しいと思う。結論は全く違った方向に進んで行くが、その点は了承して頂きたい。

あなたに選択肢はあるか?

ひと握りの天才なら自分の興味のある分野を開拓することができるだろう。あるいはすでに成功を収めた人であれば転職に困ることはないので、成功しそうな会社に乗り換えることもできるだろう。また、社内で決定権を持った人なら、これから伸びそうなテクノロジーへ投資するということが可能かも知れない。

しかし圧倒的大多数の人はそうではない。特に若手エンジニアやこれから社会へ出ようとする学生さんたちには自らの運命を舵取りするだけの力量、あるいは決定権がない可能性が高い。ひとたび社会へ出たならば、まずは目の前のことに追われることになる。会社へ就職したなら日々の業務をまずはこなさなければいけないし、ベンチャー企業ならビジネスを軌道に乗せるために心血を注がなければならないだろう。未来の技術がどうなるかなどということに考えを巡らせている余裕はないし、たとえ何らかの見識を持っていたとしても、周囲に受け入れられるようになるには時間がかかるだろう。(新卒が何言ってんだ!とあしらわれてしまうのがオチだ。)あなたには選択肢があるだろうか?正直、選択肢がある人というのは非常に恵まれた稀有な存在ではないかと思う。ほとんどの人に、これから投資するテクノロジーを選ぶ選択肢などというものはないだろう。(往々にして選択権を持っているのは、学ぶのを辞めた年配だったりするのだが。)

だが、私はそれでいいと思っている。

どんな業務であれ、どんなテクノロジーであれ、それを真摯に学ぶことによって得られることはたくさんある。例え学んだテクノロジーが衰退しようとも、他の分野に応用が利くことは多いからだ。反対にあまりにも未来を見すぎて、目の前のことがおろそかになるということのほうがよっぽど怖い。

正しい選択をする自信はあるのか?

あなたは未来について正しい選択をする自信はあるだろうか?私はない。

もし誰もが正確に未来を予測できるのだとしたら、みんなベンチャー起業をつくって大金持ちになれるだろう。だが、現実にはそうはなっていない。未来のことは結局のところ誰にも分からないのだ。

特に、IT業界の栄枯盛衰はとても激しい。「この会社は成長しそうだ」と思っていた会社が突然倒産する、大企業が一気に衰退して買収されてしまうといった例は枚挙に暇がない。

しかも、厄介なことに「劣っている」ように見えるテクノロジーであっても、実はそれがクリステンセン氏が言うような破壊的技術だったりする可能性もある。過去に破壊的技術によって淘汰されていった製品に携わっていた人は「未来が予測できなかった」と言えるだろうが、誰がそこまで見通せるというのだろうか。

ひとつだけ言えるのは、コストパフォーマンスに優れ、そして便利なものは残るということだ。

例えば私の視点からすると、ドキュメント型データベースなどは「劣った技術」であるように見える。理由は先日書いたエントリを読んで頂ければ分かるだろう。だが、もしかするとドキュメント型データベースは「一見劣っているように見える破壊的技術」なのかも知れない。リレーショナルデータベースに携わっている者であるから「あれをRDBの代わりに使ったら開発は地獄になるだろうな」と思えるのであって、実は私が知らないだけでそれを上回る利便性やコストメリットがあるのかも知れない。その可能性を完全に否定することはできない。

あらゆる製品はどんどんと姿を変えていく。どの製品もより便利に、よりコストパフォーマンスの良いものへと進化する可能性は十分にある。正直なところ、長期的な視点に立って未来を予測することはナンセンスではないだろうかとすら思える。

スライドにあるように、確かに政治的な要因で成功したり、あるいは衰退した製品は多い。だが、政治的な動きというのはテクノロジー以上に先が分からない世界ではないか。そもそも、政治的な要因でテクノロジーがどうなったかは、過去のことだから分かる話ではないだろうか。過去がどうだったかは、今だから分かるわけであって、当時を生きていた人には到底予想もつかなかった展開が待っているのではないだろうか。

どのような知識を身につけるべきか

まずは目の前のタスクを一生懸命にやるということが第一だ。今の業務をより効率的にこなすために必要な知識を勉強するというのが、最も優先すべき課題であると思う。日々携わっていることであるし、それに対して枝葉を伸ばすように勉強するのは効率が良い。

もし、それ以外に何か勉強するのであれば、オススメは汎用的に使える知識を身につけるということだ。つまりテクノロジーの原理原則に関する知識だ。私はリレーショナルモデルについて真剣に学んでいるが、それはデータベースを使う上で汎用的に使える知識だからだ。どの製品を使ったとしても「リレーショナルモデル」に対する考え方は変わらないので、例えMySQLが将来衰退してしまったとしてもデータベースエンジニアとしてやっていくなら役に立つだろう。

他にも、オペレーティングシステム(特に動作原理について)、コンピュータアーキテクチャ、ネットワーク、ストレージ技術、高可用性、プログラミング言語などの知識は非常に応用が利くので、いくら勉強しても無駄にならない可能性が高い。また、コンピュータを扱う上では数学の知識が重要になるので、数学について改めて勉強するのも大いにアリだ。数学は将来的に廃れてしまうということはないので、安心して学ぶことができるだろう。余談だが、数学がきっちりとベースになったアルゴリズムは強い。リレーショナルモデルが登場してからずっと使われ続けているのは、しっかりと数学的な理論をベースにしているからだと言える。そういった知識は将来的に無駄にならない可能性が高い。

また、コンピュータの知識だけにとどまらいのであれば、文章力やプレゼン能力を鍛えるというのも良い。ITに限らず様々な分野でも応用が利くスキルだ。(私がブログを書いている理由のひとつには、文章力を磨くという目的があったりする。)これからもITに携わっていくならば、英語力を伸ばすのも必要だろう。英語圏の人とコミュニケーションをとる機会はどんどん出てくるし、何よりも英語の文献には優れたものが多いので、それらをスラスラ読めるのは大きなアドバンテージとなるはずだ。

幾らかのスキルは無駄になるのが自然

勉強したことすべてを将来に活かそうと考えるのは間違っている。幾らかは将来に繋がらないものが出てきて自然であり、将来に繋がるものがあればむしろラッキーだと考えたほうが良いだろう。その方がクヨクヨしなくて済むし、勉強する前に躊躇うこともなくなる。

本を読む前にその本に何が書いてあるかが分かるだろうか?そんなことはない。スキルを習得するのも同じで、やってみなければ分からないのである。

実は、私は前職で学んだテクノロジーを今の仕事で活かせているとは言い難い。今の仕事をする前は、サン・マイクロシステムズでサポートをしていた。(その後MySQLへ転職したがすぐに買収されてサンに戻ることになったのだが。)主にサーバーやストレージといったハードウェアのトラブル対応、具体的には切り分けおよびパーツ交換が主業務であった。当時最も高価であったSunFire 15Kシリーズなどのメンテナンスもよく行った。フルスペックで総重量2tにもなるこの大型のマシンには、データの転送経路(すなわちバス)を構成するチップ上にエラー検知回路がついていて、そこで検知されたエラーはシステムコントローラに保存される。そのログの内容や診断ツールの実行結果を見て切り分けを行ったりするわけである。チップがどのように接続されているかというレイアウトと、出力されたエラーの内容などから、どのチップに問題があったかという犯人探しをするわけであるが、迅速かつ確実に切り分けができるようになるにはそれなりの修練が必要となる。が、そんなノウハウは今や何の役にも立っていない。

当時の役職はTAM(テクニカルアカウントマネージャ)のようなものであり、担当するお客さんが使っているハードウェア・ソフトウェアは全てやるというスタンスの業種だった。当時サンが販売していた製品の種類は数多く、それを全部面倒見るなど無茶ぶりだと思いつつも、反対に「これは色んな知識を身につけるチャンスなんだ!」と自らを奮い立たせて様々な製品を触ってきた。サーバー以外では大小様々なストレージ製品を担当する必要があったし、Solarisやクラスタリングソフトウェア(当時はSun Clusterと呼ばれていたもの)なのシステムソフトウェアを触ることも多かったが、中でも面白く、かつ苦労したのは階層型ストレージと呼ばれるものだ。ディスクをキャッシュとして使い、テープライブラリに大規模なデータを記録するSAM-QFSというファイルシステムなのだが、テープもソフトウェアもよくトラブってくれた。(今ではSAM-QFSはOSSとして公開されている。)前職で携わった製品の例を挙げればキリはないが、今の業務にはどれもほとんど関係ない。

非常に無駄が多いように思えるが、収穫が皆無であったわけではない。先に挙げたような汎用的知識(コンピュータの動作原理等)について学ぶことができた他、サポートという業務をする上で必須の「切り分け」や「顧客対応」のスキルが残った。そのお陰でサポートとしてMySQLに入ることができたし、そして今日も食いつないでいる。

そんなわけで、「無駄になるかも」ということはあまり気にせず、目の前のことに懸命に取り組むというのもひとつのアプローチじゃないかと思う。どれだけ上手くやろうとも将来に活かせないスキルはあるし、無駄になろうともそこから学べることはゼロではないのだから。

広く学ぶ

汎用的な知識は非常に重要だが、幅広く色々勉強するというのも重要であるように思う。それは次の理由からだ。

まず第一に、幅広い知識を持つことで考え方の幅が広がる。人間誰しも気を抜いてしまうと盲目的になりがちだ。だからそうならないように色んな分野の知識を身につけておいたほうが良い。幅広い知識を身につけておくことで、今後どのような技術を学んでいこうかという道標を見出すこともできるし、現在メインで学んでいる技術についても多角的な視点から見つめなおすこともできよう。矛盾のように思えるが、そのほうが返ってより理解が深まるということもあるのだ。

特に苦手な分野の勉強というものは効果が高い。苦手な分野の知識は伸び代が大きいからだ。もし苦手意識を持って手につけていない分野があれば、それは大変勿体無いことである。ぜひ苦手な分野にも怯まずチャレンジして欲しいと思う。

幅広い知識を身につけたほうが良いもうひとつの理由は、重点的に学んでいる技術が例え廃れてしまっても、別の技術への乗り換えが比較的容易になるという利点がある。IT業界の変化は激しいので、隆盛を誇る技術が廃れてしまう運命からは誰も逃れることはできない。技術者として食いつないで行くには、そういった強かさもときには必要ではないかと思う。

悩む前に手を動かす

どのような知識やスキルを身につける場合でも言えることだが、とにかくまずは手を動かすべきだ。「何を勉強しようか」などと悩んでいては何も身につかない。考える前に手を動かそう。そうすれば確実にその分成長できるだろう。

私は現在40歳手前なのだが、まだまだ成長しなければいけないと思っている。コンピュータでメシを食っていくなら、死ぬまでスキルを身につけるべきであると考えているからだ。まるで止まると死んでしまうマグロのように、一生勉強し続けなければならないし、そうしたいと考えている。

などと偉そうなことを言ってみたりしたが、実は私が「勉強しなければ」と思うようになったのは社会に出てからである。学生の頃は大変不まじめで、ギリギリ卒業することができたという体たらくであった。従って新卒の頃は大したスキルもなく、正直あのまま何も勉強していなかったら、今頃は食いっぱぐれていたことだろう。

そんな私だからこそ言えることがひとつある。それは、何を初めるにも遅すぎるなどということはないということだ。勉強にしろ何にしろ、もう年を取ったからやらないというのは間違いである。勉強する意思があれば、いつからでも始められる。勉強するのとしなかったのとでは、勉強したほうが明らかにより多くの知識を身につけることができる。あなたが本を1ページめくるごとに、あなたの知識は確実に増えていくのだ!そして、少しでも良いから努力を確実に積み重ねるのが大切である。日々の変化はさほど大きく見えないかも知れないが、1年後あるいは10年後にそれは大きな違いとなって実感できるだろう。

人生最後まで諦めるな。35歳定年説なんぞ糞食らえだ。ただ精進あるのみである!!

さいごに

私は若い頃遊んでばかりいてかなりの時間を無駄にしてしまった。そのことについて少なからず後悔がある。だからこそ、残された人生はのんべんだらりと生きていてはいけないという想いが強い。どうか皆さんも時間を無駄にせず、後悔のない人生を歩んで頂きたい。

大切なのは少しでも前に進むということだ。人によってそのペースには大きな違いはあろう。人と自分のペースを比べて焦る必要はない。だけど何もしなければ絶対に前には進まないということは強調したい。前に進むのは少しずつで良い。少しずつで良いが、確実に進んで行かなければならない。

キャリアに正解はない。どういった経験を積むべきかという点において、かくあるべきだという絶対的な法則など存在しない。キャリアは人それぞれユニークなものであるし、時代に合わせて戦略も変わってくる。それに合わせて身に付けるべき知識、スキルというものも変わっていく。だから何を勉強するかという戦略にも正解はないと思う。こんだけ長々と書いて正解なしかよ!と突っ込まれるかも知れないが、それが私の意見である。日々精進を怠らず、楽しみながら勉強すれば良いのである。それは年をとっても変わらない。年をとったからと言って、怠って良い理由はないからだ。少しでも良いので、しかし確実に前に進んでいくべきである。

最後に、技術を勉強する上で重要な前提条件について述べておきたい。どのような技術を学ぶ場合でも、倫理というのは非常に大切だということだ。技術を学ぶことで人はより力強くなっていくが、力が大きくなればなるほど使い方を間違ったときの代償も大きい。IT技術者であれば、まずはソフトウェアの自由についてよく知ると良いだろう。リチャード・ストールマンの「フリーソフトウェアと自由な社会」をまだ読んだことがないのであれば、ぜひ手にとって読んでみて欲しい。倫理について学べば、何のために勉強するかという目的意識にも変化が出るだろう。そして、それが新たなモチベーションに繋がるのである。


0 件のコメント:

コメントを投稿