こんにちは、フリーランスエンジニアのCOMです。
僕の詳しいプロフィールはこちら。
エンジニアになりたい人・フリーランスに興味がある人に向けてLINEマガジンの配信を開始しました。
これからエンジニアを目指す方で独学で勉強をしていこうと考えてる人はいると思います。
果たして独学でエンジニアになるのは可能でしょうか?
今回は「独学でプログラミングの習得は可能か?【学習方法を紹介します】」というテーマで僕の経験を踏まえながら解説していきたいと思います。
習得の定義が曖昧だと議論の意味がないので、この記事では以下のように定義させていただきます。
この記事での「プログラミング習得」とは、エンジニアとして固定給をもらいながら働ける状態になることを指します。雇用形態は問いません。
学習方法も合わせて紹介してるので、独学・独学じゃないに限らずこれからプログラミングを勉強して、エンジニアを目指す人必見です。
では、いきましょう!
独学でプログラミングの習得は可能か?【学習方法を紹介します】
結論、独学でプログラミング習得は、できます。
しかし、一般的にプログラミングの挫折率は9割と言われており、あまりおすすめはしません。
今独学を考えている人は、この記事を読んでから本当に独学でいくのか考えてください。
エンジニアについて
エンジニアは何をしてるんでしょうか?
エンジニアの仕事内容は、種類や案件の内容によって変わってきます。
Webサイトやアプリをプログラミング言語を使って作ることもあれば、アプリが動くようにサーバーを作ったり、外部からの攻撃を防ぐセキュリティ周りの仕事をすることも。
作るものも、アプリの場合もあれば、パソコンや自動車などの触れられる機械を作る場合もあります。
また、作るだけではなく、プロジェクトの進行をマネジメントしたり、作るものをお客さんと話し合って細かい設計をしていくのもエンジニアの仕事です。
エンジニアの仕事
エンジニアは一体どんな仕事をしているのでしょうか?
なかなか想像つかない人が多いと思います。
スポーチ選手といってもバスケ・サッカーなどたくさんのスポーツがあるように、一口にエンジニアといってもいろんなエンジニアがいます。
まずは、エンジニアの仕事内容について簡単に触れていきます。
Webエンジニア
Webサイトの制作やTwitter・Instagramのようなアプリの開発を行います。
サイトの見た目から、内部のシステム部分まで幅広く作成します。
Webエンジニアは最近深刻な人材不足が原因で目指す人が増えてます。
インフラエンジニア
アプリがネットで問題なく動くようにするサポートをしています。
アプリがネット上に公開されたあと、そのアプリを守ったり、動かなくなるなどの問題が発生した時に問題解決に当たるのが仕事です。
組み込みエンジニア
パソコン・家電・車などの内部のコンピュータを作っています。
Webアプリと違い、人が触れるものなので、丈夫さやセキュリティ面など他にはない技術が求められます。
機械学習エンジニア
機械学習を使ってWebサービスを開発したり、その技術を家電などに組み込む仕事をしています。
データを使って、機械自身に回答をさせるようなサービスに使われています。
今後AI・機械学習の分野の需要はもっと増えて行くでしょう。
プログラミングを習得してWebエンジニアになるには
いろいろエンジニアについて紹介しましたが、この記事ではWebエンジニアになる方法について詳しく解説します。
理由は・・・
- Webエンジニアになりたい人が最近増えてきていて需要があるから
- 他と比べて難易度が低めだから
- 僕自信がWebエンジニアなので情報が正確だから
- 本職でないため他のエンジニアへのなり方が不明だから
です。
おそらくこの記事を読んでる方は、ブログやSNSなどでエンジニアに興味を持った方が多いと思うので書きます。
機械学習やIoTではないかと。
もしそういったエンジニアになりたい方の欲しい情報はこの記事にはないです。
そもそもいきなり機械学習などの分野に手を出すのは、ハードル高すぎだと思うので個人的にあまりおすすめしません。
Webエンジニアは大きく分けて2種類
エンジニアには大きく分けて2種類います。
- Web制作エンジニア:WordPressなどを使い、ホームページやLPの制作を行う
- サーバーサイドエンジニア:バックエンド言語のRuby、PHP、Javaなどを使い、Webアプリケーションの開発を行う
この2つのどちらかを目指すかによって難易度や、学習方法が違ってくるのでわからない方は確認しましょう。
順番に解説していきます。
Web制作エンジニア
Web制作エンジニアについて
- 学ぶ言語:HTML・CSS・JavaScript・PHP
- 学ぶフレームワーク:jQuery・WordPress・Bootstrap
Web制作エンジニアの基本的な仕事内容としては、企業のホームページを作ったり、LPを作ったりします。
なので、扱う言語はフロントエンドがメインです。
サーバーサイドの言語(あとで紹介します)と比べ、初心者でもわかりやすく、変化が見てわかるため、参入障壁は低め。
参入障壁が低いという事は、やる人が増え、価格競争に巻き込まれがちです。
また、Web制作エンジニアはクラウドソーシングで仕事も募集があるので、副業でやる人もいます。
知り合いからの依頼がある場合も多く、実績が作りやすいのがいいですね。
独学でWeb制作エンジニアになるには
- Progateで基礎を勉強する
- LPなどを模写する
- クラウドソーシングや知り合いから案件を受けて実績をつくる
- 作った実績をポートフォリオとして企業に就職
この流れでいってる人が多いです。
先ほども書きましたが、Web制作エンジニアはサーバーサイドエンジニアと比べて難易度が低いので、独学でもなんとかなりやすいです。
ただ、技術面というより、クラウドソーシングでの案件の取り方や、価格設定の方法など営業面で苦労しがちなので、
その辺りはすでに上手くいってる人からアドバイスをもらうのが良いと思います。
サーバーサイドエンジニア
サーバーサイドエンジニアについて
- 学ぶ言語:HTML・CSS・JavaScript・PHP・Ruby・Java
- 学ぶフレームワーク:jQuery・Ruby on Rails・Laravel・Spring
- 学ぶツール:SQL・Linux・Git
サーバーサイドエンジニア(バックエンドエンジニアともいう)はシステムの目に見えない部分を作ります。
例えば、ログイン・ログアウトのシステムや、データの呼び出し・保存など。
目に見えないとこは大体サーバーサイドエンジニアが作ってるという認識でOKです。
サーバーサイドエンジニアは、上に書いてる学ぶ言語などを見てもわかるように
HTML・CSS意外にも沢山の言語・フレームワーク・ツールを使いこなせなければいけません。
なので、なるのは難しいです。
独学でプログラミング(サーバーサイド)を習得するには
サーバーサイドエンジニアについては、深く掘り下げていきます。
まずは順番。
- Progateで基礎を勉強する
- 動画教材で勉強する
- チュートリアルでクローンアプリを作る
- オリジナルアプリを作る
- 集団開発を経験する
この流れで行ってる方が多いです。
①Progateで基礎を勉強する
Progateで各言語の基礎を学びましょう。
具体的にはこちらのコースをやりましょう。(Rubyエンジニアを目指す場合)
- HTML&CSS 学習コース
- HTML&CSS 道場コース
- JavaScript(最新版のES6) 全コース
- Ruby 全コース
- Ruby on Rails5 学習コース
- Ruby on Rails5 道場コース
- コマンドライン
- Git
- SQL
プログラミングを習得してエンジニアとして働くレベルまでやるなら課金は必須です。
エンジニアになって給料もらえるようになったらすぐペイできるので、先行投資しましょう。
言語以外のコマンドライン・Git・SQLもとりあえずでいいのでやっておきましょう。
いずれも現場では必須です。
Progateは僕がエンジニアを目指した頃からあるとても優秀な教材です。
綺麗なデザイン・レベル上げなど、未経験者がプログラミングを少しでも楽しく取り組めるよう様々な工夫があります。
こちらの記事にやるべきコース・進める時の注意点について書いたのでよければどうぞ。
別にこれでプログラミング超楽しい!
ってならなくても大丈夫です。
僕は普通でした。
超苦痛で今にも倒れそう!なら、さすがにエンジニアは諦めた方がいいと思いますが・・・笑
②動画教材で勉強する
Progateで勉強した内容を復習しつつ、実際にアプリを作る練習をします。
Progateだけでは、
という状態なので、なにをやってるかなんとなくわかる状態まで持っていきます。
サーバーサイドエンジニアを目指すなら、HTML・CSSなどはProgateで十分なので、自分の勉強したいサーバーサイド言語の教材を購入しましょう。
こちらの記事にUdemyでおすすめの動画教材をピックアップしたので、選ぶ際の参考にしてください。
Udemyは定期的にセールをやってるので、実際にサイトにアクセスしてセール期間を確認して絶対にセールで購入するようにしましょう!
なかなかいないと思いますが、動画は絶対に無理!という方はこちらのサイトもおすすめです。
タイトルの通り、とてもわかりやすく説明してくれてるので、暇な時の読み物として使ってもいいですね。
③チュートリアルでクローンアプリを作る
Udemyの動画教材を見て、その通りに作ってそれをクローンアプリとしてもいいんですが、
それだとちょっと味気ないのでもうちょっと難易度高めのアプリを作って見ましょう。
この時役に立つのが、Railsチュートリアル。
無料です。
実際にTwitterのようなWebサービスを作りながら学びます。
- コメント投稿機能
- いいね機能
- フォロー機能
- プロフィール更新機能
Webアプリでよくある機能を一通り作れます。
コピペで進めて行って、エラーがでたら解決するという手順で挑むといいです。
余裕がある方は、しらない単語(メソッドなど)を検索してみたり、
書いてあるコードの意味をちょっと理解しようとしてみたりすると理解度が上がります。
エラーがでてかなりイライラすると思うんですが、エンジニアの仕事のほとんどは検索やエラー解決の時間なので、
今のうちから慣れておきましょう。
④オリジナルアプリを作る
ここまででなんとなくWebアプリの作り方がわかってきたかと思います。
次は、自分でオリジナルのアプリを作って見ましょう。
とはいえ、「いきなりゲームを作ってみろ!」とかそういうのではありません。
今まで作ってきた物を元にして、ちょっとオリジナリティのあるアプリを作るんです。
書いてるコードをそのまま書けばよかった今までの勉強と違うので、ここで理解度がわかります。
ここでわからないことがあっても問題ないです。
むしろできないこと、わからないことを明確にするためにやってるみたいな物なので、
くらいに捉えてください。
ちなみに、この段階までできたら就職・転職活動を初めて問題ないです。
エンジニアが1番成長できる環境は実務現場。これは現役エンジニアの共通認識。
“自社開発企業”に拘り過ぎるあまり、転職できない(実務経験が積めない)のは本末転倒。
まずは“SIer”、“SES”に関わらず、IT業界に滑り込み『未経験』の肩書を外そう。
次の転職で理想の会社に行く道も大いにあり👍
— ゆーや / プログラミング コーチ (@yu_nocode) December 8, 2020
準備も大事ですが、準備しててもエンジニアにはなれないので、とりあえず行動してみましょう。
⑤集団開発を経験する
余裕がある人向けですが、これができれば就職率がかなり上がります。
実際の現場でエンジニアが一人で最初から最後まで開発することはほぼありません。
基本は3-6人くらいで1チームとなって開発します。
なので、1つのアプリを集団で開発する経験があるというのは面接時にめちゃくちゃ評価されます。
独学で勉強してる場合、集団開発を経験するのは難しいかもしれませんが、エンジニアの知り合いを作って一緒に開発したり、
オンラインサロンで集団開発をしてるところに入ったりして、経験積むこともできます。
+a ITパスポートや基本情報技術者試験を勉強する
+aでエンジニアに独学でなるならやっておいた方がいいことを解説します。
みなさんご存知の通り、エンジニアに資格は不要です。
でも、資格取得の際に勉強する内容は知識としてあった方がいいので、余裕のある人はとっても良いと思います。
資格があるというのは高学歴に似ていて、ITに対してある程度の知識があり、独学できる人間であることの証明にもなるので。
ただ、大事なのは100の知識より1の経験なので、資格取得が目的になってしまわないように気をつけましょう。
読むなら以下の参考書がオススメです。
資格試験を受けなくても、なんとなく言葉を知っておくのが大事だったりするので、1回さらっと目を通すだけでもOKです。
独学でプログラミングの習得は難しいのか
独学での挫折率は9割と言われており、独学は難しいです。
始めたばかりのProgateくらいなら独学でもなんとかなると思いますが、チュートリアルや実際にアプリを作る時に必ずエラーがおきます。
同じエラーで何時間も悩むことも。
また、ITの経験がない人はパソコンでアプリ開発ができるようにする「環境構築」で躓く可能性がとても高いので、
そういった不安を解消し、効率よく勉強するためにもスクールに通うのはとてもいい方法です。
個人的にいいと思ったスクール。
詳細はこちらの記事をどうぞ。
独学のデメリット
これも否定はしないし、できる人はできると思いますが、独学だと時間がかかる可能性が高いんですよね。
例えば、やった方がいい教材選びにしても、ネットにはいろんな情報が飛び交ってるので、その中から自分が正しいと思う情報を選ばないといけません。
正直いうと、教材に正解なんかなくて、どれも大差ないんですが、初心者は
「これとこれだけやれ!あとはやらなくていい!」
と言われて、やるべきことが明確になるところに意味があるんですよね。
スクールなどの教育サービスはやるべきこととやらなくていいことを明確に指示してくれるので、やらなくていいことに時間を取られないのがいいです。
また、エラー解決一つにしても初心者はまずどうやって検索していいかがわかりません。
でもそういう初心者が陥りがちなエラーって経験者からしたら、よく見るエラーだったりすることがほとんどなので、5秒で解決してくれます。
エラーを自分で解決する力は大事ですが、エンジニアのわからないは長時間調べてもわからないことには変わりないので、
調べて無理だったらいつでも聞ける環境に身を置くのは、心理的にも安全です。
特にITに疎い初心者のうちはそういう環境があるというだけでも勉強を進めれたりするもんです。
勉強は頭の良さではなく、いかにして継続できるかが大事なので、継続できる環境作りを心がけましょう。
勉強が続かない人はこの記事を参考にしてみてください。
https://comblog.net/2019/08/12/%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e5%ad%a6%e7%bf%92%e3%82%92%e7%b5%b6%e5%af%be%e3%81%ab%e7%b6%9a%e3%81%91%e3%82%8b%e6%96%b9%e6%b3%95%e3%80%90%e6%9c%ac%e5%bd%93%e3%81%ae/
独学でプログラミングの習得は可能か?【学習方法を紹介します】〜まとめ〜
物事には必ずメリットとデメリットが存在します。
- 独学のメリットは自分のペースでできて、お金があまりかからないこと。
- 逆にデメリットは時間がかかることと、挫折する可能性が高いこと。
独学でエンジニアを目指す人はこの辺りをしっかり考えた上で、独学でいくのかそれともスクールなどの教育サービスを使うのかを考えましょう。
この記事が、これからエンジニアを目指す方の参考になれば嬉しいです。
エンジニアになりたい人・フリーランスに興味がある人に向けてLINEマガジンの配信を開始しました。
登録してもらえると嬉しいです。
エンジニアになるのに大切な情報を網羅したので、きっと参考になるはず。
今回も最後まで読んでくれて、ありがとうございました!
では、また!