あどばんてーじ

初見殺し。言語崩壊。空集合。

プログラミングを教えることで見えたプログラミング習得論

今週はプログラミング(主にJavaScriptやWebフロント関連)を教える機会があり、その時に見えたもの

まず教える人に向けて

基本的に相手は初心者なわけだからこれは守ろうね

advantage.hatenadiary.com

初めてのプログラミング

昔から 初めてやるならどの言語? という質問に対して C と返すC言語大好きおじさんがいるけど、それ挫折する人を生み出してるだけだよ????

黒背景に白文字のコンソールで動くアプリケーションを作って楽しいと思う人はごく少数であり、このタイミングで楽しさを見出せないと飽きるか、何かに行き詰った時に挫折してしまう

(実際にこのパターンで挫折した人を見た)

また文字列が無い言語であるので初心者には難易度が高いと思われる

Cじゃなくてもプログラミングは学べるし何か一つの言語を知ればCや他の言語もスムーズに理解できるようになります

ちなみに私はこれを音ゲーと同じだと考えております(一つの音ゲーができれば他の音ゲーもある程度できる点から)

プログラミングを楽しむためには

簡単に言えばCUIは楽しくないのでやはりGUIで動くモノを作ること

しかし一般的なWindows上で動くGUIアプリケーションを開発する難易度は低くなく、初心者にはとっつきにくいところがある

20代はHTML経験のある人が多い世代

現在の20代は中高生の頃、 mobilespace 等のサイトに自分のホームページを持つことが流行った世代なのでHTMLを触ったことがあるという人が多い

そこでHTMLと親和性の高いJavaScriptを利用してプログラミングを学び実際にHTMLと連携して動かすなどするとCUIよりはずっと楽しめると思われる

なおJavaScriptの闇についてはここでは考慮しない(他の各言語にも闇は存在しておりJavaScriptだけに限った話ではない)

HTMLを触ったことが無い人に向けて

全員がHTMLを触ったわけではないと思うのでJavaScript以外の言語にフォーカスして考えると、 HSP が向いているのではないかと思われる

HSPは小中学生が実際にアプリケーションを開発するのに使っていたりする程度には簡単である

またデフォルトがGUIモードで動作するようになっており、いきなりGUIアプリケーションの開発が可能になっている

もっともこの言語は特殊で面倒な仕様がいくつかあり実務で使用できるものではないが、ある程度の知識やアルゴリズム能力を身に着ける場合には十分役立つと思われる

お前らは *(アスタリスク) を並べてピラミッドを作るプログラムを書いて本当に楽しいと思えるのか!?!?!?

プログラミングを学ぶ目的について

プログラミングを学びたいと考える人の中に、目的と手段の違いを理解していない人がいる

プログラミングは問題解決の手段の一つであり目的ではない

何故プログラミングを学ぶのか

  • ゲームを作りたいからC++を学ぶ
  • マインクラフトのMODを作りたいからJavaを学ぶ
  • 自分でWebサービスを作りたいからPHPを学ぶ

これらの例のような理由でプログラミングを学び始める人は比較的スムーズに学習できる

しかし

  • JavaをやりたいからJavaを学ぶ
  • なんかCくらいは知っといた方がいいと聞いて

こういった、プログラミングを習得すること自体を目的としている場合、上手くいってる間は実際に楽しめるかもしれない

しかし、壁にぶつかった時にそのモチベーションが崩れてしまう可能性が高く危険な考えである

この考えに陥りそうになった時はその技術を使って何ができるのかを調べ実現可能な範囲でやってみたいことを見つけることが大事だと思われる

まとめ

プログラミングを学んでみたい

  • HTMLの経験がある → JavaScript
  • HTMLの経験がない → HSP

モチベーションを維持したい

  • 目的と手段の違いを意識する
  • 学んでいる技術で何が実現できるかを調べ実現可能な範囲での目標を設定する

最後に

結局のところ検索能力(ググる力)が一番プログラミングにおいて重要なのでGoogleを使いこなせるようにすれば何とかなるのでググろうね