リモート開発メインのソフトウェア開発企業のエンジニアブログです

個人的な技術習得方法

はじめに

社内のメンバーから、他の人がどうやって技術とかを勉強しているのかに興味があるという話がありました。ということで、今回は、私の勉強法とかそういった自分語りをします。

個人的な経験談とかを語るのはあまり得意ではないし避けてた部分もあるのですが、要望もありましたし、それ以外の人にとって少しは役に立つかもしれないので、今回は頑張って書きます。

昔話

子供時代: 好きなことをやる

小学校中学年〜高学年くらいからプログラムを始めました。きっかけは良くある「ゲームを作りたい」というものです。

興味が無いと勉強が捗らないというのは、子供だろうと大人だろうと共通です。ここでの学びとしては、

「Xという技術はこれから流行る(儲かる etc.)から勉強しないと」

よりは

「Yって面白そうだし調べてみよう」

という選択をすべき、ということです。(前者が必要な場合もありますが。)

大学時代: 基礎は大事

大学では情報系の学科を専攻しました。それほど厳しい大学では無かったですし、平均的な学生だったのでそこまで真面目に勉強した訳ではありませんが、大学での授業や実習は、今思うと役に立っている部分はあるかなと思います。

勉強というのは土台が無いと後がツラいので、少し遠回りして基礎的な知識を勉強するというのも、長い(?)エンジニア人生では必要かなと思います。

私の大学時代は無味乾燥な教科書で勉強しましたが、最近は色んな分野で分かりやすく解説された本や丁寧な教科書などが色々あるようなので、勉強しやすい環境では無いでしょうか。

  • アルゴリズムとデータ構造
  • 基礎的な数学(線形代数、統計)

あたりはエンジニアでも勉強しておいて損は無いと思います。

具体的な勉強法

ここからは具体的な勉強法について書きます。が、さっき思い出したのですが、以前、お客様向けの講習で似たようなことを話して、ブログにもまとめてありました。

ということで、まずは上のブログ記事を見て頂き、以下で少し補足しようと思います。

書籍: 定番本1冊 vs. 複数冊

「目的に合わせて、定番本を1冊じっくり読む、複数冊をざっと読む、等を分ける」

と書きましたが、それについてです。

分野にとっては、「定番の書籍」というのが存在します。Scala のコップ本みたいなやつです。そう言う書籍があれば、それで勉強するというのは良い方法だと思いますが、1つ難点があります。それは、必ずしもそうした定番書籍を理解出来るとは限らないという事です。

具体例で言うと、機械学習の分野の定番本で「ビショップ本」というのがあります。私も持っているのですが、難しすぎてあまり理解出来なかったので、現在は本棚に眠っています。

なので、定番本がある場合でも複数冊買ってみるというのは良い方法だと思ってます。

「公式ドキュメントは一通り目を通す」

タイトル通りですが、公式ドキュメントは、当面使う予定の無い部分も含めて一通りざっと目を通しておいた方が良いという意味です。

マニュアルを一通り見ておくことで、以下のような事を防げます。

  • 何かやりたいことを実現する時に、既に存在する機能に気づかず、無駄に自分で実装してしまう
  • 分からない事があった時に、検索して不正確な情報を参考にしてしまう

「レビューされるだけでなくする側にもなる」

これは、他人のコードを読む、と言い換えても良いかもしれません。

プロジェクトリーダー的な立場の人であれば、

  • レビューは特定の人に集中させない
  • レビューは複数人に担当させる

という約束事にしておくと良いと思います。

「ネットで調べる場合は、信頼できる情報源から」

信頼できる情報源は何か?という話になりますが、順序としては

  1. 公式ドキュメント
  2. 公式フォーラム、issue tracker等
  3. StackOverflow 等の大手 Q&A サイト
  4. 信頼できる人(コミッター等)のブログ

という感じでしょうか。(異論はあると思います。)

日本語で検索すると Qiita の記事も結構引っかかりますが、玉石混交なので、初心者にはあまりお勧め出来ません。

勉強会に関して

以前、以下に1つ記事を書きました。今後も勉強会関連の記事はこちらに追加していく予定ですので、もし良ければ目を通してもらえればと思います。

勉強会 | もばらぶエンジニアブログ

具体的な勉強法(元記事に書かれていないもの)

仕事で新しい技術を導入する

技術習得は座学だけよりは実践からも学んだ方が速いです。

プロジェクトで技術を選定できる立場であれば、新しい技術を導入して、それについて勉強してみるというのもお勧めです。注意点としては、1度に導入する新技術は1つだけにすることです。1つだけであれば、仮に上手く行かなくても、途中で慣れた技術に切り替える事も比較的やりやすいです。

慣れた仕事はどんどん後輩に委譲する

ある技術に慣れてしまうと、徐々にルーティンとなって退屈になってしまいます。そう言う場合には、積極的に後輩や経験の浅いエンジニアに仕事を委譲してしまいましょう。

「他の人も出来るようになると自分の立場が危うくなる」

と考えて、仕事を手放さない人もたまにいますが、そうすると自分の成長の機会が少なくなり、長期的には結局仕事を他の人に奪われてしまうのでは無いかと思います。

まとめ

技術習得に関する、個人的な方法・意見をまとめてみました。人によって向き不向きはあると思いますが、参考になる部分が少しでもあれば、嬉しいです。

← 前の投稿

parquet-toolsでApache Parquet形式のファイルをローカルでお手軽に確認する

次の投稿 →

Firebaseのためのお手軽な開発環境2

コメントを残す