機械学習時代についていくの、自分には結構大変だった
先日、USの方がチャンスがあるって本当か?という話をちょろっと書いた所、反応を幾つか頂いたが、そのやり取りの過程で自分と結構認識が違うなぁ、と感じた。Kazuyoshi Katoと違うのはまぁいいとしても、ゲームプログラマの偉い人とも結構違う感じだったので、補足のエントリを書いておこう、という気になる。
自分で言うのもなんだが、自分はこんにちでは、まぁ機械学習の時代にうまく適応出来た、と思っている。
二年前くらいまでは結構ひーこらいいながら頑張ってたのでそう言い切る事は出来ない感じだったが、最近は「あー、これ数年前にやった奴の続きか。こう進歩したのね」みたいに思うような研究に多く当たるようになり、大分この分野の周辺で、専門性みたいな物を構築出来つつある気がしている。
自分の興味のある領域なら、2015年くらいまでの主要な研究なら、まぁまぁキャッチアップ出来ている。
2年遅れじゃん!というのはまぁそうなんだけど、プログラマとしては2年遅れなら上等じゃないの?というのが自分の認識。
なので一応うまくやったな、と思っているし、そこには自信も持っている。 だけど、これは結構大変だった。で、この、ここ数年の大変だった感じを、あまり共有出来ていないなぁ、と思った。
機械学習の時代が突然やってきたのは自分としては大きな変化で、激流といっても良いような時代の流れの中を生きてきた気がしている。 そしてその大きな時代の変化の為に、それまでの自分のプログラマとしての常識を大きく逸脱した、大きな適応を行う必要があった。
これは多分、最近プログラマになった人には伝わりにくい所だと思う。
最近プログラマになった人にとっては、データ分析というのは結構身近で、自分が経験無いにせよ、そういう物がプログラミングの世界で結構存在感があるのは、当然と思っているだろう。
そしてデータ分析に対する知識は、
自分の意図的な選択の結果に応じた程度の知識を有していると思う。
全然知らない人でも、全然知らなくて良い、という選択を自覚的に行った結果そういう知識の状態でいる訳で、
その知識の程度は自身でコントロールしてきた結果だと思う。
だが、私はそうでは無かった。
ここで示す事は出来ないが、自分には膨大なソフトウェア開発の経験と知識があり、
凄く多くの、それなりに重要な仕事をこなす事が出来、また、それが期待されていた。
そして、そうした経験や知識を構築する長い時間の中には、こんにちの意味でのデータ分析なんて、影も形も無かった。
データ分析についての知識なんて、全然選択をした機会がない。ある日気づいたらでかい顔してそこに居た。
自分がかつて見てきたデータ分析なんて、 クラッシュレポートだとか特定のユーザーアクションの統計情報をとって、それを元に仕様を決めたり潰すバグの優先順位を決めたり、という程度がせいぜいで、これは現代のデータ分析とは大きく異なる物だった。
この、自分が出来る事は凄く多いが、そこに新しく発生した巨大な一大分野が一切入っていない、 というのは、中年プログラマじゃないと、なかなか伝わりにくい所に思う。
前からちょっとずつ広まってきたのはそうなんだけど、いろいろ知っていれば知っている程、新しい全然違うものが着実に根を広げていくのを見過ごしがちだと思うんだよなぁ。 まぁそれは自分が油断してただけかもしれないけど、とにかくある朝気づいたら、突然でかい分野を占める巨人が隣に座ってたんですよ。いや、ほんと。
「そんな事言ってもさ。まだ経験が無ければ、新しい分野だろうがなんだろうが、やりたければそれをただやってみればいいってだけじゃんか」と思うかもしれない。
「それはOfficeチームからWindowsチームにうつるのと比べて、大きな違いなんて無いんじゃないか?
いろいろあるプロダクトやサービスのうち、レコメンドとか画像認識とか入っているチームに移るってだけでしょ?」
そんな風に思えるかもしれない。
そしてその認識の方が、多分本当は正しい。
でも自分はそういう認識で見れなかった。
自分は、データ分析と関わりのない多くの分野につていは凄く多くを見知っていて、そして逆にデータ分析の事は何も知らなかった。 だからいろいろ見知って想像がつくチームに移動する、という話と、全然知らない新たな分野に自分を適応させるべく、凄く最初の所まで立ち戻って最初からやってみる、というのは、自分にとっては全然違う事で、全く同じレベルで比較出来る事では無い。
自分が別のチームに移る時に、本当に何も知らない所から仕事をする、というのは普通は期待されない。 そのチーム特有の事はそのチームに移ってから学ぶにせよ、大きなバックグラウンドを持ったシニアなプログラマとして、かなり早い段階からチームの中心的な戦力の一人として働く事が期待される。
これは自分が優秀で凄い、とかじゃなくて、30代中盤でそれなりに経験があるプログラマなら、みんなそうだと思う。 webからデスクトップアプリのチームに移ったって、使いまわせる知識は凄くたくさんあるし、だいたいこの歳になればある程度は両方やった事がある物だ。 だから新しいメンバとしてよそのチームに入る時も、やっぱり少ししたらシニアなデベロッパとして働く事が期待される。で、それが普通に出来る。
でもデータ分析では、かつての自分にはそれは全然できなかった。 だからたくさんのチームのたくさんのオープンポジションがありますよ、という話は、全然前回の話とは関係無いんだ。
すでに大きな優位を持っているから新しい事に適応出来ない、というのは、有名なイノベーションのジレンマの個人版と言えると思う。 これは驚く程自分の回りでは良く観測された現象で、実際自分の周辺の凄く多くのプログラマは、意図的かどうかは知らないけど、 ほとんど誰もデータ分析の時代に適応出来なかった。
そもそも好きじゃないから、って人も一定数は居るはずなので、全員が全員時代についていけなかった、という訳では無いはずだ。 データ分析以外でも仕事はいっぱいある。
だが、自分の回りではデータ分析の時代についていったのなんて、多分kiidaxくらいじゃないか? 学生の研究分野のバラけ方と比べると、圧倒的にデータ分析屋が少ない。
そしてそのうちの何人かは、仕事の中にデータ分析的な事を取り入れようとしていた。 自分がやっているプロダクトやサービスに、データ分析をちょっと入れたりとか、 データ分析の勉強をしてみたりして、使える所は無いかとか考えようとしたりしていた。
でも、日常的な多くの重要な仕事の山の前に、そうした事を行っていくのはすべからく失敗した、というように自分の目にはうつる。 これは外野からそう見えただけなので、実態は違うかもしれない。
だが、やらなくてはいけない多くの重要な仕事の片手間でついていける程、ここ数年のデータ分析の変化は生ぬるいものじゃなかった。 というのは、そもそも我々は自分の分野については経験や知識を豊富に持っているので、比較的「楽して」ついていく事が出来ているのだ。 ところが、データ分析の分野で変化についてくには、それらの経験や知識はまったく役に立たなかった。 楽する事に慣れてしまった我々は、そこらの学生よりもついていくのが下手だったりする。
だからデータ分析についていこうと思ったら、この新しい分野の新しいやり方で生き残る為の、サバイバル的な能力とかを鍛えるところからやらなくてはいけなくて、 それはそのほかのチームに移るのとは全然次元が違うレベルで大変だった。
で、自分もこれには相当苦労した。 なんとなく自分はちょろく機械学習に適応出来たんじゃないか、 と誤解されている気がするが、すげー大変だった。 実際、どこまで本当に適応すべきか?というのは今でも悩んでいる項目であり、 例えば関数解析の学習は、途中で止めている。
辛かったという訳では無いので、苦労した、というのは適切な表現かどうかは分からないけれど、
それでも全く簡単な事では無かった、というのは強調しておきたい。
それまでの10年以上に渡るプログラマとしての常識を一度すべて捨てて、
それまで行ってきた多くの選択、例えばもう測度論はやらない、とか、論文を書かない、とか、
そういった多くの選択を全部見直して、
自分のやること、やらない事を一つ一つ決めていって、
これまでの10年以上でサボっていた事のツケを一つ一つ払っていった訳だ。
このツケの支払いは、現在進行形で続けている。
そういう凄い大変だったのを乗り切った背景には、日本に居た優位を凄くうまく使えた、というのも、一つにはあると思っているのだよね。 ひょっとしたらUSに行ったらUSに行ったで、俺は凄い奴でうまい事やったのかもしれないけれど。 でもそれってそんなに自明じゃないと自分では思うのですよ。
で、この5年くらいでは機械学習の時代に自身を適応させるってエンジニアとしては凄く大切だったと思っているので、 それが出来そうも無かった環境にはチャンスがあるとは言わない、と思うのですよね。 データ分析を2007年代とかからやってて、昔からずっとNNでいろいろ応用したりSVMでいろいろ解いたり、 そういう事をやってきた人がUSに凄いチャンスがあったのはまぁわかるんですが。 自分はそういう人じゃないし、大多数の自分らの年代のプログラマはそういう人じゃなかった。 まぁそんな老人向けの話なんてしてねーよ、と若者は切って捨てれば良いのですが。
自分たちは時代の先端に居なかった、という情けない話なので、自慢する事では全然無いのだけれど。 でも自分らの世代でデータ分析とは全然違う開発をずっとやってた人たちの中でこの時代に適応するのは、 凄く特別な選択を多く要求する、凄く難易度の高い物だと自分には思えたし、それを単にチームを移る事と区別出来ないというのは…正しく時代についていっているという事なので、良い事だと思います(ぉぃ)。