継続は力なり―大器晩成エンジニアを目指して

第5回 勉強の勉強

この記事を読むのに必要な時間:およそ 2 分

勉強

勉強と聞くと,どうしても学生時代を思い出してしまう。期末テストや受験などである。社会人になると定期的なテストもなくなり勉強をする必要はなくなると思っていたが,勘違いだった。筆者はIT業界のことしかわからないが,社会人になっても周りは「勉強」だらけだ。⁠先週リリースされたABCというライブラリの勉強会に行ってきた」⁠最近は深層学習を勉強していて画像認識を試している」などと,みなさんの周りにも勉強熱心な人がいるだろう。ソフトウェア技術の移り変わりが早いのもポイントだ。1年前に勉強したことが役に立たなくなっていることもまれではない。小学生のころは,大人がまさかこんなに勉強しているとは想像していなかった。

そんな事情を踏まえて,今回はソフトウェアエンジニアとして一線で活躍するために役立つかもしれない勉強についてまとめてみたい。

勉強のメタレイヤ

ソフトウェアエンジニアとして働いていくには,CPUアーキテクチャから始まり,各種低級,高級プログラミング言語,リンカ,コンパイラ技術をマスターすることが必須である。というのはもちろん冗談である。本稿では筆者からそのような「勉強すべきテーマ」を具体的に挙げることはしない。それよりも,

  • 何を勉強するのか(テーマ)
  • どのタイミングで勉強するのか(順序)
  • どれだけ勉強するのか(時間)
  • どのように勉強するのか(テクニック)

といった1つ上(メタ)のレイヤの「勉強」について説明する。

一般的に個人の学習能力の差はそんなに大きくないというのが筆者の実感である(ごく一部の例外を除く)⁠なので勉強で大事なのは個人の能力よりも,上記を戦略的に決めることである。

なぜ勉強するのか

なぜ勉強するのかは個人によって大きく違うだろう。例を挙げれば,

  • 知的好奇心を満たしたい
  • 仕事で必要になった
  • 最近流行っているから
  • 世界にインパクトを与えたい
  • 将来に備えるため

などがある。理由はどんなものでもよい。ただし,自分がなぜ勉強するかを理解することは重要だ。詳しくは後述するが,その理由により勉強のしかたが変わる可能性があるからだ。

テーマ

テーマはわかりやすいだろう。個人の嗜好(しこう)が大きく影響するところだ。できれば楽しいテーマを選びたい。iOS開発を勉強する,機械学習を勉強する,ファイルシステムのしくみを勉強する。どれを選ぶかで将来自分が関わる仕事,会社,コミュニティ,さらに言えば年収も違ってくるだろう。年収と聞いてぎょっとしたかもしれないが,たとえば求人のプログラミング言語別平均年収ランキングも発表されている。

テーマとして新しいものと枯れたもののどちらに取り組むかという選択肢がある。次の比較を読んで,自分に合ったものを選んでほしい。

新しいものに取り組むことには,次のメリットがある。

  • 自分がそのテクノロジの方向性に大きく関与できる可能性がある
  • 何らかの先行者利益を得られることがある
  • 最先端にいるという高揚感がある

逆に次のデメリットがある。

  • 誰もまだ解決していない問題や落とし穴に多くの時間を使う必要があり,本質的な「やりたいこと」にたどり着くのが大変(yak shaving)
  • 書籍やWebの情報が少ない
  • 「定まっていないこと」が多いので,勉強したことが1~2年後に全然異なるものになっている可能性がある
  • 時の洗礼を受けていないので,ほぼ無価値の可能性がある

枯れたもの取り組むことには,次のメリットがある。

  • ほとんどすべての問題は誰かによって解決されているので,自分が取り組んでいる本質的な問題に取り組める時間が多くなる
  • 書籍やWebにたくさんの情報がある・時間が経っても生き残っているので,それなりの価値が保証されている
  • 求人の件数が多い
  • 成熟したコミュニティが存在する

逆に次のデメリットがある。

  • テクノロジの方向性に大きく寄与することは難しい
  • コミュニティの規模が大きいので突出することは難しい

何を勉強するかを選ぶ基準として,迷ったら「見晴らしの良いものを選ぶ」という方法がある。AとBというテーマで迷ったとき,次のことを考えて題材を選ぶのだ。

  • AはBを含むだろうか?
  • AをマスターすればBの習得はたやすいだろうか?
  • 自分の視点を上げるのは,AとBのどちらだろうか?
  • AとBのどちらを勉強したら,次にできることが増えるだろうか? もしくは勉強できることが増えるだろうか?

著者プロフィール

ひげぽん(Taro Minowa)

Software Engineer.

Mona OS/Mosh Scheme

URL:http://www.monaos.org/
技術ネタ:http://d.hatena.ne.jp/higepon