プログラマの勉強

プログラマを取り巻く環境は進化が異常に速く、 常に新しい技術を学び続けなくてはなりません。 あらゆる技術は公開され、すぐに多くの人が学ぶことになるので、 学ばないことは相対的に技術力の低下になります。 学ぶことを止めた瞬間から年老いていき、プログラマの定年に近づいていきます。 必要な学習量は他のどんな職業よりも多いのではないでしょうか。

なお、技術が凄い人で学ぶことを苦痛に思っている人を見たことがありません。 常に楽しんで学び続けられる人でないとプログラマとして大成するのは難しいのかもしれません。

何を学ぶか

とにかく広く浅く学ぶ

基本的にプログラミングに関するあらゆることを学ばなければなりません。 古の時代から積み重ねてきた基礎的な技術から、バズワードと揶揄されるような中身のはっきりしないものまで、文字通り目に付いたあらゆるすべてです。

ただし完全にマスターする必要はありません。そんなのは不可能です。 その技術でどんなことができるのかをざっくりに把握し、そして重要なのは自分の知っている他の技術との関係性を理解することです。 新しい技術が自分の得意分野と関係するなら、将来性の判断もつきやすいでしょう。 定着しそうな機運が見え始めたタイミングで深く学べばよいのです。 現時点で関連性がなさそうなら、将来触れる機会もほぼ無いと思います。 なんかこんな話題があったなぁ程度の記憶を脳の片隅に残しておけばいいと思います。 すっかり忘れてしまっても構いません。

深く学ぶことより重要なのは、目に付く数を増やすことです。 Twitterや技術系サイトを常にチェックし、アンテナを高く張りましょう。 幅広い知識が得られるように情報源を選ぶのはなかなか簡単ではありません。 Web系の大企業なら社内チャットの技術チャンネルが必ずあるはずです。 興味の範囲外も含めて様々な技術情報が勝手に集まって来るので非常に有用です。 大企業の一番の利点はまさにこの点です。 (技術チャンネルが無いならさっさと転職しましょう) 積極的に参加してたくさんの知らない単語を目にしてください。

あ、誰が何の技術に興味持っているかは非常に重要なので覚えておきましょう。

ひとつ深く学ぶ

興味がある技術が見つかれば深く学びましょう。 一度に学ぶものはたったひとつで十分です。 そのかわり深く深く徹底的に調べましょう。 その技術について人に教えられるようになれば、コミュニティの中でもハブのような重要な役割になり、 それ以外の技術の情報がどんどん入ってくるようになります。

いつ学ぶか

余暇の時間をメインに勉強するのはお勧めしません。 だいたい仕事の後なんてのは疲れているし、休みの日には遊びたかったり用事があったり、 勉強を習慣づけるには不適切だと言えます。 勉強するのに最も適しているのは業務時間中です。

業務時間内で実際に仕事をする時間を3割程度に抑えましょう。 それ以外の時間は、チャットに勤しみ、Twitterを眺め、Webサイトを巡回し、インプットを増やします。 仕事中になにか気づいたことがあれば、とりあえずその仕事はほっぽり出し、 ブログを書くとか、ライブラリ化するとか、すぐにアウトプットするべきです。 急がば廻れという言葉があるように、寄り道したほうが最終的に成果が出ます。 もちろん、仕事の方は見積段階で3割程度の稼働を前提にスケジュールを組まないと、 不幸な未来しか待っていないでしょう。

どうやって学ぶか

とにかくコードを書いて動かすことが大事です。 しかしただサンプルを動かすだけでは面白くないしあまり意味がありません。 プロダクトコードに導入してみるのが一番エキサイティングです。 ブランチを切り、コードを書いてみて、プルリクエストまで出してみましょう。 そのプルリクエストを見せ、チームメンバーに技術の紹介をしたり、 より詳しい人がいるならレビューしてもらったりするとより効果的です。

まとめ

  • 常に学び続けないと死ぬ

  • 周りの人を上手く活用して学ぶ

  • ひとつでいいのでものすごく掘り下げる

  • アウトプットするとより良いインプットになって帰ってくる

  • 業務は最高の学びの環境である

業務時間に学んだりプルリクしたりしたら怒られるような会社ならさっさと転職しましょう。 会社は将来を保証してくれないけど技術は将来を保証してくれます。