エンジニアになるために必要な勉強時間は?【結論:500時間でなれます】
こんにちは! seiです!
- エンジニア興味あるけど、どのくらい勉強しないといけない?
- どんな学習にどれだけの時間がかかる?
- エンジニアになった人の具体的な勉強時間が知りたい!
今回は独学でエンジニアになったseiがどのくらいの時間勉強してエンジニアになったのかお伝えします。 僕は農学部だったので今まで全くプログラミングに触れてきませんでした。なので、プログラミング未経験の方にも参考になるかと思います。
エンジニアになるために必要な勉強時間は500時間でした
結論から行くと、僕がエンジニアになるのに勉強した時間は500時間です。 エンジニアになるとは具体的には「アプリケーションを作成してデプロイする」のにかかった時間です。
この実績をもとに無職から、第二新卒として外資系企業にエンジニア入社を決めました。
ただエンジニアになるには一般的には1000時間必要だと言われています。
結構多いですよね。 平日2時間、土日8時間ずつ勉強しても9か月かかります。
僕が一般的な時間の半分くらいの時間でエンジニアになれたのは、学習する項目と手順をしっかり決めることが出来たからだと思います。
学習を効率よく進める手順
せっかく勉強するんだったら、効率よく勉強を進めていきたいですよね?
早くエンジニアになりたい人が大半だと思います。
僕が学習を効率よく進めるために意識していたことは以下の3つです。
- 目標物を決める
- アウトプットをメインにする
- 動画を活用する
目標物を決める
まずは目標物を決めましょう。 これが決まらないとどこに向かって進めば良いのかわかりません。
Webアプリを作成するのか、スマホアプリを作成するのか、それとも機械学習のモデルを作成するのか。 自分がなりたいエンジニアの種類に応じて決めてください。
アウトプットをメインにする
全ての学習項目において、何かしら成果物を作成することを意識しました。 例えばHTML,CSSを学習したら軽いデモサイトを作成するなどです。
よく情報収集だけして手を動かさない人がいますが、絶対NGです。
小学生の時を思い出して下さい。漢字の書き取りなどは先生が黒板でやっていましたよね? これ、先生の書く手順を見てれば「理解はできる」と思います。
ですが、漢字は普段の執筆で自分で書かないといけないものです。 なので一生懸命ノートに漢字を書く練習をしてアウトプットをしていたはずです。
プログラミングも同じです。 普段の業務の中で自分でプログラムを組まないといけないです。
小学生の時は漢字ですらアウトプットしてたのに、大人になってプログラミングを学ぶのにアウトプットをさぼるのはおかしいです。
動画を活用する
テキストだけ読んでいてもどうしても分からない部分が出てくると思います。あと、テキスト読んでると眠くなります(笑) そんな時は動画を積極的に活用していました。
特に初心者の時はすごく初歩的なことで躓いたりするんですよね。 例えば画面操作の方法とか、エディターの使い方とか。人によって躓くところもバラバラです。
テキストを作成する側も、自分にとっては当たり前、初歩的な事過ぎて説明しようと思いません。 というか気づけないんですよね。
動画ならエンジニアが実際に動かしているところを見て、分からない所を補えます。
あと、テキストは完成したコードが全部でてきます。 これだと、コードを書く人がどの順番でコードを書いていたのか、どこで手が止まって思考したのかよくわかりません。
動画ならこの辺の**「**うまく言語化できない知識」も手に入ります。
学習項目別にどのくらい時間がかかるのか
独学でWebエンジニアになった際には、以下の手順で学習を進めました。
- HTML,CSS(SCSS)の学習 160時間
- プログラミング言語の基礎文法の学習 24時間
- データベースの学習 40時間
- バージョン管理ツールの学習 24時間
- フレームワークの学習 192時間
- デプロイ、インフラ周りの学習 60時間
Webエンジニアになるために**「Webアプリの開発」を目標にしていました**。
HTML、CSS(SCSS)の学習 (160時間)
プログラミング未経験だったので、結構時間がかかりました。HTML,CSSの学習は****大体2か月くらいですね。 フロントエンドの基礎はココで大分固まりました。CSSのデザイン崩れのエラーでめっちゃ詰まってました。 フロントエンドエンジニアになりたいならしっかりやっておくべき項目です。
プログラミング言語の基礎文法の学習 (24時間)
プログラミング言語としてPHPを学習しました。
PHPの基礎文法は3日くらい学習しました。基本的にif文とfor文分かれば後は開発時に調べればよいです。 プログラミングの学習「言語の学習」に重きを置きがちですが、僕はそこまで重視してません。 言語は表現する手段であり、実現したいことはすべての言語で共通しています。 実現したいことを実装するための機能は各言語大体持っています。(構造体やポインタ等)
データベースの学習 (40時間)
サイトにログインしたときに自分の情報が出てきますよね? あれはサーバー上にあるDBにデータを保存しているからです。
DBの学習には一週間くらいかけました。mysqlを勉強しました。
基本的なテーブルの設計の仕方、外部キー制約などを学習しました。
バージョン管理ツールの学習 (24時間)
バージョン管理ツール(git)はシステムがバグったときに復元するのに役立ちます。 gitはプログラミングやる上で絶対に身に付けなければなりません。最優先事項です。 が、個人開発だと身につきにくいので3日ほど勉強しました。
基本的なコマンドの使用方法と、ブランチを利用した開発フローを理解しました。
フレームワークの学習 (192時間**)**
その後はPHPのフレームワークであるLaravelの学習に移りました。2か月弱かかりました。
フレームワークとはアプリ開発を進めるのに便利な機能が詰まったひな型みたいなものです。 今のWebアプリ作るならフレームワークも必須知識なので、重点的に勉強しておいて良かったと思っています。
デプロイ、インフラ周り (60時間)
ここまでで、自分のPC上で動くアプリケーションは作成できました。 ですが、これをデプロイするやり方がたくさんあって、かなり難しかったです。
具体的なものがイメージしにくいので、どうなってるかよくわからなかったです。 デプロイとインフラ周りを学習するのには一週間くらいかかりました。
プログラミング学習に時間がかかる理由
学習に500時間しかかかってないからスゴイと思うかもしれませんが、僕も最初の頃はめっちゃ効率悪かったです。 僕の体験をもとに初心者が陥りやすい学習が進まない原因をまとめました。
プログラミングの学習がなかなか進まない人の原因は主に以下の3つです。
- 学習の方針が立てられない
- 行き当たりばったりで学習する
- 最初から難しすぎることを学習する
学習の方針が立てられない
多くのプログラミング初心者の方は何を勉強して良いかわかっていません。 目指すべきゴール見えてない人が多いです。
例えば、東京から北海道に行きたいとしましょう。 地図を見たことがなくて、北海道が東京の北にあると知らない人は適当にさまようしかないです。 これではいつまでたっても北海道にたどり着けませんよね。
目指すべきゴールが見えてない状況は、上のような状態と同じです。
行き当たりばったりで学習する
「今日はこれをしようかな」みたいに行き当たりばったりで学習するのはよくないです。
これは例えば、「北海道も行きたいけど、京都もいっちゃお♪」「ここまで来たら九州まで行っちゃお♪」 結局北海道から遠ざかっちゃった(´;ω;`)
このような状態と同じです。 目指すゴールが見えたらそこに向かってきちんと進まないと、いつまでたってもプログラミングが身につきません。
また、プログラミングの勉強で少しでも躓いたら、「もっと楽でわかりやすいサイトはないかな?」と思ってネットサーフィンしてませんか?
ネットサーフィンする時間測ったことありますか? 絶対無駄な時間なので極力無くしましょう。
最初から難しすぎることを勉強する
最初から意気込んで難しすぎることを勉強すると、時間がかかります。 ひどい場合はそのまま挫折してしまいます。
例えば、最初から「C言語を勉強しよう。オブジェクト指向から勉強するぞ!」 こんな感じで勉強し始めると大体失敗します。
難しいことから始めると、
- 進まな過ぎて眠くなる
- 知識が増えないので成長実感がない
- やる気がなくなる
こんな状態になりがちです。
全然進まないなと思ったら難易度を落として学習してみてください。
まとめ
今回はエンジニアになるのに必要な学習時間を紹介しました! 人によって難易度も違いますが、僕は500時間でエンジニアになることができました。
これからもエンジニアとして成長できるよう頑張ります!
もっと「具体的な勉強方法が知りたい!」
そんなあなたに、僕が独学でエンジニアになった際の具体的なツールもまとめた記事があります。
是非読んでいってください!
[sitecard subtitle=関連記事 url=https://seiseiengineering.com/%e3%80%90%e7%84%a1%e8%81%b7%e3%81%8b%e3%82%89%e9%80%86%e8%bb%a2%ef%bc%81%e3%80%91%e7%8b%ac%e5%ad%a6%e3%81%a7%e3%82%a8%e3%83%b3%e3%82%b8%e3%83%8b%e3%82%a2%e3%81%ab%e3%81%aa%e3%81%a3%e3%81%9f%e5%8b%89/ target=]