プログラミングの勉強は挫折率が高いです。プログラミングの勉強をしようと意気込んでも、エンジニアとして活躍するまでになっている人は1割いるかどうかです。
これからプログラミングを勉強する人が、無事に「プログラミングでやりたいこと」を達成できるように、
- プログラミング学習前に知っておくべきこと
- やっておきたいこと
をまとめました。
プログラミングの勉強の最中に役立つサイトやサービスも紹介していますので、参考にしてください。
プログラミングの勉強は基礎力が重要
プログラミングの学習は、基礎力が重要です。そもそもプログラミングとは、やってほしいことを人間がコンピューターに指示してやらせることです。
コンピューターに指示を出すためには、コンピューターが理解できる言葉で指示を出す必要があり、プログラミング言語とは、コンピューターが理解できる言葉のことです。
コンピューターは人間と違って、空気を読んで作業をしてくれたり、足りない指示を補完してくれません。指示を出す文法のちょっとした間違いでも、やってほしいことをやってくれませんし、指示を出すにあたっての基本的な考え方が間違っていると平然と予想を超えたミスをします。
簡単な指示は、ググればやり方が出ていますし、「なぜその指示でそういう動きになるのか」を理解していなくても大丈夫です。
しかし、やってほしいことが複雑になるほど、基礎を理解した上での応用が問われます。
数学と一緒で、公式の丸暗記やパターンの暗記では稼げるプログラマーにはなれないのです。
プログラミング学習は外国語の習得に似ている
プログラミングの学習は外国語を習得するための勉強に似ています。
例えば英語学習では、この4つの要素を丁寧に履修しないと「読む・書く・聞く・話す」の4つがそろった英語力がつきません。プログラミング言語を使いこなせるようになるのも一緒です。
- 語彙力
- 文法の理解
- アウトプット
- 適切なフィードバック
英語学習は、語彙力の強化、文法の理解、アウトプット、適切なフィードバックのサイクルを回せば、3ヶ月ほどでTOEIC500点代の人がビジネスレベルまで上がることができます。
プログラミング言語の学習も一緒で、この4つを適切なサイクルで回すことで短期間での習得が可能なのです。
- 使用言語特有の表記の暗記:語彙力
- 指示を出す際の文法と仕組みの理解:文法力
- 言語を使った成果物の作成:アウトプット
- 成果物へのフィードバック・エラーメッセージからの学習:適切なフィードバック
独学でこの4つのサイクルを回せる人はなかなかいません。
一般的なプログラミングスクールが、独自のカリキュラムを作成し、メンターをつけているのは、プログラミング学習者がこのサイクルをスムーズに回せるようにと考えてのことです。
1つの言語を基礎からしっかり学ぶことで他言語でも応用の効く人材になる
プログラミング学習は外国語の習得に似ていると言いましたが、学習方法だけではなく1つの言語を理解することで他言語にうつる際の学習コストが減るという意味でも似ています。
例えば、英語を学んだ人はドイツ語やフランス語などの言語を学びやすく、知らない単語が出てきたとしても「もしかして、あの単語の派生語?」のように意味を把握することができます。
プログラミング言語も同じで、1つの言語を基礎からしっかり学ぶことで他の言語にうつったときに「あの言語でやったあれと似た考え方」「あのときはこうだったけれど、こっちではこう」という風に脳内の回路がつながりやすく、学習がはかどります。
プログラマーを求める転職で「完全な未経験者」よりも「他言語で開発経験はあるが、その言語では未経験」という人が好まれるのもそういった理由からです。
プログラミングの勉強に用意すべきもの3つ
プログラミングの勉強を始める前に用意すべきものは、3つあります。この3つは必ずそろっていないといけません。
- 最低300時間の学習時間
- パソコン(WindowsでもMacでも可)
- わからないことを調べる力
1つのプログラミング言語を使って、簡単なプロダクトを作れるようになるまでの学習時間は300時間と言われています。短期間で300時間学習しようとすると挫折してしまいますが、長期的な学習で達成しても内容が伴っているならOKです。
パソコンスクールのように教室にパソコンがあり、自分でパソコンを用意していなくても学習できることもありますが、プログラミングを独学して就職するならパソコンは必須です。
プログラミングスクールには、メンターといってどんな質問にも答えてくれる人がいますが、独学の場合はいません。わからないことを自分で調べて解決する力がないと学習が続かないでしょう。
独立までに必要な学習時間は最低300時間
プログラミングを勉強してエンジニアとして独立するために必要な学習時間は、1,000時間と言われています。
どんなに効率的に学習したとしても、最低でも300時間の学習は必須とされており、時間を確保できないとプログラミングの勉強は難しいでしょう。
学習期間を3ヶ月間とすると、毎日3時間の学習です。未経験から1ヶ月でWebサービスを作ったり、サービスをリリースする人は、寝る暇も惜しんで学習していますが、主婦からプログラマーになる人は毎日1時間から2時間の学習を1年程度続けてプログラマーになっています。
ホームページ制作に必須のHTML/CSSの学習だと、300時間の学習で最低でも簡単なコーディングとJavaScriptの導入ができるようになります。
得意な人だと、ECサイトのカートの実装程度まではモノにできているでしょう。
できれば1,000時間、最低でも300時間といいますが、パソコンを前にしてプログラミングをすればなんでもいいというわけではありません。
プログラミングの勉強の初期と中期では学習すべき教材が違います。自分のレベルに合わせた教材選択は必須です。
きちんとロードマップを作成して教材を選び、効率的に学習しないといつまでも「ちょっとプログラミングを触ったことがあるだけの人」にしかなれないでしょう。
プログラミングを勉強するパソコンはMacでもWindowsでもよい
プログラミングの勉強に使うパソコンはMacでもWindowsでも大丈夫です。
SNSで「プログラマーになりたいので、Macの購入費用をカンパしてください」と言っている駆け出しエンジニアがいますが、iOSエンジニアになりたいのでない限りはMacである必要はありません。(iOSの開発はMacでないとできない)
Macを購入するのは、スペックに物足りなさを感じたときで大丈夫です。学習に必要な参考書や動画教材は、MacでもWindowsでも学習できるようになっています。
高いパソコンを購入することで「このパソコン費用を無駄にしないためにも、絶対に諦めない」と考えるのは勝手ですが、勉強に必要な必要最低限のパソコンで済ませることで学習教材などにお金をかけることができます。例えば、「学習する時間が足りないから、週末の食事はUberを使う」「家事の時間を短縮するために家電を買う」といったようにです。
学習に使うエディタやブラウザ、開発環境は学習教材に出ているものを使えば問題ありません。
多くの教材がインストールから日本語化まで解説しているので、困ることはないでしょう。
わからないことをググる力
「プログラムがエラーを出した」「コピペでできると思ったのに、うまく動かない」「動画教材の途中でわからなくなってしまった」そんなときに必要なのが、ググる力です。
「なんでもかんでも誰かに聞く人」を罵倒する言葉に「ググレカス」がありますが、実際は、検索すればすぐに答えがわかるほど単純ではありません。ググる力とは具体的にこんなことを言います。
- 自分が何で困っているのかがわかる
- どんな言葉で検索すればいいか察する
- 実際に検索してみて正解かどうか確認できる
- 間違っていた場合に他の解決策を探せる
特に、プログラミングを勉強したての頃は、エラーの意味もわからず、自分がやりたいことがどうやって達成できるのかもわからず、どうしていいか困ってしまうことの方が多いです。Webサイトに表示される文字の位置をずらしたいだけの作業に4時間も検索しているということも普通にあり得るのです。
メンターもいない独学の場合は、たった1つのエラーを解決するにもかなり時間がかかります。
Google検索を上手に使って、やりたいことに近づけるようにする力も、プログラミングの勉強には必須です。
プログラミングの勉強に挫折しないために必要な考え方
プログラミングの勉強は、長期戦です。ある程度自分で形になるものができるようになるまでは、モチベーションの低下に伴う挫折が最大の敵になります。
そこで、ここではプログラミングの勉強に挫折しないために必要な考え方を紹介します。
- 最終的なゴールと期限を決める
- インプットとアウトプットは同時並行で行う
- 基礎本を攻略しただけで満足しない
- 8割の理解で先に進み、全体像を把握する
- 簡単なところから入り成功体験を積み重ねる
プログラミングの学習に限らず、モチベーションを下げない方法は「目標を立て、小さな成功体験を積み重ね、習慣化する」です。
プログラミング学習の場合は、具体的にこうなります。
最終的なゴールと期限を決める
プログラミングを勉強した結果「なっていたい姿」といつまでにそうなっていたいのかを決めましょう。
なりたい姿は具体的な方がいいです。期限も具体的に区切っておかないと、ダラダラと学習を進めてしまい、3年も勉強しているのに実戦で使えるスキルはついていないという状況になってしまいます。
インプットとアウトプットは同時並行で行う
プログラミングの勉強は手を動かしながらするのが基本です。学習教材でインプットしたら、必ず手を動かしてアウトプットしましょう。
ブログやSNSで「今日は教科書のここまでやった」と報告するのもいいですが、コードが出てきたのならエディタを起動して入力した方がいいでしょう。
パソコンを起動するのが面倒な場合でも、CodePenのようにスマホやタブレットのブラウザでもコード入力ができるサービスもあります。コードを覚えているかどうかだけ確認したいなら、メモ帳を使う手もあります。
基礎本を攻略しただけで満足しない
Twitterで「Progate2周目!HTML&CSSコースを修了しました!駆け出しエンジニアの皆さんとつながりたいです!」という投稿を見かけますが、基礎中の基礎を何度もクリアしただけで満足しないようにしましょう。
基礎は大切ですが、「プログラミングがどんなものかわからない人のための基本」が書かれている本(サービス)なのか、「これから本格的な学習を始めようという人のための基本」が書かれている本(サービス)なのかの見極めが大切です。
とりあえず触ってみるだけの学習サービスは、サクサク進みますし気持ちがいいですが、それだけではプログラミングの基本は身につきません。
基礎を攻略したら、必ずステップアップしましょう。ステップアップした教材でわからないところが出てきたら基礎に戻ることで、自分がわかっていないことが明らかになります。
8割の理解で先に進み、全体像を把握する
100%理解しようとすると全ての学習プランを終わらせる前に挫折します。8割程度理解したと思ったら、次に進みましょう。
プログラミング学習がサクサク進むということはありません。
もし、サクサク進んだとしたら、あなたのレベルに合っていない教材ということです。
「この教材は何を目的とした教材で、私が今やっていることは全体からみたどの部分なのか」を意識しながら、進めましょう。
どうしてもわからないことは諦めて先に進んでみましょう。先に進んだところで「あれはそういうことだったのか」とわかる場面も出てきます。
簡単なところから入り成功体験を積み重ねる
簡単なところから入り、成功体験を積み重ねましょう。
教材の通りに入力しているはずなのにうまく動いてくれないのが、プログラミングの勉強です。
いきなり難しい教材から入ると、気持ちが挫けて先に進めなくなってしまいます。
「あのときのエラーも対処できたから今度も大丈夫」
といった成功体験が自信につながります。
プログラミングの独学に役立つ教材
プログラミングの独学に役立つ教材をご紹介します。有料のものも無料で利用できるものもあります。どの教材も「質がいい」「役に立った」と評判のものばかりです。自分のレベルに合わせて利用してみてくださいね。
順位 | サービス | ポイント |
1位 | Udemy | 専門家による10万以上のオンラインコースがある 一度購入したものは学習期間の制限なしで利用可能 |
2位 | Progate | イラスト中心のスライド+ブラウザ上で入力できるのでやりやすい アプリと併用すればスマホ・タブレットでも学習可能 |
3位 | ドットインストール | 全ての動画が3分以内で提供されている動画学習サービス プログラミング専門の学習サービスで、提供動画数は6,428本 |
4位 | Schoo | 生放送授業は参加型!まるで大学のオンライン授業に参加している雰囲気 プレミアムサービスに加入で4,600以上ある録画授業が見放題 |
5位 | Paiza(paizaラーニング ) | 1本あたり3分の動画でスキマ時間に学習できる カリキュラムは転職サイトで現役エンジニアが受験したコーディングテストがベース |
Udemy
公式サイト:Udemy
- 専門家による10万以上のオンラインコースがある
- 一度購入したものは学習期間の制限なしで利用可能
- 教育大手のベネッセコーポレーションがパートナー、教材の質は高く安心して利用できる
言語 | ほとんど全てのプログラミング言語に対応 |
期間 | 一度ダウンロードしたものは期間の制限なし |
受講スタイル | オンライン講座の買い切り |
返金 | あり |
特徴
Udemyは、プログラミングに限らず様々な学習コンテンツがあるオンライン学習サービスです。日本語の講座も充実していますが、英語のコンテンツも多く、英語でプログラミングを学びたいという人にも向いています。
学習コンテンツは買い切りとなっており、一度購入したコンテンツは期間制限なく閲覧可能です。コンテンツを作成しているのは、各業界のプロフェッショナル。コンテンツの質が落ちないように、学習コンテンツの配信をするための審査基準も厳しいです。
3ヶ月から半年に一回ペースで大規模な割引セールを実施することも有名で、20,000円のコースが1,980円で購入できることもあります。
コース
Udemyのコースは、ほぼ全てのプログラミング言語を網羅しています。レベル別、言語別に検索ができるので、自分が学びたい言語があるか調べてみるといいでしょう。
価格
Udemyの価格は、千円台から数万円するものまで様々です。セール時期に購入すれば、高いコースでも2,000円もあれば十分にたります。
\
Progate
公式サイト:Progate
- イラスト中心のスライド+ブラウザ上で入力できるので学習しやすい
- アプリと併用すればスマホ・タブレットでも学習可能
- 無料プランは基礎レベルの18コースを受講できる
言語 | HTML/CSS/JavaScript/Ruby/jQuery/Ruby on Rails/PHP/Java/Python/CommandLine/Git/SQL/Sass/Go/React/Node.js など |
期間 | 有料プランは1ヶ月ごとに更新 |
受講スタイル | オンライン |
返金保証 | なし |
特徴
Progateは、Webブラウザやアプリで簡単にプログラミング言語の学習ができるサービスです。スライドで理論を学習した直後に演習問題としてコードを入力するので、小さな成功体験を積みやすく、全くの未経験者から高い評価を受けています。
簡単に成果物ができていくので初学者向けですが、内容としては浅く「Progateは子供のおもちゃのようなものだから」という現役エンジニアもいます。基礎中の基礎の学習には向いていますが、Progateは「学ぶ言語がどんなものなのか、とりあえず触ってみる」程度にし、もう少し難易度の高い学習コンテンツに取り掛かった方がいいでしょう。
コース
- HTML/CSS
- JavaScript
- Ruby
- jQuery
- Ruby on Rails
- PHP
- Java
- Python
- CommandLine
- Git
- SQL
- Sass
- Go
- React
- Node.js
それぞれのコースには、基礎コースと応用・実践コースがあります。無料会員が利用できるのは基礎コースのみ、応用・実践コースを利用する場合は有料会員になる必要があります。
価格
Progateは基礎コースだけなら無料で利用できます。
全てのコースを利用可能な有料会員になるには、月額980円かかります。有料プランの開始日は、登録日で、自動更新されます。
ドットインストール
公式サイト:ドットインストール
- 全ての動画が3分以内で提供されている動画学習サービス
- プログラミング専門の学習サービスで、提供動画数は6,428本
- プレミアム会員になれば現役エンジニがレッスン内容の疑問点に答えてくれる
言語 | プログラミング言語全般 |
期間 | なし |
受講スタイル | オンライン |
返金保証 | なし |
特徴
ドットインストールは、全ての動画が3分以内で提供されている動画学習サービスです。プログラミング専門の学習サービスで、6,000本以上の動画を提供しています。
無料会員と有料会員(プレミアム会員)があり、無料会員は使える機能と閲覧可能な動画に制限があります。Progateでコードを学習した人が、理論を学ぶために利用することが多く、プログラミングスクールのプラスアルファとして利用するようにおすすめする講師も存在します。
コース
ドットインストールで提供されているコースは、432コースにものぼります(*2020年8月時点)。プログラミング言語の種類、学ぶ人のスキルレベル、作りたいもの別で検索可能なので、絞り込み検索をしてみるといいでしょう。
価格
ドットインストールの有料会員(プレミアム会員)の料金は、月額1,080円です。プレミアム会員になると以下の機能が使えるようになります。
- プレミアム動画の閲覧
- 文字起こしの閲覧
- ソースコードの閲覧・比較
- 再生速度の変更
- 講義音声の変更
- 先生への質問機能
公式サイト:Schoo
- 生放送授業は参加型!まるで大学のオンライン授業に参加している雰囲気
- プレミアムサービスに加入で4,600以上ある録画授業が見放題
- プログラミング以外にも仕事に活かせるスキルや知識を学べる
言語 | プログラミング入門/Python/HTML/CSS/Xcodeなど |
期間 | なし |
受講スタイル | オンライン |
返金保証 | なし |
特徴
Schooは、大学のオンライン講義のような参加型のオンライン講義と、過去に放送されたオンライン講義を受講できる学習サービスです。プログラミングに限らず、ビジネス、英語、マネジメントなどの講義があります。
プログラミング関連の講義は、JavaScriptやPHPなどWeb系言語が多めですが、iOSやAndroidのアプリ開発、Pythonなども含まれています。2016年の講義が公開されていたりと、内容として古いものもありますが2020年になって公開されている講義もあります。
コース
スクーのプログラミング関係の講義は、30ほどあります。その中で人気が高い10の講義はこれらです。
- JavaScript
- PHP
- Java
- Ruby
- Androidアプリ
- iOSアプリ
- Ruby on Rails
- Python
- プログラミング入門
- Swift
価格
Schooは、録画授業が見放題になるプレミアムプランがあります。プレミアムプランの料金は、月額980円で、年間契約すると2ヶ月分が無料になります。
プレミアム会員と無料会員のできることの違いはこちらです。
Paiza(paizaラーニング )
=
公式サイト:Paiza
- カリキュラムは転職サイトで現役エンジニアが受験したコーディングテストがベース
- 1本あたり3分の動画でスキマ時間に学習できる
- 運営はプログラミング力・コーディング力で転職先を決めるPaiza
言語 | C/C#/HTML/Java/JavaScript/SQL/PHP/Python3/Ruby/シェルコマンド/AWS/Sinatra/Git/Ruby on Rails/MySQL/Servlet など |
期間 | なし |
受講スタイル | オンライン |
返金保証 | なし |
特徴
Paiza ラーニングは、コーディング転職のPaizaが運営するプログラミング学習サイトです。コーディング転職とは、転職希望者のコーディングレベルによって紹介される企業が決まるシステムのことです。応募者のスキルレベルに応じた転職先選びに役立ちます。
Paiza ラーニングは、そのコーディングテストを元にして作られたカリキュラムによってプログラミング言語が学べるプラットフォームです。転職に直結する技術が学べることが最大の特徴になっています。
コース
学べるコースは様々なものがありますが、言語と技術だけで絞り込むとこうなります。
- C
- C#
- HTML
- Java
- JavaScript
- SQL
- PHP
- Python3
- Ruby
- AWS
- Sinatra
- Git
- Ruby on Rails
- MySQL
- ServletJSP
- Flask
- Jinja
- SQLAlchemy
- Eloquent
- Django
- Laravel
- Active Record
価格
Paiza ラーニングには、1ヶ月600円の有料プランがあります。有料プランでしか閲覧できない動画講義があるので、全ての動画講義を受講したい人や、必要な講義が有料プランになっている人は、加入が必要です。
独学に役立つサイト
独学するのに役立つサイトもご紹介します。プログラマー・エンジニア向けのエントリーが豊富で検索しやすく、有益な情報も多いです。
順位 | サービス | ポイント |
1位 | Qiita | エンジニアによるエンジニアのための知識共有サービス プログラミングや技術に関する質の高い記事が読める |
2位 | teratail | プログラミング専門のQ&Aサイト 現役エンジニアも参考にすることがある |
3位 | note | 有料マガジンの配信・購入も可能なブログ系サービス 初心者エンジニア向けの記事も充実しており、参考になる |
4位 | YouTube | エンジニア向けの動画学習チャンネルも豊富 英語検索することでノイズを少なくして良質な情報を得ることができる |
Qiita
公式サイト:Qiita
- エンジニアによるエンジニアのための知識共有サービス
- プログラミングや技術に関する質の高い記事が読める
- ブログサービスに近いのでエンジニア同士の交流の場としても使える
おすすめ度→★★★★
Qiitaは、エンジニアリングに関する知識を共有するためのサービスです。はてなブログに代表されるブログサービスのような形式をとっており、エンジニアとして活躍している人が自分の知見や体験を文章に残しています。
「同じエンジニア仲間の役に立つ情報を発信する」が利用者の共通認識です。一般的なブログサービスと違い、日記のような記事が少なく、役立つ記事が多いです。
teratail
公式サイト:teratail
- プログラミング専門のQ&Aサイト
- 現役エンジニアも参考にすることがある
- エラーやバグで困ったときに質問可能で、過去の質問を参考に解決に至ることも
おすすめ度→★★★★
teratailは、プログラミング専門の質問サイトです。プログラミングで行き詰まったときに使います。自分で検索してみてもわからないときに気軽に質問できるので便利です。
困っている人が使いやすいように、初心者が質問していることがわかるマークや質問に対する最も適切な回答がわかるようになっています。
note
公式サイト:note
- 有料マガジンの配信・購入も可能なブログ系サービス
- 初心者エンジニア向けの記事も充実しており、参考になる
- 日常ブログとしても利用可能なので、日々の学習記録としても使える
おすすめ度→★★★
noteは、技術ブログとしても日常ブログとしても利用可能なサービスです。有料マガジンの配信や購入も可能なので、自分の知見を有料配信し、お小遣い稼ぎをしている人もいます。
自作漫画や小説、コラムを配信する人が多かったのですが、エンジニアによるエンジニア向けの記事も配信されています。Qiitaほどではないものの、「良質なコンテンツが多い」と評判になっているサービスです。
YouTube
公式サイト:YouTube
- 言わずと知れた動画配信サービス
- エンジニア向けの動画学習チャンネルも豊富
- 英語検索することでノイズを少なくして良質な情報を得ることができる
おすすめ度→★★
Youtubeにもエンジニア向けの学習動画がアップされています。プログラミングスクールが提供しているものもありますし、Udemyの講師が配信しているチャンネルもあり、チャンネルを探し当てることができれば役立つでしょう。
プログラミング未経験者を騙すような質の悪いチャンネルも多く、どのチャンネルが良質な情報を発信しているのかわかりにくいのがYoutubeの欠点です。英語で検索することである程度フィルタリングできますが、初学者には難しいでしょう。
まとめ:プログラミングの勉強は社会人生活にも役立つ!積極的に学習しよう
プログラミングの勉強で大切なことは、基礎力を効率的につけることです。なんとなくできた気になって先に進んだとしても、確かな基礎力に基づいた応用力がなければ現場で活躍することはできません。
基礎がつくまでの期間は、泥臭い努力が続くので辛いかもしれませんが、耐えましょう。
プログラミングの勉強は、論理力や構成力を養います。エンジニアデビューを目的としていなくても役立つものです。無料で学習できるサイトやサービスもあります。積極的に利用したいですね。