LINEで現役エンジニアに直接質問してみよう!登録無料

独学で受注レベルのプログラミングを身につけるのは無理なのか?

「プログラミング学習を始めてみたけど不安」「学習しても先が見えない」「このまま続けていいのか分からない」「行き詰まりを感じている」そんな思いはありませんか?

実はこのような悩みを抱えている人はとても多いことがプログラミング学習スクールの調査で明らかになっています。せっかく将来の仕事にしようとしているのですから、先が見えなくてつらい思いをするのは辛すぎます。

あなたがなぜ、プログラミング学習を無理と感じているの理由を紹介し、その悩みを解決する方法を5つのステップで解説します。無理を思わずに学習を進めるにはどうすれば良いのか理解できるようにすすめます。

僕自身も大学生の頃に独学でプログラミング学習にチャレンジした経験があり、当時はがむしゃらに知識の吸収をひたすらおこおなっていました。しかし、学習した後に何をすれば良いのかわからなかったし、 作りたいことが思い浮かばず、気がつけばただ目的の技術マニアになっていました。
今ではエンジニアとして個人で仕事を請け負いながら、Webサイト運営&作成を行っています。

この記事の後半で書いたような内容まで習得できると、あなたも「受注レベルのプログラミング技術がみにつく!」というような自信が湧いてくるはずです。

これがあなたの助けに慣れば幸いです。

目次

プログラミング学習は独学では無理なのか?

まず、タイトルの結論は「独学は無理ではないが、全くおすすめできない」というのが答えです。その理由は「学習をしていくと悩みや不安を聞いて答えてくれる環境が無く挫折してしまうから」です。

実際に、「挫折して学習に行き詰まったことがあるか」というテーマでアンケートを実施した結果、87.5%の人が挫折を感じたと答えています。(侍エンジニア塾調べ)

また、アンケートの結果で「挫折した理由」として多い理由は、

  • 1位: 不明点を聞ける環境になかった
  • 2位: エラーを解決できなかった
  • 3位: モチベーションがつながらなかった
  • 4位: 学習のゴールがわからなかった
  • 5位: 環境構築でつまづいてしまった
  • 6位: 教材が分かりづらかった
  • 7位: 学習時間が思うようにとれなかった

となっています。

つまり、

  • プログラミングの学習を始めたけど不明点が出てきて
  • 不明点を解決できる環境がなく
  • 一人で解決できないので時間があっても学習が進まず
  • 理解が進まないのでモチベーションも上がらず
  • 学習のゴールまでが遠く感じ
  • 教材がわかりにくいと思うようになり
  • 最後は挫折する

という流れで、プログラミング学習をやめているのが現状です。

学習初期は特に不明点が多く、この負の流れになりやすいのです。プロに聞けば一瞬でわかることでも、初心者は不明点解決で沢山の時間が必要なため、よりモチベーションを維持するのも大変です。

僕も始めの頃は独学で勉強していました。その頃は、不明点を調べる方法すらわからなかったので、まずそこから時間をかけて勉強していましたね。今振り返ると、時間をかけただけの多くのモノを得ることは出来ていなかったなと思います。

時間を無駄にしたいために、今からでも効率の良い勉強方法を知っておいたほうが良いでしょう。この後、独学でも効率よく勉強できる方法をステップで紹介していきます。

プログラミング独学をの勉強方法5ステップ

実際にプログラミングの独学を効率よくこなすには、下記の5ステップを実施します。

  • STEP1. プログラミングを効率よく学習するために分野を絞る
  • STEP2. 独学で学習できてわかりやすい教材を見つける
  • STEP3. 学習教材の通りに一度やってみる
  • STEP4. 出てきた不明点を聞ける環境を見つけて解決する
  • STEP5. 単一の機能を持ったアプリを作ってみる
  • STEP6. 自分の周りの問題点を解決するアプリを作ってみる

順番に解説していきますね!

プログラミングを効率よく学習するために分野を絞る

STEP1では、「学習するプログラミングの分野を絞る」というお話です。

医者を想像してみてください。医者には「外科」「内科」「眼科」「麻酔科」「産婦人科」「放射線科」…など様々な診療科目別に分かれています。

プログラミングを扱う人の事を「エンジニア」と言います。エンジニアには、「Webエンジニア」「システムエンジニア」「インフラエンジニア」「機械学習エンジニア」「フロントエンドエンジニア」…など色々な種類があり、それによって使うプログラミング言語は大きく異なります。

例えば、Webアプリを作れる「Webエンジニア」なら「HTML / CSS / JavaScript / Rails」あたりを主に学習すればOKです。一方「機械学習エンジニア」だと
R / Python / Tensor Flow」あたりを主に学習するようになるでしょう。

このように、「あなたが何をしたいのか」その目的によって、学習する分野が異なります。後々はエンジニア全ての内容をわかるようになる(フルスタックエンジニアを目指す)のでも良いですが、それではあまりにも学習量が多すぎます。

まずは小さな目的を1つ1つずつこなしていくほうが、効率よく学習出来ます。

独学で学習できてわかりやすい教材を見つける

STEP2では、「独学で学習できる教材を見つけましょう」というお話です。

目指すべきプログラミングの分野が決まったら、それを学べる学習サイトや本などの教材を見つけましょう。

僕が使っているオススメの学習サイトは下記の3つです。

ドットインストール

ドットインストールは「3分動画でマスターできるプログラミング学習サービス」で現在2020年4月時点で422レッスンを6, 278本の動画にて提供中です。

基礎的なLinux操作やHTML/CSS/JavaScriptはもちろん、PHPやRubyを使ってWebサービスを作れるようになるサービスまで動画で解説している初心者向けのとてもわかり易い教材です。

レッスン一覧や詳細は「ドットインストール- レッスン一覧」を御覧ください。

Progate

Progateは、実際に手を動かしてプログラミングを書きながら学ぶことができる、体験型のプログラミング学習サービスです。

こちらも、本質的に学べる内容はドットインストールと変わりませんが、「何処まで学習したのかを管理出来たり」「自分で手を動かして正解かどうかチェックできる」のが特徴です。

Qiita

Qiitaは、「プログラマのための技術情報共有サービス」で色々は有志の方々が自分のプログラム手法や経験を記事として投稿されています。

特に、タイムライン感が強く最新の技術でも素早くアップされるので、「あの技術がニュースになっているけどどんな感じなんだろう?誰かやっている人いないかな?」という時特に重宝します。

これらのサイトを駆使して、まずは下記の3つの項目を優先的に学習する後々の理解が早くなりますよ。

  • Linux基礎
  • プログラミング言語を1つ(迷ったらRuby)
  • データ構造とアルゴリズム

僕が独学使って役に立ったと思う本も紹介します。

初心者がLinuxの基礎を学習するのにオススメ

初心者がデータ構造とアルゴリズムを学習するのにオススメ

内容が理解できたら、下記の本で中級者向けの知識をつけるものよい。定番中の定番だが、C言語を知っていないと読みにくい

初心者が初めてプログラミング言語に触れる本としてとてもオススメ。Rubyやエディタのインストール方法から丁寧に解説してある

単一の機能を持ったアプリを作ってみる

STEP3では、「単一の機能を持ったアプリを沢山作ってみる」というお話をします。

いきなり、ちゃんとしっかりとしたアプリを作るのは難しいです。

まずは「ログイン機能を持ったアプリ」「DBにデータを入出力するだけのアプリ」「外部連携するだけのアプリ」など単一の機能を持ったアプリを作りましょう。

この学習をする目的は2つあります。

  1. 実際に手を動かしてみることで「何がわからないのか、わかる」
  2. 後々、プログラミングが楽になるし、資産になる

実際に手を動かしてみることで「何がわからないのか、わかる」

あなたは今、学習する目的と教材を手に入れているはずです。

しかし、初めて学ぶものなので「何がわからないのか、わからない」という状態なので、Qiitaとか個人の技術ブログに書いてある内容を写経したりコピーしながら作り上げるはずです。
それを何回も繰り返し手を動かし体に覚え込ませると、次第に記憶に残り知識となっていきます。

ある程度知識が増えてくると「何がわからないか、わかる」という状態になってきます。それを調べることで知識が更に増える好循環になり、次第にできることが増えていきます。

僕が初めてプログラミングに触れた時、最初に学んだことは「正規表現」でした。最初はその言葉すら知らずコードをコピペして使っていました。しかし、慣れてくると使われている単語の意味とか使い方とかを色々考え出しました。

それらが最終的に結びついて「このようなプログラムを書けばこのように動くのか」とぼんやりとですがわかったんです。

参考書や動画を見るだけでは、絶対に理解に苦しみ挫折していたはずです。

まずは気軽に間違っていても消したり捨ててしまえばいいから、気にせずにやってみることです。

後々、プログラミングが楽になるし、資産になる

ある程度レベルがアップすると、色々な機能を盛り込んだプログラムやアプリを作れるようになります。

そうしたら、その作ったプログラムを外でもコピペして使い回せるようにしましょう。

この時に手を抜かずに作っておくと、作りたいアプリをいざプログラムしようとした時に、これらのソースコードをコピーするだけなので、実装がとても簡単になります。

自分の周りの問題点を解決するアプリを作ってみる

最後に、プログラミングを使ってあなたの周りで困っている人たちを助けれないかを考えてみましょう。

それがモチベーションとなり、その目的を達成するために必要な技術や知識が見えてきます。

本当にそのアプリが人の役に立つかどうかは、実際につくって公開してみるまでわかりません。使ってもらえれば「どんな部分が良くてうまくいったのか?」、使ってもらえなければ「どんな部分が悪かったのか?」を分析することも大切です。

プログラミングを独学で学ぶデメリット

ここまでで、プログラミングを独学する方法を解説してきました。ここからは独学をしていたら必ず訪れる壁やデメリットについて解説します。

プログラミングを独学で学ぶと、下記のようなデメリットがあります。

  • 学習に沢山の時間がかかる
  • プログラマ界隈を知らないため独特な癖が付きやすい
  • 不明点を聞ける環境がなくて挫折しやすい
  • ずっと勉強のままで実践に移れない
  • 自分の成長を周りと比較できず自信をなくしていく
  • 独学で学ぶには時間をかけて諦めない心で挑む必要がある

学習に沢山の時間がかかる

まず1つ目は、独学には沢山の時間がかかるデメリットです。

初心者がプログラミングを始めると、必ず理解出来ない概念が出てきます。

先程少し話したように初めの内は「何がわからないのか、わからない」という状態ですから、プログラミング経験者にとってはは簡単なエラーでも、調べたり解決するのに凄く苦労します。

不明点を解消するために本やネットで集めて色々試行錯誤することでしょう。ふと気がつけば、1、2時間経ってしまい、進めたかったところまで勉強が進まなかった。ということがよくあります。

このように、「何がわからないのか、わからない」という初心者の時には、特に時間を消費しやすいのです。プログラミング経験者に聞けばすぐにわかることででも、相当の時間を要します。

僕も大学生の頃は独学で勉強をしていましたが、今思えばかなりの時間を要したなと感じています。おそらく人に教わったら110とかの時間で終わっていたと思います。

そして、それだけ時間を書けたわりに、得られるものはありませんでした。強いて言うなら「調べるのに諦めない心と調べ方」でしょうか?とくにそれほど特別なものはありません。

今思うと、もったいないことをしていたなと思います。

プログラマ界隈を知らないため独特な癖が付きやすい

2つ目は、プロのプログラマの書き方を知らないため、独特な癖が付きやすいデメリットです。

プログラムでは同じ処理をさせるにしても、色々な書き方が出来ます。例えば、下記はJavaScriptで書いたプログラムなのですが、どちらも同じ処理です。

書き方1

const score = ['ひろし',
	80,
	90 34,
	84,
	70
];
 
const score_name = score[
	0
];
const score_japanese = score[
	1
];
const score_math = score[
	2
];

書き方2

const score = ['ひろし',
	80,
	90 34,
	84,
	70
];
 
const [ score_name, score_japanese, score_math
] = score;

これらを見ると、初心者は色々な書籍に書いてある、慣れた「書き方1」の方が読みやすくて良いと感じる人もいるでしょう。しかし、現役プログラマから見ると「書き方2」のほうがより優れいていると感じます。

それは、プログラムが大きくなっても、本質的な処理がわかりやすくコンパクトにまとまっているからです。要は、プログラム量が増えても読みやすいということです。

このように、一見自分の今しているプログラミングが正しく見えても、それは読みにくいか、非効率な書き方をしている可能性があります。独学だとそれらの違いに気が付きません。

この影響は、プログラマへ中長期的な悪い影響を与えます。

不明点を聞ける環境がなくて挫折しやすい

  • 3つ目に、エラー発生など何らかの壁にあたった時、解決するために不明点を聞ける環境が無いという点です。

先程解説した通り、初心者は独学に多くの時間がかかります。そしてそれだけ沢山の労力もいります。プログラミングのエラー解決や調べ物が毎日続いていたら、「僕は本当に成長しているのかな?無理かもしれない。。。」という気持ちになってきます。

実際に、侍エンジニア塾調べで、87.5%の人が挫折を経験した、とのデータもあります。それくらい、精神的な難易度(壁)が高いものなのです。

特に時間の限られている社会人は、早朝や夜遅くにしか勉強が出来ないと思います。そのようなスキマ時間ではとても時間が足らないので挫折する人が多いのでは?と思っています。

ずっと勉強のままで実践に移れない

4つ目は、教科書の勉強をのまま、実践に移れず教科書や知識だけのマニアになってしまう点です。

独学をするとたしかに知識は付きます。しかし、殆どの人は「それをどのように生かしてサービスを作るのか」というのをしなくなります。

インプットするだけで自分のサービスに活かそうとせずただただ「まだまだ知識が必要だ」と思い、教科書ばかり眺めてひたすら勉強している状況になるんです。

プログラミングとは、あくまで人間の生活を豊かにする道具でしか無く、実践してアプリなどを作って初めて意味があるものなんです。そしてその過程で実践を繰り返してこそ、色々な商品を生み出すスキルとして身につくものです。

でも、実際それが普通だったりします。なぜなら、そもそも自分からサービスを生み出すなんて機会がないし、モチベーションがわかないからです。実際にやってからこそ、身につくスキルなのですが、独学だと次の一歩が踏み出せないんですよね。

だから、「次に何をすれば良いのか」を教えてくれたり、実体験を語ってくれるエンジニアが近くにいてくれて、相談することが何よりも大切です。

自分の成長を周りと比較できず自信をなくしていく

-5つ目は、自分が周りと比べてどのくらい成長しているのか比較できず、自信をなくしていく点です。何処までレベルを上げれば良いのかわからなくなるパターンですね

独学だと、今の自分のレベルがどのくらいなのか感じる手段がない
なので、どのくらい勉強すれば十分と言えるのかわからなくなっていく
そうなると、自分で勉強していくモチベーションがなくなって自信をなくしていく。

そうならないように、勉強会に出て自分と周りの差を感じてみたり、現役エンジニアに聞いて自分のレベルがどのくらいなのか確認できる環境が必要です。

独学で学ぶには時間をかけて諦めない心で挑む必要がある

6つめは、時間をかけて学ぶ覚悟が必要になる点です。モチベーション維持が大変という話です。

プログラミングの独学では、時間がかかることは何回もお伝えしました。時間がかかるということはそれだけモチベーションの維持が大変だということです。

プログラミングを学ぶ意味や理由が薄くなっていきます。

せっかくプログラミングにチャレンジしようとしたのに、それを諦めてしまうのは非常にもったいないことです。ですが、実際に挫折している人が多いことからも、はやり覚悟が必要な分野なのでしょう。

限られた時間で効率よくプログラミングを学ぶ方法

限られた時間で効率よくプログラミングを学ぶ方法があります。それが「現役プログラマに教わりエラーやミスを解決してもらいながら学習すること」です。

IT関係の会社に勤めていて、今は営業職などだった場合、エンジニアから教えてもらいましょう!現役エンジニアでなくても、プログラミングの詳しい人に聞くのでもOKです。わからないところはとことん人に聞いて自分の力にしてください

そうすることで、不明点をすぐに解決でき、モチベーション維持しつつ時間を節約できるという、とてもハッピーな状況を作れます。

しかし、「職場で聞くのは何か抵抗がある」「周りに詳しい人がいない」という方もいるでしょう。そんな方におすすめしたいのが、プログラミングスクールを利用してプロに聞く方法です。

抵抗なく来ますし、現役エンジニア&教えるプロですから、分からない部分やつまずく部分も的確に教えてくれます。教えるプロですからから教えてもらうほうが、圧倒的に楽というのもあります。

プログラミングは慣れるまでが大変です。慣れには一定期間必要で、多くの壁を乗り越える必要がありますが、この壁は高く険しいのです。ですので、乗り越える力がない人は、ゼッタイ誰かにサポートしてもらった方がうまくいきます。

特に最初は一人で頑張るよりも教えてもらったほうが、早いスタートダッシュを決めれてスキルが早く身につきます。

お金のことを心配している人でも、最初は無料で受けられ安心できるスクールも登場していますよ。

現役のエンジニアに簡単に質問できる環境が「CodeCamp」

ここで勘違いしてほしくないのが、僕はお金を払ってスクールに絶対に行ってほしい!と主張したいわけではありません

僕は、あなたが最も効率よく学習できる環境を紹介したいと思っています。どのような手段であってもあなたがプログラミングで成長できるなら、それが一番です。無料であっても良いのです。僕は、ただ、あなたの為になるようにサポートしていければと思っています。

独学で学べることを知った上で、独学とプログラミングスクールを比較し、スクールの内容を納得いただけた時、購入してほしいと思いっています。

プログラミングスクールでは学べる内容は、無料でインターネット上に落ちている情報と変わりません。

その上で、「プログラミングスクールに通ったほうが効率よく確実にスキルを身に付けれそうだ」と感じた時に、購入を検討してみてください。

僕が一番オススメなのが「CodeCamp」です。それは、下記のようなメリットがあるからです。

CodeCampのメリットを5つ紹介

  • マンツーマン指導で細かな不明点もすぐに聞けて理解が進む
  • 朝の7時〜深夜23時まで授業が受けられ時間が取れない社会人にも安心
  • 講師が全員現役エンジニアで最新のプログラミング動向なども知っている
  • LINE」「GunHo」「ニトリ」などの有名企業も導入する優れたカリュキュラム
  • マンツーマン指導にしてはお得な料金

マンツーマン指導で細かな不明点もすぐに聞けて理解が進む

1つ目のメリットは、マンツーマン指導で細かな不明点もすぐに聞けて理解が進むという点です。

「マンツーマン指導」を聞き慣れない方もいると思います。一言でいうと「家庭教師」みたいな存在です。授業形式で一度に複数の人に教えるのではなく、1対1で話をしながらその人のレベルに合わせて内容が進んでい来ます。

理解の遅い人は何度も丁寧に解説してくれますし、理解の早い人は次々に課題を出してくれます。授業形式だと、全員のレベルを合わせて進める必要があるので、理解の遅い人に合わせて進めていったり、置いていかれてしまったりと言った事がありません。

朝の7時〜深夜23時まで授業が受けられ時間が取れない社会人にも安心

2つ目のメリットは、朝の7時〜深夜23時まで授業が受けられるという点です。

  • 社会人には自由な時間があまりない
  • スキマ時間も短く、プログラミング学習に向かない
  • でもCodeCampなら、朝から深夜まで好きな時間に講師と1対1でレッスンを受けられる
  • ここまで朝早くから夜遅くまで対応しているスクールはない
  • 時間が取れない人にとって選択肢が多いというメリットもあるし、「朝のほうが集中力が高い」「夜の気分が上がり覚えやすい」とう、人それぞれに合わせて学ぶことができるので、効率よく学べるのがメリット。

講師が全員現役エンジニアで最新のプログラミング動向なども知っている

3つ目のメリットは、講師が全員現役エンジニアで最新のプログラミング動向などをエンジニア目線から教えてくれる点です。

教えてくれる講師は全員、現役のプロです。大手IT企業(サイバーエージェント、Yahoo!など)出身者、講師業を始めてから20年以上のベテラン、ベンチャー起業経営者、金融アプリケーション開発者など、多くの経験があって、さらに通過率10%の審査を得て採用された技術・教育エリートばかりが集まっています。

参考 講師紹介CodeCamp

そんな方々が、自分の経験などから今のプログラミングの書き方や技術などを丁寧に教えてくれます。

「LINE」「GunHo」「ニトリ」などの有名企業も導入する優れたカリュキュラム

4つ目のメリットは、「LINE」「GunHo」「ニトリ」などの有名企業も導入しているカリュキュラムだという点です。

CodeCampは300社以上、30, 000人以上のIT研修実績があります。

マンツーマン指導にしてはお得な料金

5つ目のメリットはマンツーマン指導にしてはお得な料金という点です。

他のマンツーマンスクールと比べても、学べる内容や講師陣の質に倒しての価格がとても安いです。(価格の比較がしやすいように、半年プランで比較しています)

スクール名 価格
CodeCamp 398, 000円(税抜)
tech camp 848, 000円(税抜)
tech boost 448, 600(税抜)
(入会金 269, 800円 + 月額 29, 800円 * 6ヶ月分)

さらに、CodeCampでは短い時間でレッスンを終わらせると、もっと料金が安くなります。2ヶ月プランだと「248, 000円」(2020年4月時点)です。

まとめ

この記事の結論をまとめます。

  1. 独学は無理ではないが、ハードルが高いのでオススメできない
  2. 始めは無料で受けられてプロから直接学べる質の高いスクールが出ている
  3. 独学をわざわざ選ぶメリットがあまりない
  4. 人に聞ける環境があればそれを利用しよう
  5. 環境がなければプログラミングスクール(CodeCampなど)を利用するとよい
  6. せっかくプログラミングを学ぼうと思ったのに挫折するのはもったいない

以上です。

僕は現在エンジニアとして活動してますが、エンジニアスクールに通っていれば独学で学んだ時と比べて時間が110とかで済んだんだろうなと思って後悔しています。
第二新卒でもフリーターでもエンジニアとして活躍できる時代です。エンジニアの世界に早く入ってきましょう!

後はあなたが行動するだけですよ!

CodeCampのキャンペーン

今ならオンラインチャットでの無料体験レッスンで10000円OFFクーポンプレゼント中です。予約数にも限りがありますので、お早めにお申し込みください

この記事を書いた人

自身がプログラミングを独学で勉強し始めて躓いた経験を元に、これから勉強をする人に向けに「イラスト多めでわかりやすい記事」にこだわって情報を発信しています。

現在はフルスタックエンジニアとしてサービス開発などのお仕事をしています。