勉強方法について考える
まえがき
最近は夏インターンに向けて就活を頑張ってる。面接も少し慣れ、よくある質問というのもなんとなくわかってきた。
よくある質問の一つに「新しい技術をどのように勉強していますか?」というのがある。今までは「取り合えず何かを作ってからきちんとしたドキュメントに目を通してみる」と答えていたが、勉強する内容によっても違うよなと思ったのできちんと整理するために書く。
何を勉強するのか?
一重に技術の勉強と言っても色々ある。とりあえず以下のようなものがあると思う。
- コア技術
- 周辺技術
- 先を見据えての勉強
- サービスからの要請
- 開発環境
- 広い知識
コア技術はReact、TypeScriptなどの開発のコアになる部分。これは勉強して使えるようになった!おわり!とはいかず、使い方を習熟させていく必要がある。
周辺は、CSSライブラリや状態管理ライブラリだとか、比較的すぐに勉強してすぐに使える部分。過去の開発でzustandとかChakra UIを使ってみて、Chakra UIはすごい良くてずっと使い続けてたりする。ただ、コア技術との境界は曖昧。
先を見据えての勉強はEdgeやWASMなど。今すぐ何かに使う訳では無いが、今後使うかもしれないようなもの。
サービスからの要請は、私のプロダクトでいうとThree.js。個人開発の場合は作るものを選べば勉強する必要のないもの。就職、興味がなくても触れなくては行けないような場面もあるだろう。他のものと違って素早く習得する必要がある。
開発環境は名前の通り。リンターやCI/CD、コンテナなども。
広い知識というのは、UXやアクセシビリティ、Web技術とは?といったやつ。
それぞれの勉強方法について考えたい。
コア技術
一番最初の勉強法は周辺技術と同じになる。ここでの勉強は習熟のための勉強ということになる。
ある程度踏み入った内容を解説してくれる書籍を読んだり、詳しい技術者を見つけてその人の発信を追うのが良い気がする。
周辺技術
新しいものをキャッチアップし、それらが良いものかどうかを見定め、使い方を学ぶ必要がある。
キャッチアップと見定めについては、分野に詳しい人を見つけその人の発信を追うのがかなり良い。そこから紹介の記事だったりに飛び、自分が勉強したほうが良い内容なのかを見定められる。
学びたいとなった後はチュートリアルなどをつまみ食いしながら実際に使ってみて、今後も使いたければ細かい機能もきちんと調べるというやり方が良い。最初に使ってみることで、ある程度土地勘を持ってネットの記事を読める。
先を見据えての勉強
まだあまりできていない。Edgeを使いたいし、WASMを一度くらい使ってみたい。
勉強法としては周辺技術と同じで良いと思うけど、他のものより優先順位が落ちてしまうのが問題。特に今は、まともなコードを書けるようになるためにコア技術の習熟に注力したい。
サービスからの要請
そのサービスだからこそ使う技術というのは利用者が少ないことが多い。勉強するための前提知識がわからないことが多いからネットの資料を漁るのもきつい。こういうときにUdemyが役立つのかなと思う。
開発環境
同じメンバーで開発してると同じ環境で固まってしまうから、いろんな人と開発して、あるチームで良いなと思ったものがあれば他のチームでも使うようにするのが良いと思う。あとは勉強会かな。
GitHubのコードを漁るのも良いのかなと思うが、どこから見れば良いかわからない。
広い知識
貪欲にやってるとキリがないから何か良い記事や本があれば見るくらい。
まとめ
どのように勉強するかと一言に言ってもケースバイケースだなということが整理できた。
どのケースでもTwitterで開発者を非公開リストで追うのがかなり良い。