Software Engineer として技術のキャッチアップをしていると、本当に幅広いトピックに出くわす。毎日が選択と集中の連続で、優先順位とモチベーションとの葛藤の繰り返しである。
新しいプログラミング言語をキャッチアップし、データベースからネットワーキングを総ざらいし、Computer Science の基礎やデータ構造・アルゴリズムについても知識の獲得を怠らず、業界トレンドや新しいフレームワークにも目をとおす。いや、しかし、ここに挙げた全方向性指向アンテナのようにキャッチアップをしている人なんて、おそらくいない。そして、不可能。
時間は有限であるから、何をどのタイミングで学ぶのか、というのは非常に重要な意思決定である。そこで、何を基準にどう順序立てて学んでいくのか。昇進に必要な明確な基準を達成するため?将来海外で働くためのビザ取得に必要な条件を満たすため?自分の知的好奇心に従うだけ?
条件はなんだって良いと思うのだが、あえて一言で言うなら、それは Make learning meaningfull と言う言葉に尽きる。自分にとって、自分が支えるサービスにとって、自分が貢献するチームや組織にとって、何が "Meaningful" なのか。その問いの答えの先に、学習で得た知識を本当に活かすべき理由がある。
新しいプログラミング言語を学ぶときに、それをどう現場に活用できるのだろうか。それを学ぶことで、今あるサービスのどのような課題を解決できるのだろうか。それをチームに展開するときに、どのような困難が想定されるだろうか。この本に書いてあることは妥当だが、想定される反論はなんだろうか。このツールはどこからどうみても既存の技術より優れていそうだが、ロジックでは説明できない、エモーショナルな部分が意思決定に作用するだろうか。
今日学んだ知識を、明日どう Meaningful にしていくか。それがこの漠然とした広大な知の宇宙を探検する、一つの指針になるのではないだろうか。