初心者のプログラミング勉強方法
どうも、shoheiです。
プログラミングの勉強方法について書きます。
俺的勉強方法のため、人によっては参考にならないかもしれませんが、実際にやっている勉強方法を書きます。
この界隈、常に新しい技術の会話がタイムライン上で飛び交っています。
その中で自分が面白そうだなと思った技術をキャッチアップして学び、自分の手で実装できるレベルまで理解を深めています。
新しいフレームワーク、アーキテクチャ設計、プロトコル・プラットフォームなど。
そんな勉強方法を紹介します。
勉強方法
流れは以下の通りです。
・新しい技術のチュートリアルをする
・新しい技術を使ってすぐ実現できそうなものを考える
・新しい技術を使い作りたいものを作る
だいたいこの流れで新しい技術を習得しています。
流れはすごい単純です。
チュートリアルから作りたいものを作り終えるまでの期間はだいたい1ヶ月をです。
目安として、新しい技術の俺的学習期間は1ヶ月です。
現在業務で使っている技術もこの流れで習得し、実務でさらに磨きをかけています。
新しい技術のチュートリアルをする
技術の内容を知り、サンプルコードを動かします。
ネット上にサンプルコードがあればそれを使いますし、体系的に学べる本があれば本を使います。
さらに、以下の点を確認しています。
1. 技術の用途(具体的に何に使えるのか)
2. その技術の歴史(誰か作ったのか、その作られた背景や恩恵は何なのか)
3. OSSか、コミュニティは存在するか(この技術が盛り上がっているか確認)
例えばFlutterだと
1. 技術の用途(具体的に何に使えるのか)
→ iOS/Androidアプリ開発できるマルチ開発フレームワーク
2. その技術の歴史(誰が作ったのか、その作られた背景や恩恵は何なのか)
→ Google、両OSのアプリ開発コストの削減
3. OSSか、コミュニティは存在するか(この技術が盛り上がっているか確認)
→ OSS、コミュニティは活発(多分)
この点を踏まえて確認すれば、利用する目的がさらに明確になり、サンプルコードが理解しやすくなります。
なお、サンプルコードはコピペではなく必ず写経して手を動かします。
新しい技術を使ってすぐ実現できそうなものを考える
新しい技術使い、1ヶ月ぐらいでできそうなものを考えます。
できれば身近で使えそうなものや、周りにないものを考えます。
勉強というよりかは新しい技術を使ってのアイデア出しですね。
もちろん、既に世に出ているもののコピーでも良いです。
モチベーション維持も兼ねて世の中に無いものを考えれるのが理想です。
新しい技術を使い作りたいものを作る
実現できそうな作りたいものが決まったら実際に作っていきます。
基本的にはチュートリアルで動かしたサンプルコードをベースにして作っていきます。
足りないコードはGoogleで調べて見つけます(ググる)。
作りたいものが明確になっているとコードの逆引き検索ができるようになります。
例えば「Flutterでカメラを使いたい」場合はGoogleで
flutter camera
と検索すれば、該当するソースコードや文献が出てきます。
検索して見つけたコードを実装して動作確認するっといった流れです。
このようにしてやりたいことを形にしていけば、新しい技術が身についていきます。
ただ、ググって出てきたコードが本当に正しいかどうか判断しないといけません。
コードを読んで今までの知見と比較して判断します。
比較できる知見が無い場合は、他に検索した文献と比較して判断をします。
それでも判断できない場合はとりあえず動かしてみてください。
失敗したらそのコードは動かないということなので他のコードを探すだけです。
一見、泥臭いやり方かもしれませんが、動かないコードの知見は増えるので、判断材料が増えて今後に役立ちます。
ここでのポイントは以下の通りです。
1. 逆引き検索でコードを見つける
2. 見つけたら本当に正しいコードか判断する
3. 実装して動作確認する(問題なければ使う、失敗したらまた調べる)
調べて作って調べて作っての繰り返しになります。
学習期間の目安
トータルで1ヶ月(30日)を目安としているのでその中での時間の内訳は
・新しい技術のチュートリアルをする
→ 3日
・新しい技術を使ってすぐ実現できそうなものを考える
→ 2日
・新しい技術を使い作りたいものを作る
→ 25日
あくまでも目安ですがこれぐらいです。
ちなみに最近学んだFlutterは約1ヶ月ほどでした。
勉強用に作ったFlutterアプリはこちらです(しれっと宣伝w)。
■ 陸上競技ストップウォッチ - SprintWatch PRO
・iOS
https://apps.apple.com/jp/app/track-field-sprintwatch-pro/id1470587725
・Android
https://play.google.com/store/apps/details?id=com.gmail.hukusuke1007.sprint_watch_pro
・Github
https://github.com/hukusuke1007/sprint_watch_pro
番外編
モチベーション維持のため、作りたいものを作る上で毎日必ずGithubにコードをコミットします。
Githubはコミットの状況を色で表してくれています(草生やすと言われているアレ)。
(左側ハゲてるのは気にしないでw)
草が生い茂るようコミットをしていくとモチベーションの維持もできるかと思います。
余談ですが、エンジニア採用で転職者のGithubのコミット数を見て判断する企業もいるようです。
いかがでしたでしょうか。
有難いことに、ネット上には様々な技術文献が紹介されています。
さらに英語で検索すると潤沢に知見が手に入ります。
またこの学び方をすれば自走力も必ず身につきます。自分の力で情報を仕入れて動かすという行動が自走力につながるのです。
ぜひトライしてみてください。