社会人生活を始めてから 2 年が経過した. この 1 年の振り返りと次の 1 年の目標を整理する.

2 年目の振り返り

チームに約 2 年いて, 自分が果たすべき役割がかなりはっきりしてきた.
作っているアプリに対して, 自分がやるべきこと, やれること, 今後どうなっていくのかということが見えてきた. また, 最初はアプリやソースコードの規模に圧倒されていたが, ようやく全体を把握できつつある. もちろんあらゆる細部までを把握したわけではないが, 主要なところは一通り抑えたという感覚がある.

仕事をしていて意外だったのは, 案外ベテランでも知らないことはあるということ. 凄い人は何でも知っていそうに見えるが, 本当になんでも知っているわけではない (当たり前だが). 経験の浅い自分でも, 特定の分野に限って言えば凄い人の劣化版としてではなく一人前の活躍ができるという手応えが得られた.
この経験の影響で, 一つに分野に集中して知識を深めることや, 他の人がカバーしてないマイナーな分野に力を入れることが有用であるという考えが形成されてきた気がする.

プライベートの時間でも技術書を読んで勉強を続けてきた. メインテーマはコンピュータ・サイエンスを幅広く学び基礎を固めるということだった.
どういった分野を学ぶか, どういった本を読むかを決めるため Teach Youself Computer Science というサイトを主に参考にした. このサイトによると, コンピュータ・サイエンスは大きく 9 つの領域に分けることができる.

  1. プログラミング
  2. コンピュータアーキテクチャ
  3. アルゴリズムとデータ構造
  4. 数学
  5. OS
  6. ネットワーク
  7. データベース
  8. コンパイラ
  9. 分散システム

それぞれの内容やおすすめの書籍, サイトなどが紹介されていて, とても分かりやすかったので勉強の指針とさせてもらっている.
この分類だと, この一年は主にプログラミング, コンピュータアーキテクチャ, コンパイラ辺りを学んだ. ずっと重厚な本を読んでいると疲れてきて直接の関係はない本も読んだが, 中でも関数型言語に触れられたのは良かった. 結構好みかもしれないと思っている.
どの書籍からも学ぶことが多く, 自分が如何にものを知らないか痛感する思いだった. まともな知識がないと考えることができないので, 知識があってようやくスタートラインに立てるということは日々実感している.
本当は学生時代に真面目に勉強していればこういった基礎が一通り身についていたのかもしれないが, 後悔しても仕方ないので地道に勉強を続けるしかない. まあ学生の頃に「Effective C++」を読んでもほとんど頭に入ってこなかっただろうと思うので, 経験を積むのが必要なことだったのかもしれない.

3 年目の目標

数十年スパンの長い目で見て, 「凄い人になる」というのを自分の中で大きな目標としている. 凄い人という言葉も曖昧だし, どうすれば凄い人になれるのかも分かっていないが, 今のところ身近にいる凄いエンジニアの共通点として以下の 2 点が重要だと思っている.

  • 基礎がしっかりしている
  • 得意分野にはとことん詳しい

そういうわけでまずは基礎を固めようと思って勉強してきたし, 今後も継続する. 具体的には, 上記の 9 つのリストのうちまだ触れていないネットワーク, OS などをまずは勉強する予定.
それに加えて, 何かの分野に集中して学びを深めていくことが必要だろうと思っているが, 未だこれといった分野を見つけていない. 早く専門を確立しないといけないと思って焦る気持ちがないではないが, 幅広い分野に触れつつ, しばらくは様子見をするつもり. もし今年度にこれはというものに出会えたらラッキーと思っている.

そして, 勉強は大事だが, そもそも何のために勉強しているのかという目標を見失いそうになっていたことに最近気づいた. 何か凄いものや面白いものを作りたくて勉強しているのだった.
つまり, 何を勉強したかではなく, 何を作ったかということが私にとっては重要なのだと思い出した. 今年度はインプットだけではなく, 何か作って成果物をアウトプットすることにも力を入れたい.