$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

基礎技術の学習のモチベーションをどう保つか

最近、コンピュータサイエンスなどの基礎的な知識を学習するように心がけている。できる限り今後も長い期間役に立つ、寿命の長い技術や知識を付けておきたいためである。その一貫で アルゴリズムを学習 してみている。

学習をはじめて感じた課題

しかし、とりあえずアルゴリズムを学習してみると、学習を続けられるか分からないという課題も感じた。

  • 寿命の長い技術であるほど、日々の開発にすぐに利用できないことが多い
    • 例えばアルゴリズムを学んだとしても、それが役立つまでいくにはある程度長い時間が必要
  • 日々の開発に利用できていないと、モチベーションをずっと保ち続けるのが難しい
  • モチベーションが保てないと、結局途中で勉強をやめてしまい、日々の開発に利用できるレベルまでたどり着けない

流行りの技術とかは、すぐに開発に導入してみるとかができるので、とりあえずモチベーションは保ちやすい。しかし、数学とかアルゴリズムとかLinuxカーネルの内部構造とかは、ずっと勉強していればほぼ確実に役立ちそうだけど、日々の開発にずっと利用できなければモチベーションを保つことが難しい。

では、どうすれば寿命の長い基礎技術を、モチベーションを保ちつづけながら学習し続けることができるのだろうか。

自分の中の解決策

それで最近いろいろ考えてみたのだけど、自分の中では「正に今開発をしているサービスの分野の、基礎分野を学習していく」と良いではないかと考え始めた。

例えば、小説投稿サービスは文字を扱う分野である。そこで、ざっくりアルゴリズム全体を学ぼうとせず、アルゴリズムの中でも特に文字に関係することを学んだり、全文検索エンジンの中身を学ぶようにする。他にも、ソーシャルな要素が強いサービスならグラフのアルゴリズムを学んだり、AWSをメインで運用するならOSの仕組みやネットワークの仕組みなどを学ぶなどが考えられる。

このようにすると、自分の中でその基礎技術を実際のサービスに利用できるレベルまでいかなかったとしても、実際のサービス開発の中で基礎技術との繋がりを見つけたりすることがある。繋がりを見つけられると、日々の開発で少しは役立った感を得られ、モチベーションが増加する。さらに、もしかしたらこういう風に応用できるかも?という夢想も出来ることもあり、それを試してみることで、さらにモチベーションを高められる。

このようなことを繰り返していくと、寿命の長い基礎技術でも、モチベーションを保って学習を続けられるのではないかと思った。

まとめ

どうやってモチベーションを保って基礎技術を学習をするかという点が最近の課題だった。ひとまず自分の中で指針を作ることが出来た。今は小説を扱うサービスを担当しているので、ひとまず文字列アルゴリズム全文検索の中身を学習していくことから始めようかなと思う。

今は文字列マッチングの学習をしているので、これが一段落ついたら、検索エンジン自作入門を読みながら、自分で実装してみたい。