プログラミング独学で挫折?なら、これを読め!

2021年2月4日

IT
独学
初心者向け
挫折

プログラミング独学で挫折してしまった人に贈る、現役プログラマーの言葉とリアル

どうも。
26歳でフリーランス英語・スペイン語通訳からWeb系エンジニアに転職してエンジニア歴5年。
普段はフルスタックエンジニアしてます、テック備忘LOGのYuki(@tech_bibo_log)です!!

今回はプログラミングの独学に焦点を当てたいと思います。
初学者には少々敷居の高いプログラミング、途中で挫折してしまうことがよくあります。


かく言う私も、高校時代、大学時代にいく度と独学に励んでみては、その度に挫折し教本は押し入れに...。 なんてことを繰り返してきました。
ですが、そんな僕も今ではJava、Python、C#、JavaScriptなど代表格からモダン技術まで触るITオタクになってしまいました!!笑

そんなかつての自分と同じ状況に嘆いている方に向けて、”初心者”と挫折から抜け出す助けとなる プログラマーやSEの現実効率良く学習を行うチップを紹介したいと思います!

Yuki

この記事ではこんな人にオススメです。

  • プログラミング独学で挫折してしまった人
  • プログラミングを勉強したいけど不安な人
  • なにから学べばいいか迷っている人
  • 何が分からないか分からない人


次の内容について話していきたいと思います。

この記事で分かること

  • まず用意するものは?
  • どの言語を勉強すればいいのか
  • プログラマーのタイプと扱う言語について
  • 言語の選びかた
  • どうやって勉強すればいいのか
  • 現役プログラマー/SEはどうやって勉強しているのか(挫折しない学び方のコツ)
  • 現役プログラマー/SEはどうやって仕事をしているのか(現場のリアル!!)
  • 初心者から抜け出す方法
  • まとめ


それでは早速始めましょう!

▽▽▽ Djangoでブログを構築した時のお話し ▽▽▽

[ 目次 (開く) ]

まず用意するものは?

プログラミング学習を始めるにあたって、まず必要なのがパソコン。
「そんなの知ってる!当たり前でしょ!!」って...?
では、WindowsとMac、あなたはどちらを選ぶのが正解だと思いますか?

...

...

...

Yuki

答えは『どちらでもよい』です。



基本的にはWindowsでもMacでも開発が可能で、僕は基本的にはWindowsPCで開発をしています。

勉強や業務でよく扱う言語・技術はHTML、CSS、Java、C#、Python、JavaScript(jQuery)、Node.js、React、Angular、TypeScript、Apatch、Tomcat、Nginx、 Git、Dockerなどで、ざまざまな技術をWindowsで使うことが出来ます。
Macでも同じことはできるので、好みで選べばよいと思います。

ただし、iOSアプリ開発を行う場合はMacが必須になる場合など、気を付ける必要があるので購入前にリサーチしておきましょう!
PCの性能に関していうと、開発ツールがフリーズすることなく動くレベルの安すぎないPCを用意できればいいですね。

初めてのプログラミング学習。どの言語を選べばいいの?

次に、初学者が迷ってしまうのがコレでしょう。 何を学べばいいのか?

実際何を勉強すればええの?早く教えろ!

生徒A

ちょっと待ってください。落ち着いて!
まずは自分が『何を作りたいか』考えてみましょう。

iOS/Androidのスマホアプリやゲームなのか、PCゲームなのか?
はたまた『食べログ』や『Twitter』のようなWebサービスなのか、ブログサイトやホームページのようなWebサイトなのか?

AIエンジニアになりたいのか、仮想通貨関連のブロックチェーンエンジニアになりたいのか?

もっというと、映画に出てくるような悪いことするハッカー(正確にはクラッカー)みたいに、 システムの裏側に関わるセキュリティー関連の仕事がしたいのか?

ここをまず明確にしましょう!!!!!!!!
それによって選ぶ言語もある程度絞られてきます!

プログラマーのタイプと扱う言語について

プログラマーという仕事は一般的に、大きく分けて3つに区別されます。

プログラマー

  • フロントエンドエンジニア
  • バックエンド(or サーバーサイド)エンジニア
  • アプリエンジニア(iOS/Android)


ここで某企業の採用情報を見てみましょう。
求人例

そして、これらの各エンジニアに求められる技術や業務内容などは、求人情報やフリーランスの募集内容を見ることで リアルタイムで必要とされている技術スタックを把握することが可能です。


次の画像はバックエンドエンジニア募集の一覧です。 求人内容例

Yuki

ちなみにフロントエンドもサーバーサイドもまんべんなく業務が行えるエンジニアのことを フルスタックエンジニア と呼ぶことがよくあります。



では話を変えて、今回はWebサイトやWebシステムを作りたい人を例に、『Webエンジニア』という職業に焦点に当ててみましょう。
まず、Webサイトは『静的サイト』と『動的サイト』に分けることができます。

静的サイトとは?

シンプルで動きが少なく、文字と写真(画像)ベースで構成されるホームページなど


動的サイトとは?

カッコいいアニメーションがビュンビュン動いたり、様々な情報がマウス操作で入れ代わり立ち代わりで表示されるサイトや 入力した文字が保存されてサイト表示に表示できるようなブログや掲示板、ニュースサイト、Webサービスなど


静的サイトを作る場合

比較的簡単な技術スタックで作業ができる静的Webサイトの場合、HTMLやCSSだけでWebサイトを作ることが可能です。
必要に応じてJavaScriptや、JavaScriptライブラリのひとつであるjQueryも使っていきます。

最近ではNode.js + React.js + JSX + CSSといった比較的新しく、難易度の高い技術スタックでも作成することも可能です。
※そもそも論やメリット、デメリットの話は抜きにします。



動的サイト(ブログや掲示板)を作る場合

ブログのように記事を書いて公開し、コメントを受け付ける様なWebサイトではデータベースというものを扱いながら 作成していくことになるので必然的に求められる技術スタックが増えてきます。

例えばHTML + CSS + PHP + MySQLといった技術スタックを使用するもの。
代表的なものでいえばWordPress(CMS)が分かりやすいでしょうか。
これらにPhotoshopやillustratorを使用していくとWeb屋さんの代表的な技術が揃いますね!!

他には次のようなパターンもあります。

その他のパターン(一部)

  • Ruby on Rails(Rubyのフレームワーク) + MySQL(データベース) + HTML + CSS + JavaScript
  • Django(Pythonのフレームワーク) + MySQL + Apatch(or Nginx) + HTML + CSS + JavaScript
  • Laravel(PHPのフレームワーク) + MySQL + Nginx + HTML + CSS + JavaScript
  • Java(Spring) + Tomcat + Apatch + MySQL + HTML + CSS + JavaScript
  • Django REST Framework + React.js + JSX + HTML + CSS + MySQL + Apatch(or Nginx)
  • などなど

これらの技術パターンはWebシステムや個人ブログ、小規模/大規模Webサービスなど、用途によって技術を選定していきます。

そして余談ですが、この技術選定はシステムエンジニア(SE)やプロジェクトリーダー(PL)というポジションにつく方々が上流工程という名の業務で担当して決めています。

こんなにもいろんなパターンがあるんですね...しかも、これでほんの一部...? 選べる気がしません...(泣)

生徒A


安心してください。ここからは学習する技術の選び方のコツも紹介してきます!
ご自身でしっかり考えて選んでみてください!

勉強する言語の選びかた

それでは、効果的な調べ方を伝授いたします。
その方法とは...

フリーランス向けのお仕事マッチングプラットフォーム『ランサーズ』や『クラウドワークス』、 また以下のフリーランス向け求人サイトでお仕事を検索してみる!です。
- フリーランススタート
- クラウドテック
- レバテックキャリア

さらに有名なIT企業の採用情報の募集要項や業務内容、使用技術スタックをチェックする方法です!

確かに求人情報なら日本企業のトレンドや現場で使ってる技術が分かりそうですね!!みんなもチェックしてみよう!!

生徒A


Yuki

ちなみにわたし個人的には次のような認識をしています。

事業会社、ベンチャー企業はPHP(Laravel)、Ruby(Ruby on rails)、Python(Django)などの言語や、スピード感を持って開発ができるWebフレームワークなどの新しい技術の採用に積極的。

受託開発企業や中・大企業、銀行などはJava(Spring,SpringBoot)、C#(.NET)、C++、COBOLなどの歴史が長い技術、安定した技術の採用に加え、様々な種類のデータベースを併せて開発をおこなう。

Web系ならHTML + CSS + JavaScriptのセットは必須で基本中の基本。



Webアプリケーションフレームワークとは?

Webアプリケーションフレームワークは、動的なウェブサイト、Webアプリケーション、Webサービスの開発をサポートするために設計された アプリケーションフレームワークである。 フレームワークの目的は、Web開発で用いられる共通した作業に伴う労力を軽減することである。 by ウィキペディア



ベンチャー企業などはスピード命なので新しいWebフレームワークを採用することが多く、フリーランスなどの即戦力を多く雇ったりします。
こういった点も頭に入れて、後々自分がフリーランスになりたいのか、事業会社・ベンチャー企業に就職したいのか、 受託開発メインの中・大企業に就職したいのかという目的を見据えながら選ぶのがコツです。


Yuki

言語ごとに案件・採用の多さも異なるため、自分の目的に合った言語を選びましょう!!!



どうやって勉強すればいいのか

言語が決まったら早速学習を始めていきましょう!!!
筆者のオススメはProgateの無料コースとUdemyの講座を受講する流れです。

プログラミングのオンラインスクールでもなく、教材でもなく、『Progateの無料コースとUdemyの講座』です!


回し者でも、アフィリエイトでもないです。いや、アフィリエイトはしてるけど、本当に個人的なおすすめです!!!

順番的にはProgate ⇒ Udemyの講座です。

1:まず『Progate無料版』で基礎を1周手っ取り早く終わらせる
2:もう一周『Progate無料版』で基礎をやる(流れ作業で良い)
3:そのあとに、Udemyで講座を受講する

ただそれだけ!!!

嘘をつくな~~~~~ふざけんな!!まじめにやれや~!!!怒怒怒怒怒怒

生徒A


嘘じゃありません。ほんとです。
高額な料金払ってオンラインスクールやコースを受講する必要ありません。


1:まず『Progate無料版』で基礎を1周手っ取り早く終わらせる
2:もう一周『Progate無料版』で基礎をやる(流れ作業で良い)
3:そのあとに、Udemyで講座を受講する

ただそれだけ。

さらにもう一つ、重要なことを言います。
<h2>タグを使ってでも、言わせて頂きます。

Progateでは正解の内容もその理由も、途中で沸いた疑問もすべて、絶対に深く考えることもなく、分からなければ直ぐにヒントを開き、流れ作業で無料プランを最後までやりきること!!

もう一度言います。
Progateは正解の内容もその理由も、途中で沸いた疑問もすべて、絶対に深く考えることもなく、分からなければ直ぐにヒントを開き、流れ作業で無料プランを最後までやりきること!!

やりきったら一度だけ余韻に浸り、自分を褒め、自らを誇ってください。
そして、同じコースをもう一周!

『あぁ...1周目でこんなプログラム書いたなぁ~そういえば。はいはい。これね~ぽちっ!』...でいいです! 2周目も終わりましたか?
それでは『Udemy』で勉強したいと思う技術の講座を探して受講してください。

『動画を停止 ⇒ 言われるがままにコピーコーディング ⇒ 再生 ⇒ 動画を停止 ⇒ 言われるがままにコピーコーディング』
ひたすらこの繰り返しです。

どうしても理解したい...そんなとき、Udemyでは無料で講座の先生に質問することが出来ます。
ここぞとばかりに質問しまくりましょう!でも、深く理解しようとしたりしないでください。

『あぁ、そうなんだ。』で終わって次に進みましょう!!

現役プログラマー/SEはどうやって勉強しているのか(挫折しない学び方のコツ)

現役プログラマー/SEはどうやって仕事をしているのか(現場のリアル!!)

この2つ、まとめて話しちゃいます。


まず、現役プログラマーはどうやって勉強・業務しているのか?
一般的に『1つの言語を習得したら、他の言語もすぐに習得できる』と言われています。

が。そんな、すごそうな現役の人たちも、実は...
ググってます!

あなたもビックリするくらい、いっつもググってます。
ググるのが仕事なくらい常にググってます!


まったく、何も恥ずかしいことではありません。
技術は常にアップデートされていくもの。スマホアプリのバージョンが変わって、アップデートしてくださいってよく言われたりしますよね。

あんな感じで日々、改善されています。


日々、凄いプログラマーたちがプログラミング言語やそのライブラリやフレームワークを改善してくれている為、 前まで問題無かったコードが使えなくなるってことも起きます。

要するに、

Yuki

真面目に全部理解しようと、丸暗記しようとする必要はないということ!
ググったら、コピぺして実行!エラー出たらまたググる!



これが挫折しない方法です。
何回も ”エラー ⇒ ググってコピペ ⇒ 実装” を繰り返しているうちに身についてます。
存在する技術、用語を知り知識を積み重ねていくこと。

List型だからfor文使うか~。繰返し処理したいからWhile文かな~いや、fo文?う~ん..

プログラマーA

Excelみたいに表示したいから< table >タグ使うか~。あれ、最近使ってないから忘れたわ

プログラマーB

Json型ってどうやってパースしたっけな...ググろ。

プログラマーC

Date型ってどうやって文字型にパースしたっけな...ググろ。

プログラマーD

あのスタイル(CSS)ってどうやって書くんだっけ...?ググろ。

プログラマーE

これが現実。あんな技術あったなぁ。どうやるんだっけ?で良い。
IT界隈ではググれない人は、むしろ能力のない人認定されます。
自己解決能力のない人、自走出来ない人、インターネット・技術に疎い人。

IT界隈では、同じ問題で悩む人が出ないように、そしてスピード感を持って世界を良くしていくために、 以下のようなエンジニア向けの質問掲示板が存在しています。
- Stack Overflow
- Qiita
- teratail


さらに最近では『MENTA』という現役プログラマーに相談できるサービスも出てきています。
※良し悪しは別にして...

現役プログラマーが挫折しない理由は、MENTAで相談することはありませんが、 プロジェクトチームのメンバーや同僚、他チームの技術者に聞いて問題を解決したり、 Qiitaのような質問掲示板を利用したりとインターネット上に存在するありとあらゆる情報を ググることで解決策を見つけることができるからです。言うなれば、これが挫折しない方法の核心です。

初学者や初心者に足りないのは『ググる能力』『相談する相手』『技術や用語に対する知識と経験』です。

  • float、z-indexなど技術や用語を知らない為に、実装出来ない。
  • 「Nullって何?」「handlingError?」の様に、そのエラーが何を意味するのか分からないから、どうすればいいのか分からない。
  • 相談する相手もいない。相談できる場所を知らない。

これ全部、正しいググり方を知ればすべて解決できます
正しいググり方ですら、ググれば知ることが出来ます。
技術力の高い(高く見える)人、スラスラと開発できる人は初心者とは違って、ググり方がとても的確です。
初心者はググり方を知らないから、素早く必要な情報にたどり着けない。
結果、挫折し、途中であきらめてしまう。


おじいちゃん、おばあちゃんたちがインターネットや最新デバイスを知らない、もしくは駆使できずに不便で不効率な作業をしているのと同じです。

次の記事では、プログラミングを勉強している人に知ってほしい『正しいググり方』を紹介したいと思います。
※今回は、長くなるので割愛します。。

初心者から抜け出す方法

最後に、ここまでの内容を一通り網羅した上で、初心者から抜け出す方法を紹介します。


とてもシンプルです。
なるべく自分の興味のある内容をベースに、自分の静的サイト(ホームページ)、動的サイト(ブログやWebサービス)、 自動化プログラム、便利ツールの開発にどんどん挑戦してください。

Yuki

DONE IS BETTER THAN PERFECT!!

「完了は完璧よりも優れている」
※完璧を追及するより、まず終わらせよう。



初心者から抜け出す方法

  • レベルの低いもので良いのから、最小限の制作物を完成させる
  • あったらいいな、実証したいな、実装してて楽しい!と思える機能を羅列する
  • 羅列した機能の実装方法を全て”さらっと”調査して難易度を自分なりに判断する
  • 難易度の低いものから順に1つ選び、とにかくググりながら実装する
  • 実装出来たら次の機能を選んで、また実装を繰り返す


とにかくたくさんコーディングしましょう!!
基礎の学習なんて最初だけで、覚えられたかなんて気にしないで良いです。
なんでもいいのでどんどん開発してしまいましょう!
※Githubアカウントを作って制作物を貯めていくと、就職・採用・応募にもいいと思います。


いつの間にかスラスラとコーディングできるようになっているでしょう。


まとめ

今回はプログラミングの初学者や初心者、途中で挫折した人に向けて記事を書きました。


わたしの伝えたかった点をまとめると、以下の通りです。

伝えたいこと

  • PCは基本的にはWindows、Macどちらでもいいぞ。(注意点あり)
  • プログラマーにはタイプがある。何になりたいかよく考えよ
  • タイプを決めたら、企業採用ページやフリーランスの案件内容、ランサーズ等のお仕事マッチングサイトで、そのタイプでの就職や業務に必要な技術・言語を調査せよ
  • 言語や技術が決まったら、Progate(無料版)で基礎を2周 ⇒ Udemyを受講せよ
    疑問も正回答の理由もすべて気にせず、とにかく進めること
  • ググる能力(自己解決能力)を身につけよ
  • とにかく沢山のものを開発せよ

これで全てです!コツがわかれば必ず成長できます。
メンターが必要でしたら、いつでもYuki(@tech_bibo_log)までDM下さい!!

最後まで読んで頂きありがとうございました!