未経験プログラマーの雑記

元個別指導塾運営者、現プログラマーによるブログです。教育や自身の学びについて発信していきます。

プログラミング学習はHTMLから始めたらほぼ確実に挫折します

 「この自粛期間を使って、プログラミングを勉強しはじめました!」

Twitterで結構な人がこのように発信され、「どんな言語をやるんだろう?」と他のツイートを見てみると、

 「今日はProgateでHTMLを勉強しました!プログラミング楽しい!」

 

・・・

 

こんな流れ、1名や2名じゃなくて、かなりの人数見てきました。

もしこの記事を読んでいる方で、「Webページなどを作りたいわけではないけど、とりあえずプログラミングの勉強としてHTMLから勉強し始めた(もしくはしようとしている)」方は、一度よく考え直す時間を作って欲しいです。

※決してHTMLを学ぶことが駄目、無駄、と言いたいわけではありません。

 

以下が、僕がHTMLから学ぶことをオススメしない理由です。

 

□そもそもプログラミング言語ではない

まず、HTMLやCSSは、プログラミング言語ではありません。

Progateなどのプログラミング学習サイトで学習出来るので勘違いされている方が多いですが、マークアップ言語という全くの別物です。(CSSはHTMLに装飾を加えるための言語)

例えばjavaPythonRubyなどの言語は、使う単語こそ違うものの、変数や型、条件分岐、繰り返し処理、関数など、プログラミングで必ず必要となる概念が共通しています。

「プログラミングを学び始めるとき、特に言語は気にしなくて良い」

という文言を見たことがあるかもしれませんが、「理解しておくべき概念が同じだから」です。

ですが、マークアップ言語と呼ばれるHTMLや、それを装飾するCSSには、プログラミングに必要な概念(変数など)を何も含んでいません。

そのため、「プログラミング」を学びたい人がHTMLから学習を開始しても、HTMLしか出来るようになりません。(特段プログラミング言語を理解するための助けにもなりません)

 

□やっとHTMLを学び終えた後にJavaScriptPHPに手を出して絶望する

HTMLから「プログラミング」を学び始めた人は、「ある程度プログラミングの知識が付いた」と思っています。

しかし、繰り返しますがHTMLはプログラミング言語ではありません。

HTMLを学び終えた人は、Webページでアニメーションなどを作るために使用されるJavaScriptや、Webアプリケーションを作るために使われるPHPを学び始める方が多いです。

これらの言語はプログラミング言語なので、HTMLで学んできたことが一切活用出来ず、また新たにイチから学習していくことになります。

これの問題点は、「プログラミング言語は似ている部分が多いって聞いたのにまだ覚えることがあるのか・・・」「HTMLやCSSと全然違う・・・」と大きく落胆してしまうことです。

HTMLとCSSでさえ、書き方には違いがあり、それぞれ覚えることがあります。その上さらに、3つ目の言語もこれまで学んだものと全く違うとなれば、「いつになればプログラミングの基礎が終わるのか」という考え方になると思います。

 

また、HTMLやCSSは実際に書いてみることで、自分がこれまで見てきたようなWebページを真似して作ることが出来ますが、JavaScriptPHPの基礎を学んだだけでは

「で、これで実際何が出来るの?」

と何度も頭によぎるはずです。さらに、HTMLやCSSで覚えたことも頭に留めながら、プログラミングに必要な概念も新しく理解し、記憶しようとすると、これまで覚えてきたことも記憶に残っているか不安になり、途中でHTMLやCSSの復習を始めてみたり、JavaScriptの学習をストップして模写を始めてみたりと、徐々に迷走し始めると思います。

 

迷走した結果、特に独学の場合は最初のやる気を保てなくなり、挫折していきます。

こうならないためにも、次のことを意識しておく必要があります。

 

  1. HTML/CSSプログラミング言語は別物である
  2. どの言語も、全部覚えよう・理解しようとしなくて良い
  3. すぐに活用出来そうなことから試してみる

 

まず、HTML、CSSを学んだ時点で「プログラミングの知識を多少持っている」と思うから、本当にプログラミング言語を学び始めたときに苦しい思いをするのだと思います。まずはHTMLやCSSプログラミング言語とは別物として、しっかり意識しておきましょう。もし「プログラミングを学びたい」のであれば、HTML、CSSから学ぶことは絶対におすすめしません。

 

次に、何を学ぶときもそうですが、「最初から完璧な記憶や理解が必要なこと」は存在しません。特にプログラミングについて言えば、正しくないコードになっていれば何かしらのエラーが出るか、期待していない結果になるので、そこで「何でだろう?」「そういえばこれってなんとなく使ってるけど、どういう意味だろう」と、もう一度しっかり調べてみれば良いのです。

学校の勉強だって、大半の人は最初から完璧に理解してテストに挑むのではなく、最初は正解率50%ほど、何度も繰り返し練習問題を解くことで正解率が上がるものの、それでもテストで100%には及ばない、そういう経験をしてきたのでは無いでしょうか。

だったらプログラミングもそれで良いと思いませんか?そして、間違ったらなぜかを調べて、もう一度挑戦する、いわゆるトライアンドエラーを繰り返せばいつか正解になりますよね。

 

最後に、「すぐに活用出来そうなことから試してみる」ですが、プログラミングで挫折してしまうケースで考えられるのが、「プログラミングを学ぶことによるリターンを得るまでに時間が掛かりすぎる(結果、モチベーションを維持できなくなる)」「どんなものをまず実現したいか決めていない(結果、途中で何をすれば良いかわからなくなる)」というものだと思います。

僕の場合、「こういうものを作りたい」という目標があったわけではありませんが、「自分の仕事を自動化したい」という考えから、VBAを勉強し始めました。(プログラミングをやったことがない、塾会社の社員時代のことです)

VBAとはEXCELなどを操作出来るプログラミング言語です。EXCELが入っているパソコンさえあればすぐに始められるので、プログラミング言語特有の環境構築というハードルもなく、とっかかりやすい言語と言われています。(当初はそこまで考えていませんでしたが)

 

塾社員時代もほんの少しの業務を自動化し、それ自体に大きな達成感を感じられ、プログラマーになってからもEXCELを使用する業務の多くを自動化し、その度に自己満足に浸ることで、「プログラミングを学んだことによるリターン」をこまめに得られたことが、今でもプログラミングを学んでいる原動力になっています。

 

今ではクラウドソーシング経由で案件を受注し、ただの自己満足ではなくお金という利益も得られるようになりました。

月々の金額としてはお小遣い程度ですが、受注した仕事を完遂し、先方から感謝されることも、またプログラミングを学ぼうというモチベーションになっています。

 

特に社会人の方は、日々の業務が忙しく、中でもEXCELを使った同じような作業に時間をかけてしまっている、という方も多いのではないでしょうか。

そういった方は、まずVBAを学び、自分でマクロを作成して、自分の業務を1秒でも短縮する経験をしておくと、その後のプログラミング学習の大きなモチベーションになると思います。VBAにももちろん変数や関数、条件分岐などのプログラミング言語共通の概念が存在し、活用出来るので、VBAを学んだ後にJavaScriptPHPなどを学ぶと、かなりあっさり基礎を理解出来るようになります。

業務でEXCELではなくGoogleスプレッドシートを使っている、という方はGASというプログラミング言語をオススメします。こちらもVBA同様作業の自動化が出来ます。

 

最後に

繰り返しになりますが、HTMLやCSSプログラミング言語ではなく、学んだとしてもプログラミング言語を習得する手助けになるようなものでもありません。

 

また、「こんなWebページを作りたい」というものが無いのであれば、HTMLを学習しても学習したリターンを得るまでに時間が掛かりすぎてしまい、挫折する可能性が高くなります。まずは「今の仕事でも活用出来そうなもの」から作り始めましょう。VBAやGASがオススメです。最初は1秒しか短縮出来ないなど簡単なものしか作れないと思いますが、それを繰り返すことで10秒、1分、30分と、より多くの業務を自動化する力が身に付いていきます。

もし自分自身の「プログラミングの向き不向き」を確かめたい場合も、VBA、GASから実践してみることをオススメします。

 

偉そうにここまで語ってきましたが、僕自身もまだプログラミング学習経験1年3ヶ月ほどと、まだまだ初心者です。ただ、プログラマーとして働くことが出来ていて、副業で個人としてもプログラミングに関わることが出来、Webアプリ開発の勉強にも前向きに取り組んでいるので、「その程度のやる気を継続出来ている一例」として、参考にしていただければ幸いです。

 

この記事以外にも、僕のプログラミングの学習方法のまとめや、未経験からプログラマーに転職した転職活動のまとめなどもありますので、興味のある方はそちらも読んで参考にしていただければ幸いです。

 

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

Twitterもやっておりますので、もし直接何か質問したい場合などはそちらでどうぞお願いします。

https://twitter.com/natsumemix2525