ビジネススキル 2020.09.17
脱・初心者!中級者を目指したい人におすすめのプログラミング勉強方法
こんにちは、CheerCareerエンジニアの古田です。
[未経験でも大丈夫!おすすめのプログラミング勉強方法【初心者編】](https://cheercareer.jp/ip_blogs/article/475)では、
「プログラミングってどうやって学ぶんですか?」といった、未経験者向けの勉強方法についてまとめていきました。
ただ実は、それ以上に多いのが「Progateなど、一連の基礎文法を学んだ後はどういったことをすればいいんですか?」といった質問。
**プログラミングはあくまでも言語であり、
「何か作りたいもの」があって初めて活用できる技術**でもあります。
そのため「ちょっと書けるようになった!」で止まってしまう人のために、
中級者になるための勉強方法についてもまとめていければと思います。
## プログラミング中級者ってどれくらいのレベル?
そもそも「プログラミング中級者」ってどれくらいのレベルなんでしょう?
こちらは人によってさまざまな定義があると思いますが、私は以下のように考えています。
| Lv | 詳細 |
|--|--|
| 初心者 | 基本構文が分かる、チュートリアルを写経して書ける |
| 中級者 | 組み込み関数や自作関数を扱えて、自分で考えながら1つのプログラムを組み上げることができる |
| 上級者 | 高度な機能を実装できる、全体設計が行えて、チューニングをしたりコミュニティに貢献できる |
そのため目指すべくは、
**「写経ではなく、基礎構文をもとに自分で考えながら機能を実装できるようになる」** くらいの実力を着けることです。
ぜひこれらを踏まえた上で、勉強方法をおさらいしていきましょう!
## プログラミング学習を始める前に行う3つの準備
実はこれは、[未経験でも大丈夫!おすすめのプログラミング勉強方法【初心者編】](https://cheercareer.jp/ip_blogs/article/475)と変わりありません。
必要なのは、以下の3手順。
1. 勉強のゴール(目標)を設定する
2. 現在の知識などを確認する
3. 学びたい、使用したい言語を確認する
さらにここに追加で考えていきたいのが「自分の伸ばし方」です。
自分が学生だった時代、どのように学習をしてきたでしょうか?
A:教科書などを利用して知識(文法や公式)を学び、体系的に学習した
B:問題集を利用して応用問題を何度も解き、実践的に学習した
もちろんAとB、どちらも行ってきた方がほとんどかと思いますが、
「どちらに比重を置いたか」
「どういう順番でやったか」などの習慣は、
プログラミング言語などの学習にも生きてきます。
**A:input中心、B:output中心の学習方法となるため、
最終的にどちらもバランス良くこなしていくことが鍵になります。**
これらを踏まえた上で、
AとBどちらから行おうかを考えつつ、
後に続くアウトプット編/インプット編を参考に勉強していきましょう!
## おすすめのプログラミング勉強方法:アウトプット編
### 1. システムを作る
こちらは「問題を解いてみる」という行為になります。
実際にシステムを作って、どこで躓いてしまうかを確認しながら、
自分自身のインプット状況を確認しましょう!
基本的にはどんなシステムでもいいので、
まずは作ってみることが大事!
それでも作るものに悩む!といった方は、
言語は何でもいいので以下のような機能を作ってみると効果的かもしれません。
- データ管理(CMS)
- TODOリスト
- チャット
- カレンダー
- ユーザーログイン
- webスクレイピング
上記のようなものを作れるようになると、
「今度こういうサービスの真似しようかな」と思った際に、大体の機能が作れるようになっていることでしょう。
### 2. 記事にまとめる
こちらは「ノートにまとめる」のに近いかもしれません。
最初に学んでいる時、自分でシステムを作る時、
「これ何度も調べたな」なんて気持ちになったことはありませんか?
その場合、まだ知識が根付いていない可能性があります。
もちろんプログラミング勉強の場合、
完全に覚えることより「調べれば分かる」くらいの感覚の方が大事なのですが、
何度も調べることであれば、
この先も引き続き調べることが多いかと思いますので、
自分の言葉でブログなどの記事にまとめてみましょう!
技術系の知識をまとめる上で
よく使われているのは以下の4サービス。
- [Qiita](https://qiita.com/)
- [Qrunch](https://qrunch.net/)
- [Crieit](https://crieit.net/)
- [はてなブログ](https://hatenablog.com/)
上記のサービスのどれでも、もちろんこれ以外でもOK!
もしブログがハードル高く感じるのであれば、
まずはTwitterで140字でアウトプットしていく形でもOK。
**大事なのは自分の言葉でまとめて、
他人にアウトプットできる場所を持つこと**です。
### 3. 人に話す
こちらは「自分の言葉で、他人に説明できるか」といった部分を確かめることができます。
**特に大事なのは、「何も知らない人に対して説明が行えるか」。**
まずはエンジニア同士で話せること、
最終的には非エンジニアに対しても説明できるよう、
本質的に理解できているかを確かめて行けると容易にステップアップができるようになります!
こちらはプログラミング友達を作るもよし、
全然知らない友人をつかまえて説明するもよし(笑)
2の「記事にまとめる」で、
Twitterに少しずつまとめていく手法を取った方は、
- [#プログラミング初心者](https://twitter.com/hashtag/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%88%9D%E5%BF%83%E8%80%85?src=hashtag_click)
- [#駆け出しエンジニアと繋がりたい](https://twitter.com/hashtag/%E9%A7%86%E3%81%91%E5%87%BA%E3%81%97%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%A8%E7%B9%8B%E3%81%8C%E3%82%8A%E3%81%9F%E3%81%84?src=hashtag_click)
などのタグも使ってみると
効果的に友人を増やすことができるかもしれません!
## おすすめのプログラミング勉強方法:インプット編
### 1. 書籍を活用する
自分の教科書を持ってみましょう。
書籍の選び方に関しては、
初心者編と同じく**「本屋で手に取り(もしくは試し読みで)これなら学べそう!といった本を1冊、真剣に取り組んでみる」**といったことをおすすめしているんですが、
それじゃ何がいいか分からない!という方には
Amazonの[ソフトウェア開発・言語 の 売れ筋ランキング](https://www.amazon.co.jp/gp/bestsellers/books/3229704051/ref=zg_bs_nav_b_3_492352)をおすすめしています。
基本的に「ベストセラー」はベストセラーとなる由縁があるので、ハズレを引きたくない!という方はそちらを参考にすると良いでしょう。
また、どんな言語を扱うにしてもぜひおすすめしたいのが
「[リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック](https://www.amazon.co.jp/%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89-%E2%80%95%E3%82%88%E3%82%8A%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AE%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%A7%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF-Theory-practice-Boswell/dp/4873115655/ref=zg_bs_3229704051_3?_encoding=UTF8&psc=1&refRID=M2KG4ATDBNV7PSKATMVB)」です。
- 変数・関数名の付け方、コメントの書き方など表面上の改善
- コードを動かすための制御フロー、論理式、変数などループとロジック
などなど、プログラミング言語を扱うにあたって避けては通れない考え方を学ぶことが出来ます!
個人でやっている分には「自分が分かれば良い」のですが、
仕事として扱う場合「誰が見ても分かるものを書く」のが大事になってきます。
こちらも合わせて勉強していくと、
より良いコードが書けるエンジニアになれます!
### 2. セミナーや勉強会に参加する
授業といったほどではないですが、
一人だけではどうしても進まない…!という方は、
ぜひセミナーや勉強会にも参加してみて刺激を受けてみるのもひとつの手です。
知識はもちろん、
モチベーションアップにも繋がります。
勉強・作業時間が確保できない場合は
「もくもく会(各々黙って作業をする会)」に参加をしてみるのも効果的です。
セミナーや勉強会を探す際は、
以下の2サイトがおすすめです。
- [connpass](https://connpass.com/dashboard/)
- [TECH PLAY](https://techplay.jp/)
一方にしか出ていないもの、
どちらにも出ているものなどあるので、
自分が興味のある分野があるかなどを確認してみるのが良いでしょう。
### 3. 人に聞く
勉強で行き詰まった際に、
先生や友人などに聞いていたかと思います。
プログラミング学習でもこの点は同じ。
ひとりで分からないことを抱えるより、
人に聞いてみて教えてもらうのが早かったりすることも多々あります。
たとえばTwitterで繋がった人、
セミナーや勉強会で出会った人。
必要であれば「[MENTA](https:://menta.work/)」などのサービスを利用し、
自分自身のメンターを探しても良いかもしれません。
分からないことをすぐ聞いてしまうとあまり効果がないので、
**まずは自分で1時間は調べてみる、それでも分からなければ人に聞く** というのを心がけてみてください!
## 中級者を目指したい人におすすめのプログラミング勉強方法 まとめ
いかがだったでしょうか?
初心者編と比べると抽象的なことも多く、
具体的なイメージに結びつかないことも多いかもしれません。
ただステップアップするには、
この抽象度を乗り越えていく必要があります。
誰かに導かれるものを作れるだけではなく、
自分で考えて作れるようになるためにも、
まずは1つずつ、書かれたことをこなすことを目標にしてみましょう!
基本的なサイクルは初心者編と変わらず、以下の4つ。
1. 目標を決める
2. 現時点での自分の実力を知る
3. 目標に近付くために必要な要素を知る
4. 必要な要素をひとつずつ身に着けていく
また、どうしても「勉強時間が取れない」
「なあなあになってしまう」という方は、
目標に合わせて**ゴールを達成するまでの期限を決める**といいでしょう。
おすすめは大体1ヶ月〜3ヶ月程度の期間。
この間は絶対打ち込む!と決めると、
逆算しながら取り組むことになるため、
より効果的に臨めるようになるかと思います。
ぜひ脱・初心者を目指して頑張ってみてください!