こんにちは!seiです!
- プログラミングを独学したいけど、どのくらいの時間勉強する必要がある?
- 独学のほうが時間がかかるのかな?
- 時間効率を高めたい!
今回は独学でエンジニアになったseiが解説します!
この記事の信頼性
僕は完全に未経験で独学でプログラミングを習得しました。
大学の専攻も農学系だったので、プログラミングには全く触れていません。メンターや質問なども使っておらず、完全にネットと書籍のみで学習しました。
プログラミングを習得したことで、SEとして外資系IT企業に入社できました!また、一年で転職して年収を150万円上げています。
プログラミングの独学にかかる時間は500時間です
僕の場合、プログラミングの独学に要する時間は約500時間でした。
ここで言う独学に要した時間とは、「全く知識0の状態からWebアプリを完成させるまで」と定義しています。
かなりスムーズに進んだほうだと思うので、一般的には600時間前後かかるのではないかと思います。
この時間を聞いて、あなたは多いと思いましたか?少ないと思いましたか?
なぜこのように時間がかかるのか、大まかな項目別内訳を紹介します。
大体以下のような時間配分になると思います。600時間で想定してます。
HTML、CSSの学習 160時間
全く経験0の場合は、一番最初に最も多くの時間がかかります。HTML,CSSの学習は他の項目と比べて比較的簡単です。一日8時間を20日くらい勉強すれば、ホームページを作成できるようになります。
あとはCSSをどこまで極めるかによって学習時間が変わってきます。僕はスクロールすると文字が浮かんできたり、画像が切り替わるカルーセルを実装できるくらいまで学習しました。
HTTPなどのプロトコルの学習 20時間
あなたがパソコンのブラウザ(safariやchrome等)を開いてウェブページを表示するとき、インターネットに接続してWebページと通信します。この時の通信の方法にはHTTPプロトコルというものが使われています。(通信の方法はほかにもいくつか種類があります)この辺が分かってないと、どうしてWebページが表示されるのかが分からないため、自分のPC上に構築したものを全世界に向けて公開することができません。
大体20時間くらい学習すればOKです。
PHP等のサーバサイド言語の学習 30時間
ここから皆さんが想像しているプログラミングの学習っぽくなってきます。if文やfor文を使って計算をしたり、データをいじったりするにはどうすれば以下を学習します。
if文やfor文、配列、変数、関数を学べば、ある程度システムを作れるようになるので気にせず進みましょう。オブジェクト指向は実際にアプリを作成しながらじゃないと良く分からないと思います。
大体30時間くらい学習に充てればよいと思います。
データベースの学習 100時間
あなたが会員制サイトにアクセスするときに自分の情報が表示されるのは、データベースにあなたの情報が保存されているからです。データをどのような形で保存するのかはいくつか種類があります。最も一般的に使用されているリレーショナルデータベースについて学習すると良いです。
リレーションの学習も含めて100時間くらいかなと思います。
フレームワークの学習 200時間
Webアプリケーションを作成するなら、フレームワークを必ず使用してください。開発効率とセキュリティが向上します。フレームワークは学習範囲が幅広くて、深くやろうとするとかなり時間がかかります。
ただ一度学習してしまえば、多言語のフレームワークも大体同じ機能、仕組みで動いているのできちんと理解するのがおすすめです。
データベースと絡んだORMの使いかtあ含めて200時間ほどかかりました。
ネットワーク、デプロイ周りの学習 100時間
作成したアプリをみんなが使える状態にする(ネットワークに接続する)ことをデプロイと言います。デプロイするためにネットワークについて学ぶ必要がありました。
いろいろ選択肢がありますが、Herokuというサービスを使用しました。
当時はHerokuが無料で使えたんですが、今は月5ドルかかるようになってます。
大体100時間くらい学習するとよいと思います。
独学とスクールではどっちのほうが時間がかかるのか
独学のほうが時間がかかります。理由は
- 学習する手順を考えなければならない
- 気軽に質問できる相手がいない
- 資料を自分で探さないといけない
からです。
学習する手順を考えなければならない
独学の場合、学習する手順をすべて自分で考えなければなりません。
スクールの場合は手順もすでにあり、項目ごとに何をどれくらいすればよいのかはっきりしているので、手順で悩む必要はありません。
気軽に質問できる相手がいない
独学の場合は分からないことがあっても気軽に質問できる相手がいません。謎のエラーや変な状況に陥っても相談できる相手がいません。
teratail(テラテイル)はプログラミングに特化したQ&Aサイトです。実現したい機能や作業中に発生したエラーについて…
資料を自分で探さないといけない
独学の場合は教材や資料もないですので、自分で探さないといけません。
ただ、書籍はこの段階では用意しなくて良いのではと思っています。書籍は網羅的に知りたい場合や、とことんまで詳しく知りたい場合に適しています。
独学でWebアプリを作る程度であれば、そこまで詳しく知らなくてもネットで手に入る情報で十分だと思います。またエンジニアは情報の鮮度が大事です。情報のネットに上がっている情報のほうが新しい場合がほとんどです。
逆にスクールに通ってる人も、教材のみではなくネットにある資料もちゃんと活用したほうが良いです。
プログラミングの独学を効率よく進めるには?
プログラミングを効率よく進めるには以下の点が重要です。
- アウトプットを意識する
- 動画を活用する
- ChatGPTを活用する
アウトプットを意識する
プログラミングを学習する際は必ずアウトプットを出しましょう。
なぜなら、プログラミングは学校の勉強と違うからです。学校の勉強は隅々まで暗記していることが求められますが、プログラミングは完璧に暗記してなくても構いません。それよりもアプリケーションを動かすコードを書いたほうが良いです。
同じような処理なら同じような書き方で書くことができます。細かい部分は書いてるうちに覚えるのでアウトプットを大事にしてください。
例えば、if文、for文を学んだらこれを使った簡単な計算処理を書いてみる、Dockerやネットワークを学んだら実際にコンテナを作成して実践してみるということが大事です。
「理解したからいいや」でアウトプットをおざなりにして、後々分からなくなる人がたくさんいます。理解したと思っても、実際に作ってみる段階でしか気づかない事、理解できてない部分に気づくことが多々あります。
動画を活用する
この時代に書籍やネット記事だけで学習するのは縛りプレイとしか考えられないです(笑)
動画を積極的に活用しましょう。
動画の情報は、文章の情報と比べて5000倍情報量が多いという調査があります。
あらかじめ、ある程度知ってる内容なら文章のほうが効率が良いですが、何も分からない初心者は動画を見てください。(マジで)
僕も最初の頃は動画にかなりお世話になりました。動画がなければ独学で8か月という短期間でアプリを完成させられませんでした。
エンジニアがよく使っているサイトに「Udemy」というサイトがあります。有料で「現役エンジニア」の動画が見れます。困ったら活用してみてください。
Udemyは、学びたい人、教えたい人のためのオンラインのマーケットプレイスです。プログラミング、マーケティング、データサ…
ChatGPTを活用する
chatGPTはプログラミングの質問に対しては、かなり正確な情報を返してくれます。せっかくAIが調べなくても詳しく教えてくれるのに、活用しない手はないです。
特にバグ関連で質問すると、ヒントになって解決できることが多いです。プログラミングはバグの解消に一番時間がかかりますからね。
おすすめは有料のGPT4です。抽象的な疑問にも正確に答えてくれます。
独学にかかる時間は気にしなくて良いです
独学に何時間かかるかは気にしなくて良いです。
なぜなら、独学にかかる時間はアプリの難易度や、その人の素質によって変わってくるからです。
あの人より進むのが遅いとか、時間がかかりすぎてることを気にする必要はないです。
一番気にしないといけないこと
一番気にしなくちゃいけないのは
自分がプログラミングが好きかどうかだと思います。
プログラミングも結局かけた時間が物を言います。最初の学習効率の良さはほとんど影響しないです。
少なくともやってて苦痛じゃない状態じゃないと、エンジニアはやめたほうが良いです。僕が出会ってきたエンジニアはプログラミングが好きな人が多いです。休日も普通にプログラミングに費やしている人がたくさんいます。
他の職種だとこういう状況は稀だと思います。仕事で営業している人が趣味で休日に営業するでしょうか?する人もいるかもしれませんが、50%はさすがにいかないですよね?
僕の出会ったエンジニアで行くと、業務時間外でプログラミングをしている人は50%程です。
この職種に飛び込んであなたは仕事を楽しいと思えるのか、真剣に考えてみてください。
プログラミングは向き不向きが結構はっきりしていると感じています。大学の数学の博士号をとるような頭が良い人でもプログラミングができない人も見てきました。
プログラミングができないからと言って、頭が悪いとは限りません。
それでも「やっぱりやってみたい」と思える人はエンジニア目指してみてください!僕はエンジニアになってほんとに良かったです。
あなたのプログラミングライフが楽しいものになることを願っています。