ITエンジニアのスキル習得方法 ~特定の言語もしくはフレームワークを勉強する方法~

#はじめに
ITエンジニアに求められるスキルセットは多種多様であります。
また、◯◯だけできればよいみたいなことは稀であり、下手するとハードウェア知識からからマネジメント能力まで求められかと思います。
もはや重要であるのは「◯◯を知っていること」より「◯◯の習得の仕方を知っている」ことかと思います。


#スキル習得方法 流れ

####ステップ1
存在を知っておく(補足1)

####ステップ2
何ができるのか、他と何が違うのか知っおく

####ステップ3
とりあえず触る

####ステップ4
ドキュメントのチュートリアルを読む

####ステップ5
ドキュメントの構成を頭に入れる

####ステップ6
ドキュメントを隅々まで読む

####後は実践あるのみ！


#具体的に
####ステップ1
・qiitaのトレンドを毎週見ておく
https://qiita.com/

・特定の本屋さんに毎週行く
そこで知らない言語等があればキャッチアップします
＊個人的に大手町丸善、ブックファースト新宿が好きです

・著名なツイッターアカウントをフォローしておく
以下を参考
厳選！フォローすべき著名人Twitterアカウント48選
https://www.unionnet.jp/knowledge/twitter-follow48/

【厳選】情報収集に役立つ！AI業界著名人のTwitterアカウント10選 ～あなたのタイムラインに有益な情報を～
http://ainow.ai/2017/08/02/119211/

・著名なテックブログを読んでおく
例：
メルカリ
https://tech.mercari.com/

ネットフリックス
https://medium.com/netflix-techblog

グノシー
https://tech.gunosy.io/

facebook
https://code.fb.com/

uber
https://eng.uber.com/

####ステップ2
ステップ1で見つけた際に気になったらその場で確認
そうでない場合はまとまった時間をとって以下のようなものを参考にキャッチアップしていきます
例：
AWSのサービス一覧
https://aws.amazon.com/jp/

GCPのサービス一覧
https://cloud.google.com/products/

Azureのサービス一覧
https://azure.microsoft.com/ja-jp/solutions/

2018年のフロントエンドエンジニアならこの程度は知ってて当然だよな？
https://qiita.com/rana_kualu/items/96b303307d6435aedf8b

Datadog（モニタリングサービス）のサポート一覧
https://www.datadoghq.com/product/integrations/

####ステップ3
PJで必要になったものもしくはキャッチアップが遅れているものは公式ドキュメントを読みとりあえず触ります

####ステップ4
ドキュメントのチュートリアルを読む

ある程度メジャーなものは書籍が出ているので書籍を読んでしまいます。（補足2）

####ステップ5
ドキュメントの構成を頭に入れる

だいたい書籍を読んでいれば構成は頭に入ります。
（むしろ構成を入れるために読みます）

####ステップ6
ドキュメントを隅々まで読む

こう記載していますが、実際は時間があればになることが多いです。

####後は実践あるのみ！


#どのタイミングでどこまでやっておくか

キリがないのである程度諦める必要があります。
私の場合は、ステップ1,2はできる限り行って、ステップ3以降はPJが始まりそうなタイミングもしくは時間があるタイミングで行います。

また、AI等は特にそうですが、論文ベースな内容をどこまで追うのかも大変むずかしい問題であります。本当は論文に関しても一度著名な学会の論文を10年分くらい頭に入れて都度更新していくべきだと思いますが、そこは完全に諦めております。
人づてで聞いたもしくは目に止まったものの概要を読む程度になっております。


#より具体的に
新しいPJでPythonのDjangoを利用することになった.
(何も知らなかった前提で書きます。)

####ステップ2
何ができるのか、他と何が違うのか知っおく

ググります。

https://docs.djangoproject.com/ja/2.1/intro/tutorial01/

ググれば「PythonのWebアプリフレームワークであること」はわかります。

####ステップ3
とりあえず触る

Djangoを最速でマスターする part1
https://qiita.com/gragragrao/items/373057783ba8856124f3

####ステップ4
ドキュメントのチュートリアルを読む
はじめての Django アプリ作成、その 1~その 7までインプットします
https://docs.djangoproject.com/ja/2.1/intro/tutorial01/

また、書籍を一冊買います
Python Django 超入門 
https://amzn.to/2AO710d

####ステップ5
ドキュメントの構成を頭に入れる
https://docs.djangoproject.com/en/2.1/
このページをひたすらクリックして構成を頭に入れます

####ステップ6
ドキュメントを隅々まで読む

今回は隅々まで読むのは諦めます…

ステップ2を2分
ステップ3を半日
ステップ4を2日
ステップ5を半日

計3日で習得します

#まとめ
まずは知っておいて、書籍等で全体概要を頭に入れて、公式ドキュメントを端から端まで読むのが急がば回れで効率が良いです。
(補足3)

#補足
#####補足1
知っていることが多いと早く知れるのでまず知っておきましょう。
参考：「読書の技法」佐藤優著
https://amzn.to/2Rxom7K

#####補足2
どのレベルに普及していれば「触る」のか「PJで使う」のかはとても判断が難しい問題であります。
例えば、Reactはかなりメジャーなフレームワークではありますが名だたる企業が利用を辞めております。
https://tech.nikkeibp.co.jp/it/atcl/idg/14/481709/082000458/

書籍になっている時点で既に古いと考える方もいるかと思いますし、書籍になるレベルではないと汎用的ではないと考える方もいるかと思います。私は、触るまでは個人で自由に、PJで用いるのは書籍がでているレベルのものをと思っております。

#####補足3
githubに上がっているレポジトリ内のコードを全部読めればITエンジニアのプログラマとしての能力はokかと思います。
（どんだけだよって話ですが）

#####補足4
この人優秀だなぁと思うエンジニアは結構これを理解し実施している気がしますが、これをずっとやっていくのはかなり無理があり、「SE40歳定年説」は本当であると思っております。

#免責
私はなんでも知っているわけでも、常にこのようにぶん回しているわけでも、特段スキルがあるわけでもないです。
こういうのを書いちゃう系エンジニアです。
####（≧ω・）てへぺろ