文系大学生が1年半プログラミングを独学して新卒エンジニアとして就職するまで~0~3ヶ月目まで編~

この春大学（文系学部）を卒業し、都内のweb系の会社でエンジニアとして働くことになりました。
大学3年の8月~現在まで約1年半強独学で（スクールなど通わずに）学んだ方法や経緯、やってきたことなどをまとめました。

主な読者ターゲットは
・**文系だけどエンジニアになりたい人**
・**金銭面などで高価なスクールに通えなく、独学でやるしかない人**
・**これからプログラミングを初めてみようと思う人**
・**始めたばかりだけどもはや挫折しそうな人**
などです。
よろしくお願いします。


#0~3ヶ月目

##最初はProgate
やはり最初は[Progate](https://prog-8.com/)からはじめました。
月1000円でお手本コードを参考にしながら、開発環境整えることなしに、インターネット上ですぐにコードを書き、結果が確認できるサイトです。

月1000円はかかってしまいますが、**早く終われば終わるほどコストを抑えられる**と考えて2ヶ月ほどでHTML,CSS,JS,Ruby,Railsを終わらせました。
ProgateのRailsコースはTwitterの簡易版（ユーザー登録して、投稿して、閲覧して、削除してというCLUD機能がついたもの）を作るものだったのですが、1周してあまり理解ができず、結局２周くらいしたと思います。
（あとあとわかりますが、この段階ではTwitterクローンの作り方がわかっただけ(もっというと、わかったふりして写経しただけ)で応用力は全く付いていませんでした）

##自作サイト作成へ
そのあと、自分で似たようなサイトを作ろうと思ったのですが、例えば「こんなアプリ作りたい！！」と思っても、いざ自分のサイトを作ろうとすると、**「ProgateではTwitterのこの機能作るのにこのコマンド**（プログラムやったことない人は、うまいことプログラムの部品を作成してくれる英語の文字とでも思ってください）**を打てばいいのはわかったけど、自分のサイトに置き換えると、この種類のコマンドはいつ、なんのために打つのだろう」**という疑問が出てくることがたくさんありました。

例えば、Instagramのクローンを作りたいとして、Twitterクローンの作成では「Postコントローラーを作成して！モデルを作って！」と言われてその通り進めていたけど、Instagramクローンのどこでコントローラーやモデルを作成していいのか、なんのためにするのかほとんど理解していなかった気がします。

つまり,Progateで教わったコードやコマンドのほとんどが**「抽象＝＞具体」にらなず、ズーーーーっと抽象のまま**でした

勉強に例えていうと、
①教科書の演習問題を先生に教えてもらいながら一緒にやる
②その内容に即した練習問題を複数パターンやり、習得する
③テスト

となりますが、その**②その内容に即した練習問題を複数パターンやり、習得する**のフェーズがすっぽり抜けているような感覚です。


※地頭のいいひとはこんなフェーズなくてもいいっていう人がいるかもしれないですが、僕には必要でした。。。
また、大学卒業間近の3ヶ月、大学生向けのプログラミングスクールで、Railsのメンターとして働いていましたが、このフェーズはほとんどの人に必要、あるいはあったほうがいいフェーズだと思います。


##せっかくProgateやったのに応用できない問題の対処策

**②その内容に即した練習問題を複数パターンやり、習得する**という段階が足りていないと思った私は、

**・比較的短時間で**
**・色々なパターンの簡易サイトを作りたい**

と思い、色々なブログや動画サイトをみました。
しかし、どれも
**・初心者向けにしてはわかりずらい**
**・長すぎて飽きる**
**・そもそも一回一回そんなの探すのめんどくさい**
みたいな問題がありました。

そんなある時、Youtubeでこんな神動画に出会いました。
[12 Web Apps in 12 Weeks](https://www.youtube.com/playlist?list=PL23ZvcdS3XPLNdRYB_QyomQsShx59tpc-)
これは、「1つ1時間ほどの動画で、Railsを使ってサイトを作ろう！」というもので、全部で12個あります。
たとえば,Blogサイトであったり、映画のレビューサイトであったり、Todoアプリだったり・・・etc


このサイトで動画通りにサイトを作っていき、いくつもの具体例に触れることで、初めて一つ一つのコマンドやコードが
**「抽象＝＞具体」**へと変わっていったと思います。

12パターンもやれば（そこまでやらなくても十分かとも思いますが）、「コントローラーはこういう時に作るのか」「アクションがあるのはこういった理由なんだ」などとわかり、自分のサイト作成時にも応用が効くと思います。

##自分のサイト作成
ここまで準備して自分のサイト作成に取り組むと結構すんなりいけました。
僕が作ったサイトは「曲名を投稿してその曲のイメージをモチーフにした絵を絵師が書く」というものでした。
3ヶ月の甲斐あってユーザー数はなんと！！！！！！！！！
**0人です。**
現実を思い知らされました。
（ツイッターで「こんなサイトあったら面白そう！」というのがバズっててその通りに作ったのに・・・）

しかし「ユーザー登録」「投稿」「画像投稿」などwebサイト作成はできたんで、それで満足していました。

#有名なRailsチュートリアル
Railsチュートリアルはかなり有名なRails学習サイトなのですが、全くの初心者には少々難しいと思います。
『Railsチュートリアルを何周もして気合いで覚えた！！！』みたいな人がいますが、あれはすごいと思います。
「全然理解できないのに、何周もする」みたいなことは僕にはできませんでした。

基礎力をある程度つけた上で、Railsチュートリアルやれば、「Railsチュートリアル難しすぎ。挫折なう」みたいなことにはなりにくいと思います。

##その後

ユーザー0人（のくせに満足しちゃった僕は）にぶち当たった僕は、**Pythonで流行りの機械学習**をとりあえずかじってみることにしました。
Python（「パイソン」も「機械学習」もかっこいいから）を習得しようとした僕は、これが意外なタイミングでやくに立つことになり、ちょっと鼻が高くなりましたが、~~~~これままたの機会に・・・（てか明日書きます）~~
書きました。
[文系大学生が1年半プログラミングを独学して新卒エンジニアとして就職するまで~3-6ヶ月目（機械学習）編~](https://qiita.com/wjtnk/items/3bb0af06e8251c93f057)



次回は、
**・webサイト作成してみたけど、次何しようか迷っている**
みたいな人に一番みてみてほしいと思います。

##まとめ
WEBサイト作成で、一番すんなりいく学習手順は、
1,ProgateでHTML,CSS,JS,Ruby,Rails
2,Youtubeの[12 Web Apps in 12 Weeks](https://www.youtube.com/playlist?list=PL23ZvcdS3XPLNdRYB_QyomQsShx59tpc-)で色々な具体例に触れる
3,自分のサイト作成
4,Railsチュートリアルで少し上の技術に触れる

がいいと思います。

いうまでもないですが、「お金がたくさんあって今すぐにでも転職したい」などと考えている人は、プログラミングスクールに通うのが近道だと思いますが、いかんせん高いものがほとんどですので、「時間が比較的あるひと」「お金をできるだけかけたくない人」は参考にしていただければと思います。