【学習方法】プログラミングスクールに通うまでの勉強方法

#この記事がお勧めの方
これからプログラミングを勉強して、未経験からエンジニアを目指そうと思っている人

#記事の概要
はじめまして、成宮と申します。
私はプログラミングスクールに通い、この度エンジニアとして企業から採用されました。

転職活動経歴は以下URLよりご覧になれます。

https://qiita.com/narimiya/items/b59db099b923b0b88330

**プログラミングスクールに通ったから**学習の質が高く、学習を円滑に行え、**ポートフォリオを作成**できました。

ポートフォリオの質がある程度あったから面接にも複数進め、内定を複数社からいただけました。
なので、スクールに通って良かったと思っております。

その**スクールに通うまでもいくつか準備**をしており、その準備した**結果今回の採用**に繋がったと考えております。

そこで、私がプログラミングスクールに通うまで実施した勉強方法について共有させていただきたいと思います。
1人でも多くのエンジニアを目指す方のお役に立てればと思い本記事を作成しました。

本記事では、勉強方法で工夫した点を時系列ごとに項目ごとに説明しております。
私は目次内の8を飛ばした項目を1ヵ月間で行い、スクールに入学しました。

#目次
1. プログラミングスクールに通うなら事前勉強は必須
2. スクールで学ぶ言語を知る
3. スクールで学ぶ言語が使われているサービスを知る
4. Progateで学習
5. Progateの課金ユーザーになる
6. オブジェクト指向を知る
7. SNSで発信し始める
8. 時間があれば自分でアプリを開発する
9. スクールのカウンセリングを受けて、入学手続きをする
10. 最後に

#1. プログラミングスクールに通うなら事前勉強は必須
まず心構えのお話ですが、プログラミングスクールに通うなら事前勉強は必須となります。

なぜ必須かというと、プログラミングスクールで学習する内容の質の向上と学習の時間短縮ができるからです。
学習の質の向上と時間短縮の2点について深掘りしたいと思います。

###学習する内容の質の向上
スクールで入学初期の学習では復習にもなり、**より質の高いinputになるから**です。

Progateで学習した内容以外にも、初めて習うことがスクールで入学初期の学習でも多いです。
なので、**事前学習なしだとinputの量がより膨大**になります。

したがって、事前学習しておくことは重要かと言えます。
また一度学習した内容を復習することはinputの質だけでなく、時間短縮にもなります。

学習の時間短縮にも複数のメリットがあります。

###学習の時間短縮
####スクールの在籍期間中にポートフォリオを作成できる時間が増える
学習時間を短縮できると、スクールで行う醍醐味のポートフォリオを作成できる時間が増えるというメリットが増えます。

エンジニア転職時のポートフォリオというのは、作品のことであり、自分のプログラミングを学習してきた実績や能力を評価してもらうための資料です。転職活動時の名刺のようなものです。

未経験の方で転職されるのであれば、ポートフォリオがなければ他の未経験で転職される方と差別化も識別化もできません。

したがって、エンジニア転職活動におけるポートフォリオを作成することは醍醐味となります。

####短い時間で学習したことをモノにできるという、アピールができる
エンジニアはテクノロジーの進化は著しく、日々勉強の毎日です。より短い時間でより質の高い学習ができる人材を求める企業は多くあるかと思います。

したがって、短い学習期間で学んでいく必要があり、そのためには初めの基礎の基礎、プログラミングスクールにまでの事前勉強は必須となります。

土台がしっかりしていればその後に乗ってくる知識の荷物は乗っかりやすくなるかと思います。

ただ闇雲に勉強することはよくありません。
勉強のための勉強になってしまうと良くないです。

勉強は手段ですから、目的は何かを考えることは重要かと思います。

そこでまずはどの言語で学ぶことになるかを知ることは重要たど思います。

#2. スクールで学ぶ言語を知る

スクールのサイトで、スクールに入ったら学ぶ言語を知りましょう。

私はHTML、CSS、JavaScript、Rubyでした。

ただ**目標を定めないと、質の高い勉強ができません**。
闇雲に勉強すると、勉強のための勉強となるからです。

おそらく皆さんもご経験されたであろうマラソン。
マラソンは目標の距離地点定めることなしに走れと言われて、長く走り続けれるでしょうか。
よりよいトレーニングになるのでしょうか。
恐らく目標の距離地点を定めておいた方が、よりよいマラソンになるかと思います。

自身が携わるかもしれない目標物、完成されたサービスを知ることは重要になると思います。

#3. スクールで学ぶ言語が使われているサービスを知る
以下よりご確認いただけます。

https://eh-career.com/engineerhub/entry/2019/01/08/103000

目標を知り、全体像を把握できたなら、実際に手を動かす学習に移ります。
その方法として、Progateで学習する方法があります。

#4. Progateで学習
Progateとはプログラミングが学習できるサービスです。
RPGのゲーム方式で勉強ができ、説明内容もわかりやすいです。

Progateの詳細は以下よりご確認いただけます。

https://tech-camp.in/note/technology/77523/

スクールで学ぶ言語を学んでいきましょう。
HTML、CSS、JavaScript、Rubyであれば、以下の順番でProgateのカリキュラムを勉強していきましょう。
①HTML、CSS
②JavaScript
③Ruby
④Ruby on Rails

ただしProgateで学ぶ上で絶対にしてはいけないことがあります。

####Progateを使う上でお勧めできないこと
Progateの同じカリキュラムを周回することはしない方がいいと思います。

結局、サービス開発を行うと復習をしますので、周回すると2度手間になります。

初めは理解が不十分になるのは当然だと思いますし、それをスクールで復習ができます。

スクールに通う予定がない人でも、サービス開発をする中で自分の理解の不十分な点がわかります。
そこで復習をしましょう。

サービスを開発するという目標を定めて逆算して自分の弱点を補っていく。
そうすることで少しずつプログラミングはできるようになっていきます。

Progateには無料枠と有料枠があり、無料枠では学びきれないところがあります。

#5. Progateの課金ユーザーになる
Progateの課金ユーザーになりましょう。有料といっても1,000円ほどで色々な言語が学習できます。
参考書を買うより安いですし、勉強の質も向上できます。

Ruby on Railsを1通り学ぶことができましたら、Ruby on Railsの概念を学びましょう。
その概念の1つにオブジェクト指向があります。

#6. オブジェクト指向を知る
オブジェクト指向は考え方の1つです。
プログラミング言語をわかりやすく設計できる考え方を、オブジェクト指向といいます。

オブジェクト指向とは、モノに注目した考え方のことをいいます。
コードの集合体や集約したモノを、1つのモノとして考えるので、コーディングが見易い利点があります。

Rubyなどの設計でもオブジェクト指向が使われています。
Rubyなどの言語はオブジェクト指向プログラミング言語と言われています。

すなわち、オブジェクト指向プログラミング言語はプログラミングがわかりやすいように設計されたプログラミング言語となります。

詳細に関しては以下のサイトからご覧になれます。

https://thinkit.co.jp/article/12996

https://qiita.com/narimiya/items/1411670e2da5c173a931

ある程度学習が1段落したらSNSで発信してみましょう。

#7. SNSで発信し始める
私は専用のアカウントを作成し、Progateカリキュラム修了の報告が初めの投稿でした。
その後、後に説明する軸をもって発信を毎日投稿を続けています。

なぜ発信する必要があるのか、何を発信すれば良いのかの理由から説明します。

####なぜ発信する必要があるのか
理由は人により様々ですが、発信すると以下の良いことがあるからです。
・技術やマインドのアウトプットになる
・アウトプットのレビューがもらえるので自己研鑽になる
・選考時に企業へのアピールになる
・毎日投稿をしていることで継続力があることを企業にアピールできる
・エンジニア仲間の輪が広がるので技術の共有や仕事につながる

それぞれの項目について深掘りしていきます。

####発信によるアウトプット
学んだことをアウトプットすると、**知識がより定着**します。
また自身が理解できていない部分がわかり**改善**できます。

さらに、その発信した内容について知らない方が見ることで、その人の知識にもなります。
また、その発信した内容を熟知した方が見れば、**レビュー**をしてもらえるかもしれません。

質の高いアウトプットを繰り返すことは自分の知識の定着だけでなく、**誰かのため**にもなることです。

**テクノロジーはみんなで進化させていくものですから、魅力的な発信をすることはエンジニアの資質の1つ**だと思います。

私はマインドに関してはtwitter、技術に関してはQiitaで発信をしていました。
理由はtwitterは文字数制限もあり、閲覧される方が全員エンジニアリングに携わる方ばかりではないからです。
Qiitaはエンジニアリングに関わる方が多いので、技術的なアウトプットを行っています。

####発信と選考
上記の発信によるアウトプットでも説明したように、エンジニアとして発信力は必要なものですから、選考時に確認されます。

もしアカウントがなければ**発信をしていない = エンジニアとしての資質はないのではないか**と考えられる可能性があります。

理解度合いや言語化の部分も、投稿内容から見られます。
エンジニアとしての資質があるのか、どんな人なのかまで見られますので、投稿の質は重要かと思います。

####じゃあ、どんな投稿をすれば良いのか。
軸を決めて投稿するのも1つかと考えています。
私はアプリ開発を軸に、開発に込めた思いや毎日するべきことの積み上げ内容です。

開発に込めた思いはそのまま面接でも話せることですし、聞かれる前の練習にもなります。

積み上げでは継続力を謳えます。

アピールの1つになると考えています。

####エンジニア仲間の輪が広がる
エンジニア仲間とつながることができるので、情報共有だけでなく、仕事にもつながることがあると思います。

今回は選考を意識したものであり、目的や投稿の内容にもよるので、あくまでも上記は1例です。

#8. 時間があれば自分でアプリを開発する
難易度高めですが、アプリ開発は最も勉強になる手法です。

学んだことのインプットをアウトプットできるからです。

また実戦で学んだことは、今後の実務でも活きてくることだと思います。

「敵を知り、己を知れば、百戦して殆うからず」ですね。

敵すなわち相手は、アプリ開発のことです。
自分の事を知っているだけでは勝負には勝てないからです。

ちなみに私はスクールに通うまでは開発はできていません笑
アプリ開発を経験をすると世界は一気に変わります。

なのでお勧めです。

新しい１歩を踏み出すためにスクールのカウンセリングを受けてみましょう。

#9. スクールのカウンセリングを受けて、入学手続きをする
スクールは高額なお金がかかります。本当に勇気のいることです。

ただスクールには返金保証期間があるところもあります。
なので途中で辞めることもできます。

試しに受けてみることで、エンジニアとして働いていけるかを知るきっかけにもなります。

2週間で辞めて独学してエンジニアを目指すことも1つだと思います。

#10. 最後に
私はスクールに通っても、独学でも諦めないことが大切です。

誰かと比べたり、自分はダメだと思ったり挫折しそうになることもあります。

私も今後経験する実務でも、壁にぶち当たることがあると思います。

しかし、諦めずに続けれる人がエンジニアとして向いているのだと思っています。

だから、少しでもプログラミングに興味があるという気持ちは十二分の才能です！

以上です。