プログラミング初心者50人くらいに教えて気付いた初学者が陥りがちなとこと学習のコツ。

こんにちは、
大阪でフリーランスエンジニア、時には映像制作の事業もやってる向江と言います。
Twitter→https://twitter.com/Mukae9
現在自分は
フリーでWEBサイトやアプリの制作を受付けながら
プログラミングの講師として活動しています。
(2019.10月現在は2つのスクールで教えています。
広告に出てくるような…〇〇…なスクールではございませんのでご安心ください。)
スクールではJavaとPHPを教えてるのですが、
やっぱりどの言語であっても初学者にとってはプログラミングって難しいものみたいで、なかなか上達できない、、、!
個人的な意見ながら、
そんな初学者の方々が少しでも早く「初学者」から抜け出せるように
初学者が躓く5つのポイントを書いてみました。
該当しないと思ったポイントはすっ飛ばしてください。
ポイント
- Point1:丸暗記しようとする。
- Point2:その言語を0から100まで習得しなければならないと思ってる。
- Point3:プロゲートだけで学ぼうとする。
- Point4:他のプログラミング言語を学ぶ事を忌み嫌う。
- Point5:プログラミングで何をしたいか決まってない。
Point1:丸暗記しようとする。
これは先輩エンジニアの多くの方が丸暗記はいらんよ〜〜って言ってますが、それでもまだ多くの方が必死に丸暗記しようとしちゃってます。
自分はよく生徒さんに何回も言いますが、
プログラミング学習は、
「記憶」は不要、「理解」が必要
と思っています。
特に多いのは、
Javaなら
public static void main(String[] args) {}
とかをひたすらノートに書き留めたり、、
こういうのは作っていくうちに勝手に覚えますし、
なんならコピペ推奨です。
学校のテストじゃないんだから、別にpublickとか間違って書いちゃっても
エラーで教えてくれるんでいいんです。
for文も逆にご自身が何回も何回も使い方を書き留めるのを繰り返す方がいらっしゃいますが、
for文は同じ処理を繰り返す時にここがこうなって、ここがカウントアップされて〜〜だから使える!っていう理解が出来ていればいいと思うんです。
実際使う時にはネット検索でもなんでもしてコピペして使えばいいのだから、、、
そして気付けばコピペしなくても書けるようになってると思います。
その記憶する時間を減らして、次のステップ進む時間にした方がいいんじゃないかな〜と思います。(モチベも続くし)
Point2:その言語を0から100まで習得しなければならないと思ってる。
これはかなり多い、、
そしてその言語のあまりの範囲の広さに絶望し、心が折れてる姿を良く見ます。
Javaとかもう全部なんて苦行すぎる、、、!
そしてここにPoint1の丸暗記をしようとする特性も合間って、医学部受験レベルの難易度に自分でしちゃってる人がいます。
暴論かもですが、
0から100の完全習得なんて無理だし無意味じゃないかな、、、。
よく使われる部分や構成を理解して、もし今後業務の中や自分が作りたいサービスの中で自分の知らないことが出てきたらそれを調べる。
そんな感じで業務についてから徐々に+1を積み重ねればいいと思います。
Point3:プロゲートだけで学ぼうとする。
Progateいいですね。とても便利です。忍者わんこが可愛いです。
しかしこれだけでは流石に言語の習得は無理じゃないかなと思っています。
プロゲートは個人的には小学校の時にやってた「計算ドリル」みたいなものだと思っていて、プロゲートだけの学習の人には「教科書」という絶対的に必要な情報源が無い状態です。
そのため、ひたすら問題を解くだけなので、
なぜそうなっているのかの「理解」
ではなく、
こう書けば正解になるという「記憶」
を重視してしまう傾向が強くなってるのかなと思います。
Javaはそもそもなんで動いてるのか?
どういう流れで処理されているのか?
PHPは結局何をやってるの?
HTMLとPHPの違いは?
そこが全然理解出来ていないので、常に頭の中に???を抱えながらひたすら文法の勉強を進めるので理解はかなり遅くなってしまうかと思います。
書籍などを一冊でいいから購入して、その処理の流れや背景を「理解」する事を取り入れてみると格段に学習の進みが早くなると思います。
Point4:他のプログラミング言語を学ぶ事を忌み嫌う。
PHPをだいぶ理解してきた生徒さんに、
「よしじゃあJavascriptも開始しましょうか。」
というと絶望の表情を浮かべます。
(ちなみにwebサービスを自分で全部作れるようになりたい人です。)
心の中ではきっと僕に罵詈雑言を浴びせてるのでしょうが、
多言語を理解することはとっても大事です。
なぜその言語が作られたのか?というのが他の言語を学ぶ事で見えてきますし、あれ?PHPではこれ出来ないの?とか色々気付きがあります。
僕自身も業務で使うのはほとんどPHPですが、
Javaを学んだ事で得られた気付きはかなり大きいです。
初学者の方にとっては
「Javascriptをやりましょうか?」
って僕の言葉は
例えるなら英語を学習している人に
「英語できるようになって来たし、ドイツ語もやりましょうか?😄」
という鬼畜地味た言葉くらいの意味になってると思います。
しかしここは違っていて、すでに多言語を使っている人の感覚としては、
「津軽弁できるようになって来たし、関西弁もやりましょうか?😄」
くらいの差かと思います。(ifとかforとか基本的な考えは同じ!)
一つでいいのでプログラミング言語を習得すると、
もちろん時々鹿児島弁みたいな凄まじく違う言語もありますが、
(あ、自分、鹿児島出身です)
基本は新しく始める言語の理解の速さはその最初の言語の習得の半分、1/4、1/8?くらいじゃないでしょうか。(個人的感想)
何なら息抜きにわざと何種類もの言語を同時並行で学習するのもありですよ!
Point5:プログラミングで何をしたいか決まってない。
かなり多い、、、、!
あんなスマホのアプリを作りたい、こんなWEBサービス作りたいとかが全く決まってない!
これだとモチベーションが枯渇します。。。
そして多分このやりたいことが決まってない状態が、今まで出てきたPointを発生させる要因なのかなとも思っています。
自分の場合は、
イベントの事業をやっているので申込フォーム、マイページ、参加者管理、名簿出力とかやりたいことがガッツリ決まってたので、
独学でPHP とかを学んで1ヶ月後くらいにはすでにそのサイトを公開していました。
もちろん中身はぐっちゃぐちゃで生徒とかに良くないコーディング例として参考にさせるくらいですが、、(笑)
それでも自分と一緒に成長してくれたモチベーションの源みたいな感じで、やりたいことがあったからこそプログラミングも必要な部分だけを手を動かして実装しながら、飽きずに習得できたのかなと思っています。
はい、
以上が自分が生徒さんに教えてる中で感じた
あるあるパターンです。
細いことはまだまだたくさんあるのですが、
徐々に記事にしていけたらなと思います。
ご覧いただきありがとうございました!!
この記事へのコメントはありません。