僕自身、プログラミング独学をしてIT企業に正社員で中途で入社しました。そこから8ヶ月くらいで月単価60万円くらいのフリーランスになりました。
僕は、新卒で一度会社を辞めて、そこからプログラミング独学をして、エンジニア転職をする道を選びました。
それも、ぶっちゃけ当時の預金残高が10万円〜30万円とかしかなく、とてもじゃないですがスクーリングを考える余裕がなかったんですよね…w
実際にやってみて思ったんですが、プログラミング独学には、メリットとデメリットがあると思います。
今回は、そんなプログラミング独学のあれこれについて、経験者目線でポイント解説させていただきます
✔︎ 結論
最終的に実務で使う方なら、現役のエンジニアにレビューしてもらった方が、ムダな学習をしなくて済みます。
副業・とりあえず学習してみたい方なら、Progateやドットインストールで月額1,000円以内で、様々なプログラミング言語を学ぶのがいいです。
背負うものがないなら、雇用形態は問わずなんらかのプログラミングの仕事を探すのが一番の近道だと思います。
結局、エンジニアとして働いたら、常に働きながらスポットで学習を進めていく必要が出てくるので、「プログラミング学習のみにフォーカスする時間」とかはなるべく少なくして、周りの人に迷惑をかけつつ、業務ですぐに実践する機会を作った方が良いと思います。
スポンサードサーチ
ページコンテンツ
【若ければOK】プログラミングできなくても、いきなりエンジニアになれます


実際には、4ヶ月くらいでWEBエンジニアの仕事が見つかり、独学でも結果オーライだったのですが、それは僕が第二新卒だったからですね。
既に社会人経験が3年以上ある中途採用の枠だと、かなり厳しい方法になってしまうかと思いますが、僕の手法自体は再現性があると思うため、続けます。
なぜ僕が独学から4ヶ月くらいで、スクーリングもなくお金をもらうだけでエンジニア転職できたかというと、実際に業務経験を積むことができていたからなんですね。
未経験からプログラミング独学をして、なんらかの仕事を取るためには結局のところ「業務経験」が最も重要ですよね。
その上、実際にその人のプログラミングスキルが測れるポートフォリオや成果物があれば、「この人は、経験こそ少ないけど、ここまでのアウトプットが作れるんだな」ということをアピールすることができます。
なので、プログラミングを独学する…よりもむしろ「いかに業務経験を作るか?」ということから逆算する方が大事な気がしてます。
結局、社会に出たら「○○時間勉強しました!」「○○スクールでプログラミングを△△△時間勉強しました!」とかって、あんまり意味なくないですか?
ぶっちゃけ、プログラミングスキルとかって、(周りの人に迷惑はかけまくりなのですが)IT系エンジニアとして働き始めたら、嫌でも自分で独学するようになるので、そこまでプログラミングスキルのことって心配しなくてOKなんですよね。
✔︎ プログラミングは仕事にすれば、ある程度できるようになる
働けば嫌でも1日7時間、お金をもらいながらプログラミングでき、コスパ良くないですか?
ただ、独学でキャッチアップできないならエンジニア辞めるしかないので、少しリスクはありますよね。
なので、20代ならまずはプログラミング未経験で就職するのがオススメで、30代以降の方なら就職前提のスクールという選択肢がオススメですよ。
ただ、そこから業務経験1年とかでフリーランス月60万もらえることを考えれば、リスクリターン200%以上あるので、チャレンジしてみるべきと思います。


▲「1年で月60万とかホント?」と思った方にはこちらの記事をどうぞ
プログラミングを常に行うことには、かなり得手・不得手が別れるものですが、プログラミングを学んだことはIT企業を渡り歩く時には、有利に働いてくれることが多いです。(EX. WEBディレクター、プロジェクトマネージャー、マーケター、コンサルなど)
なので、これは20代前半〜中盤の方にしかオススメできないのですが、まずは「プログラミングを仕事にする」ことから入っても良いんじゃないかなと思います。
ただ、「全く何もできない!」とかだと、もちろんそもそも仕事はもらえないですよね。
そのため、「ギリギリプログラミングの仕事になるレベルまで独学して、そこから業務経験を積むようにする」のがプログラミングを学ぶ最短距離だと考えてます。
✔︎ 【最大限サボろう】プログラミング独学で重要な姿勢
業務に必要な最低限度(≒面接で受かる最低ライン)のプログラミングスキルだけを独学!
サボるというと語弊がありますが、要するに「効果的なポイントだけ独学すれば良いんじゃない?」ということです。
実際に半年とか長期間のプログラミング独学は絶対にやりすぎだと思いますよ〜
少し職種別に考えてみたいのですが、おそらく大抵のWEBエンジニア職種で、アルバイトとして働くならHTML/CSSを調べながら書けたら時給1,000円以上で、実際に業務経験を積みつつ独学できるんじゃないかな、と思います。
僕は時給1000円でWordPressの改修やマークアップ、ECサイトの構築を行っていたのですが、ここでの経験は今でも生きていて、やって良かったなと思っており、素直にオススメできます。
これは会社によりけりなのですが、WEB系企業のアルバイトって結構色々なこと任せてもらえたりするので、とりあえず業務経験も積めるためかなりオススメです。
✔︎ 業務経験を積もう!
20代の人ならいきなり派遣とかアルバイトとかで入っても、1年ほど揉まれたら絶対にある程度まともな環境でエンジニアになれますので、心配する必要なしです
ただ、最低限ブラックではない、SESではない企業にいくようにすればいいでしょう。業務経験さえあれば選択肢が広がりますので。
【職種別】未経験から初めての仕事を取るまでに必要なプログラミング知識って?


- WEB制作(WordPress)エンジニア– HTMLとCSSを使ったレスポンシブなウェブサイトが作成できる
– 最短で1ヶ月〜2ヶ月 - WEBアプリケーションエンジニア
– HTMLとCSSを使ったレスポンシブなウェブサイトが作成できる
– PHP・Ruby・Pythonなどを使って、調べながらプログラムが組める
– 最短で2ヶ月~6ヶ月 - スマホアプリエンジニア
– 実際に自分でアプリケーションを作成できる
– もしくは、Objective-C/Swift/Java/Kotlinの読み書きができる
– 最短で2ヶ月~6ヶ月
ざっくりですが、上記の3種類のエンジニアで必要な独学量は上記の通りです。
プログラミングスクールとか、Twitter上とか、他のエンジニア界隈だと「最低でも半年以上は、プログラミング独学する方が良い」みたいな言説がありますが、全て無視してしまってOKです。
プログラミングを本業にするにしても、副業にするにしても、結局は最初の仕事を取れてしまえばOKなので。
そこで多分、なんらかの失敗をすると思います。見積もりが甘い・単価が低い仕事を請けてしまった・ブラック企業に就職してしまったなどですね。
ただ、これも全く問題なくて、むしろ「早めに失敗できたらから良かったな」くらいに考えておくとOKです。
✔︎ プログラミングをする時の心得
「え、そんなことわからないの?!」って思われるより、若い時に一通りミスって置いた方が後々が楽ですよね
IT企業とかって、「古いことを確実にこなせる」よりも「ミスりながらでも新しいことができる」方が価値がある場所なので、めちゃくちゃ損失出すわけじゃないミスは、どんどんやっちゃえば良いです。
そういった意味でも、「とりあえず仕事を取りましょう」と話をしています。
また、これも全く貶めるつもりはないのですが、プログラミングをとりあえず触ってみる方は、いつまでも独学でOKですよね。結局、「プログラミングで仕事を取るにはどうするか?」というポイントが肝です。
そこで、「未経験から初めての仕事を取るまでに必要なプログラミング知識って?」というポイントで、もう一段階深堀りしてみようかなと思います。
IT企業特化の転職サイトGreenさんの未経験エンジニア募集要項を参考に作成しました!
1. WEB制作もしくはWordPressエンジニア


✔︎ 仕事内容
- 仕上がったデザインから、実際にマークアップを行う
- 問い合わせフォームやECサイトのカートなど、DBとのやりとりを実装する
- デザインの実現に必要なJavaScript(jQuery)を実装する
✔︎ 必要なスキル
- HTML5/CSS3を使った、レスポンシブなWEBサイトのコーディング
- PHP(もしくはRuby、JavaScriptなど)を使ったフォームの構築
- jQueryによる簡単なアニメーション実装
2. WEBアプリケーションエンジニア


これは会社によりけりなのですが、フロントエンドとバックエンドが明確に分けられている会社もあれば、いわゆる「フルスタック」と呼ばれるエンジニアの人が、両方を開発するということもあります。
フロントエンド:スマホやPC上で、レスポンスを表示する部分を作る人
バックエンド:スマホやPCから送信されたリクエストをさばく部分を作る人
わかりやすく説明すると上記の感じです。
基本的には「レスポンスを捌くのか、表示するのか」という違いしかないという認識でOKです。
▲その辺りの技術的な話にはこちらをどうぞ。この本はエンジニア必読です
2-1: フロントエンドエンジニア


✔︎ 仕事内容
- 仕上がったデザインから、実際にマークアップを行う
- 問い合わせフォームやECサイトのカートなど、DBとのやりとりを実装する
- デザインの実現に必要なJavaScript(jQuery)を実装する
✔︎ 必要なスキル
- HTML5/CSS3を使った、レスポンシブなWEBサイトのコーディング
- PHP(もしくはRuby、JavaScriptなど)を使ったフォームの構築
- jQueryによる簡単なアニメーション実装
- コミュニケーション能力
2-2: バックエンドエンジニア


厳密には「フルスタックエンジニア」という職種の人がバックエンドとフロントエンド(インフラ)の面倒をみることになっているらしいですが、大抵の場合はバックエンドエンジニアがよしなに全てをやっている感じです。
僕自身、本業はバックエンドエンジニアですが、フロントエンドのワイヤーフレーム作成、マークアップ、API開発、詳細設計、クラウドを使ったサービス開発とか割となんでもやる感じになっています。
✔︎ 仕事内容
- バックエンドの設計(データベース、アーキテクチャ、インフラetc)
- バックエンドの開発(API、データベースクエリ、クラウドとの連携 etc)
- バックエンドの運用・保守
✔︎ 必要なスキル
- Ruby、PHP、Javaなどいずれかのプログラミング言語の経験
- Git(SubVersion)を使ったバージョン管理の経験・理解
- コミュニケーション能力
バックエンドエンジニアの方が、要求されるスキルの単純さはあります。
実際に、バックエンドの開発に関しては、確かに「実務レベルのコード」で未経験だと書けないと思いますが、この辺りは年次が上のエンジニアがコードレビューとか、アドバイスでなんとかなるレベルです。
フロントエンドの方がわかりやすい仕事をする分、いきなり実務レベルを求められるので、そこが募集倍率の高さもあって、少し敷居が高いかもしれないです。(勉強量はフロントエンド・バックエンド共にあまり変わらないと思います。)
スポンサードサーチ
【職種別】プログラミング独学の方法を解説
前置きが長すぎて本当に申し訳ないのですが、個別のプログラミング独学の解説の前に、「一般的に、どうやってプログラミングが上達するのか」という点について解説させてください。
僕が1年くらい、PHP(Laravel)とJavaScript(Vue.js・Nuxt.js)を使って開発してきて、問題解決の方法とググり方が上手くなってきたことが、結果的にプログラミングスキルの上達に役立っている気がしています。
プログラミング独学を言語を問わずにロードマップ化すると、次の通りだと思います。
✔︎ プログラミング独学のロードマップ
- ソースコードを読みながら、写経をして実際にアプリを実装してみる
- 実際に、自分で何かアプリを作ってみる(ポートフォリオなど)
- 現役のエンジニアに改善点の指摘をしてもらう(教えてもらう)
- 自分で作ったアプリの改善点を考えつつ、機能追加したり保守・運用してみる
✔︎ 英語のライティング学習で例えるプログラミング独学
- 参考にできる英文を写経して、日本語訳と文法事項も一緒に覚える
- 実際に、自分で日本語を英文にしてみる
- 先生に添削してもらう
- 自分で作った英文の改善点を考えつつ、別のやり方で書けないか考えてみたり、表現の方法を工夫してみたりする
少し意図的にプログラミング学習と英語のライティング学習を挙げてはいるのですが、実際にプログラミング言語を使えるようにするための練習は、英語学習と一緒で「良質なインプットをしつつ、アウトプットの質を上げる」ということしかできないと思います。
✔︎ 言語学習の結論です
英語学習と一緒で、インプットのレベルを上げることでしか、アウトプットの質を上げていくことができないです
英語だと最も重要なレファレンスって何?ってなったら、もちろんそれは英語のネイティブスピーカーのスピーキング・ライティングだと思います。これを一番の参考にすべきですよね。
これのプログラミング言語の最も重要なレファレンスって何?というと、それは「プログラミング言語・フレームワークの公式ドキュメント」になります。
最終的には、この公式ドキュメントを読みながら、自分でプログラミングできるようになると、実際に実務をやっても問題ないレベルだと思って差し支えないと思います。
✔︎ プログラミングの初心者レベルを3段階で分けてみる
- 【レベル1】
Progateやドットインストール、Udemyなどハンズオン(実際に手を動かす)形式なら、実際のプログラムを組める
→アルバイト・インターンに応募しても問題ないレベル - 【レベル2】
ブログやqiita、StackOverflowなどで、全く同じソースコードならコピペして実装できる
→アルバイト・インターンなら通用するレベル
このままでは実際の実務だとかなりしんどい。 - 【レベル3】
公式のレファレンスを読みながら、必要なところを自分である程度実装できるようになる。(ここまでできると、普通に仕事ができるようになります)
→プログラミングスクールを卒業する頃に、上位層が到達できるレベル
1人前のエンジニアと比べ時間がかかるものの、「動くプログラム」は作れる
初心者のレベルを1~3にカテゴリ分けすると、上記の通りです。
この中で、レベル3まで行って、自分でしっかりポートフォリオとして良質なWEBアプリケーションを作りきれるようになると、大抵の未経験エンジニアの求人には通るようになります。
僕自身、だいたいレベル2の初心者の頃に、アルバイトとしてWordPressのWEB制作の仕事をしていましたが、ここから、プログラミング独学の方針としては次の2つがあると思うんです。
✔︎ 【目標別】目指すべき初心者レベル
- IT企業で正社員エンジニアとして就職・転職したい!
レベル3。
プログラミングスクールに行くか、現役エンジニアに尋ねられる環境は必要 - IT企業でまずはアルバイト・インターンでもいいので、実務経験を積みたい!
まずはレベル2。書類で落とされるのが多いようであれば、レベル3
上記の通りです。あえて「フリーランスとして働く」という選択肢については触れていないのですが、僕はまずはIT企業で開発の経験を積んでおくことをオススメしたいです。
別に案件を取れるなら、いきなり個人で仕事を受注して稼いでもいいと思うのですが、「工数を予め読んで、必要になる適切な料金を見積もって、安く買い叩かれないエンジニアになる」というのは、どんな形であれ最低でも1年以上はプログラミング経験を積んでおかないと絶対に無理です。
まずは会社に行って、先輩から盗める技術をどんどん盗んで、失敗から学んでというのをお金をもらいながらやるのがコスパがいいと思います。
僕も実はフリーランス独立したさからプログラミング独学したのもあるんですが、そんなにフリーランスにこだわる必要ってないかなと思います。
【2020年版】WEBエンジニアになるロードマップ


有名なロードマップであるdeveloper-roadmapより引用して解説してみます
フロントエンド・バックエンド問わずに必須のパート


- Gitによるバージョンコントロール
- 基本的なターミナルの使い方
- データ構造とアルゴリズム
- GitHub
- ライセンス
- セマンティックバージョニング
- SSH
- HTTP/HTTPS/API
- デザインパターン
- 文字エンコーディング
【2020年版】フロントエンドのロードマップ
フロントエンド初学者の方が学ぶべき部分だけ和訳をしてまとめてみました。
✔︎ インターネットの基本
- インターネットの基本的な仕組み
- HTTPとは何か?
- ブラウザの仕組み
- DNSとその仕組み
- ドメイン名とは何か
- ホスティングとは何か
✔︎ HTMLの基本
- 基本を学ぶ
- (セマンティックHTMLを学ぶ)
- フォームとバリデーションを学ぶ
- 通例・ベストプラクティスを学ぶ
- アクセシビリティ
- SEOの基礎
✔︎ CSSの基本
- 基本を学ぶ
- レイアウトを作成してみる
(float、position、display、ボックスモデル、CSSグリッド、flexボックス) - レスポンシブデザインとメディアクエリ
✔︎ JavaScriptの基本
- シンタックスと基本構造
- DOM操作を学ぶ
- FetchAPIとAjax(XHR)について学ぶ
- ES6+とモジュラーJavaScriptを学ぶ
- ホイスティング、イベントバブリング、スコープ、プロトタイプ、shadow DOM、strictモードについて理解する
✔︎ Gitの基本
- Gitの基本的な使い方を理解する
- GItHubのアカウントを作成し、使い方を学ぶ
【2020年版】バックエンドのロードマップ
✔︎ インターネットの基本
- インターネットの基本的な仕組み
- HTTPとは何か?
- ブラウザの仕組み
- DNSとその仕組み
- ドメイン名とは何か
- ホスティングとは何か
✔︎ フロントエンドの基本
- HTML
- CSS
- JaaScript
✔︎ OSおよび一般的な仕組み
- ターミナルの使い方
- 一般的にOSがどのように動作しているのか
- プロセスマネジメント
- スレッドと並行処理
- 基本的なターミナルコマンド
grep, awk, sed, lsof, curl, wget, tail, head, less, find, ssh, kill - メモリマネジメント
- プロセス間通信
- I/Oマネジメント
- POSIXの基本
- ネットワークの基本
✔︎ プログラミング言語を学ぶ
- JavaScript
- Python
- Ruby
- Java
- C#
- PHP
✔︎ GItの基本
- Gitの基本的な使い方
- GitHub(Gitlab, Bitbucket)に登録
フロントエンド及びバックエンドの学習の指針は上記してきた通りです。
参考のテキストなどは紹介してきたのですが、最近だとインターネット上でハンズオン形式で学べるProgate/ドットインストール/Udemyといったいい教材があるので、「どうやって勉強すればいいのか?」と悩む方に向けてプログラミングの独学方法の一例を挙げておきます。
✔︎ プログラミング独学の方法について
プログラミングに「勉強」という言葉はないと感じています。
なので、「ハンズオン形式」で実際に手を動かしながら学べる教材から着手するのがオススメです。
スポンサードサーチ
プログラミング独学をする時のオススメな手順について


レベル1: Progate/ドットインストールもしくはUdemyのハンズオンをやってみる
参考書ベースで学習していると、自分独自のやり方をしてハマってしまいがちなのですが、ハンズオンだと目に見えるアウトプットを学びながら手を動かして覚えられるので、学習効率がいいです。
僕のオススメとしては次のような感じです。
✔︎ 僕がオススメしたいプログラミング独学の手順
- Progateでプログラミング言語の文法を楽しく学ぶ
- Udemyで習得したいプログラミング言語・及びWEBフレームワークの講座を1つやってみる
- 仕事を探しつつ、実際に何らかのWEBサービスを作ってみる
「Progate」と「Udemy」がオススメなのでそれぞれ紹介してみます。ドットインストールも結構いい感じなのですが、これは業務経験を積み始めてから不足している知識を埋めるために取り組むのがいいです。
1. Progate
Progateは鉄板ですね。プログラミング完全初学者の方でも、段階を追って最低限のプログラミングができるようになるWEBサービスです。


僕自身、新しい言語を習得する際にはいつもお世話になっています。教材も比較的新しいプログラムの書き方が採用されており、環境構築も不要なので挫折しづらいです。
画面に沿って、「スライド形式で座学→実際にコーディング」という学習ループで学べるので、全くプログラミングを触ったことがない方にもオススメできます。
ただ、ある程度コーディングの基本文法がわかってきたら、学ぶことがなくなってくるので、その辺りからUdemyもしくはドットインストールに着手するのが良いです。
2. Udemy
Udemyは全世界で展開されている、C2Cのオンライン学習サービスです。要するに、YouTuberとかが解説動画を出していたりするじゃないですか。
それを教材形式にして、さらに専門的な内容を段階を踏んで学べるようにしたのがこのWEBサービスです。
クオリティが結構高い、というか実務に直結するような内容を5,000円くらいで学んで身に付けることができるので、適当に本を2冊買うよりも絶対に良いかなと感じています。
以前、こちらの記事でPHP学習にオススメなUdemy講座をいくつかピックアップしているので、ぜひ参考にしてみて欲しいです。


レベル2: WEBエンジニアになるまでのロードマップのバージョン管理までを学ぶ
これは記事で紹介したロードマップですね。こちらを順番に進めていくと、どんどんプログラミングやエンジニアリングに対する理解っていうのは高まってくると思います。
ProgateやUdemyと並行して学んでも良いと思います。
順番とかあまり気にせずに、気になったところから学んでいくと、「これを学んだら、こっちの知識も必要だな…」というタイミングも出てくると思います。
必要を感じたところをどんどんやっていくと、上達を感じることも多くなってくるはずです。
レベル3: 自分でWEBアプリケーションのポートフォリオを作成する


Progate・Udemy・開発者ロードマップを終わらせたくらいから、ある程度一人でプログラムを組める知識・経験が身についてきていると思います。
そうなったら、次は自分で実際にポートフォリオとなるようなウェブサイト、ウェブアプリケーションを作成してみましょう。
僕個人のオススメだと、次のような物を作ることで、フロントエンド・バックエンドの知識が身に付くため、すごく良い経験ができると思います。それに初学者の方の限界を試すことができるので!
✔︎ 【一例です】僕が初学者の方にオススメしたいポートフォリオ
- 自分のポートフォリオ・プロフィール一覧サイト
WEB制作者・フロントエンドエンジニアならぜひ持っておきたいです
バックエンド開発者でも、一度Bootstrapを使ってマークアップしてみましょう - JavaScriptを使ったメモアプリ
これは本当に勉強になります
メモの新規作成・編集・削除機能と一覧表示ができるアプリを作成してみましょう
フロントエンドだけでなく、データベースでデータの永続化もしてみてください - ブログ・メディアサイトもしくは簡単なSNS
バックエンド開発者なら、このどちらかは一度作ってみると勉強になります
ブログ・メディアならWordPressを参考に、記事編集・投稿・ログイン・表示などを含められると良いですね
あくまでこちらは参考です。
基本的には、自分で作りたいもの・興味のあるものを作成するのが良いんですが、初めて自分でアプリを作ってみるなら、メモアプリから着手してみるのがオススメです。
難しいデータベース定義を作成する必要もなく、フロントエンドでデータベース上のデータを編集するための基本的なこと全てを学べるので、フロントエンド・バックエンド問わずにぜひやってみてください。
自分のプロフィールサイトも、一度自分で作成してみましょう。
✔︎ 一見簡単なことでも、自分で全てやってみるとかなり難しいです
マークアップは頭で考えても無駄なところが少なからずあって、実際に手を動かしながら検証ツールを使って、1px単位でデザインに合わせる難しさは知っておくべきだと思います。
マークアップの設計やBEM記法なども学んでおくと実務にスムーズに移れます。
レベル4: 現役エンジニアに質問をしつつ、ポートフォリオをブラッシュアップしていく(理想はPull Requestでのソースレビュー)
レベル3で作ったポートフォリオと何が違うの?と言われそうですが、こっちは「勝負ポートフォリオ」を作成するときに、できたら嬉しいなという感じです。


これは、可能であれば「コードレビュー」を入れた開発経験を自分の最強のポートフォリオの中に入れ込んで欲しいということです。
もう既に「プログラミング独学」の領域を出ているのですが笑
プログラミングスクールに入っている方にはぜひやってみて欲しいですし、最近だとMENTAっていうサービスもあって、現役エンジニアのメンターを見つけるには困らない状況です。


✔︎ ブログ記事にしてもOKな方のみ、無料でコードレビューできます
この記事のコメント欄にGitHubとかソースコードが見える形で置いていただくか、メール(shogo.kusuhara■gmail.com)、Twitterにてお気軽に相談いただければと思います!
まとめ:プログラミング独学を成功させるには、実務から逆算しよう


まあ別に就職する必要はないのですが、そろそろ僕が「早くプログラミングの仕事を見つけてください」ということが伝わるかと思っていて。
なるべく早くプログラミングの仕事を見つけたら、本当にプログラミング独学するよりも爆速で成長できるようになりますので、まずは最低限のプログラミングスキルを身につければOKですね。
[…] […]