最近、プログラミングを教えて欲しいと言われました。
正直、自分はまだ他人に教えてあげるほどの実力も知識もないので、教えるなんておこがましいと思いました。しかし、その人が他に頼れる人がいなさそうということと、教えるということは自身の理解力もなくてはできないため、自身のスキルアップにもつながるかもしれないということで、一応その責務を負うことにしました。
今回、プログラミングを教えるにいたり、思ったこと感じたことをまとめてみたいと思います。
最初に書いておきますが、筆者はプログラミング能力はあまり高くなく雑魚キャラです。
偉そうなことを書いていますが、少なくともボクはそう思ったということですのでお許しください。なにかコメントがあれば残していただけるとありがたいです。
よろしくお願い致します。
プログラマーの種類
これまでプログラミングをする人に何人も出会いお話してきましたが、個人的には2つの種族が存在するような気がしています。1つ目が「クリエイタータイプ」
2つ目が「真理追求タイプ」
1つ目の「クリエイタータイプ」はプログラミングをしたいわけではなく、作りたいものがプログラミングする必要があるからしているだけで、しなくていいならしない。そんな人達。
2つ目の「心理追求タイプ」はシステムの仕組みとかシステムの構築とか、そもそも言語の仕組みが好きだとか、なにかを作るためのツールとしてプログラミングを行うのではなく、もうなんていうかプログラミングそのものが好き!って感じの人間。
たいてい世の中から理解されずとりあえず無茶苦茶すごいんだろうけどよくわかんない「やべー奴」って認識されるのは後者で、前者は万人から「すごい人」って認識されるような気がします。
これは後者はある程度勉強しないとわからないものを作っているからで、いうなれば数学者的な感じで、前者はだれにでも”わかりやすい”という部分でそう認識されるんだと思います。
で、です。
僕は圧倒的に前者タイプです。
正直プログラミングしなくていいならしたくないです。
絵書いてそれが思い通りに動いてくれたらなんとうれしいことか。
だから、書いたコードはめちゃくちゃだし、とりあえず思った通りに動けばいいやという感じなので、JSのコードでとある部分はノーマルで書いてるのに、突然jQueryがでてきたり、そんなコードを書いています。
そんなこともあって、なおさら教えるということに後ろめたい気持ちがあります。
ボクのプログラミング学習の歴史
プログラミングと出会ったのは小学生のころだったような気がします。
HTML,CSSがプログラミングかという話題は置いといて、小学生のときに図書館でHTMLの本を借りてきて、簡単なページを作った記憶があります。
ボクの父はかなり先進的な人間で、エンジニアではありませんでしたが当時からパソコンを書い、自身のホームページを持つような人です。父から直接そのような指導を受けた記憶はありませんでしたが、そういう環境にはいました。
中学生になりiPod touchをお年玉で買って、脱獄して中の階層を行ったりきたりしてシステムの画像を入れ替えて遊んだり、とかまぁプログラミングはしていませんでしたが、コンピュータを使っていろんなことをしていた記憶があります。
高校生ではもっぱら手芸と動画投稿に明け暮れており、プログラミングのプの字もなく。
プログラミングをしっかりと勉強し始めたのは大学生になってからでした。
入学と同時にゲームを作るサークルに入り、そこでC言語を教えてもらいました。
まぁ結局ポインターとかはまだ曖昧なんですが…笑一応ここでプログラミングのいろはを習得したという感じですね。
そこからはもうテキトー。
これ作りてー!ってなったらとりあえずググってググって完成させるの繰り返し。
どうしてもわからなかったらいろんな人に聞いて助けてもらっての繰り返し。
そんなこんなでここまできました。
Progateというゲーム
Progateというプログラミング学習支援サービスがあります。ボクはこれを結構やりこんでいて、2019/02/15現在147レベルあります。
途中から勉強というよりはレベリングをして遊んでいただけのような気がしますが、とにかくProgateは結構やりました。
最近このProgateで遊んでいて、1つ思ったことがありました。
Progateが本当に初心者に最適なサイトなのか?という疑問です。
Progateのいいところはブラウザのみでいろいろな言語の仕組みを実際にコードを書いてプロダクトを作る感じで学習して行けるところだとボクは思います。ゲーム感覚でステージをクリアすることで達成感も得られますし、レベルが上がるというところも学習意欲に繋がります。
学習をゲーム感覚にするという点ではかなり優れているように思います。
でも、スキルの習得という面で考えるとProgateだけでは難しく、一度しっかりとプログラミング言語について学ぶ必要があるんじゃないかと思いました。
プログラミングで一番大切なのって思考じゃん?
Python、JavaScript、PHP、Javaなど、いろいろな言語を使ってアプリとかツールを作ったことがありますが、少なくとも基本は一緒です。
for文、if文、などなど、どの言語にもあります。
書き方が違うだけで、文法はほぼ一緒だし、1つの言語である程度なんか作ったことがあれば、他言語でもなんとなく作ることができます。
(おそらくこれはボクがまだそのステージまでしか到達していないというのもあるとは思う)
つまり、Progateでいくら複数の言語をやっても意味ないんですよ。
結局プログラミングって作業手順書を制作ですから、プログラミングどうこうよりも、制作物をどのように作っていくか、どう動かすかという部分のほうが大事だと思うんです。
ゲーム感覚でPythonのステージをやっても、その言語のその仕組がなんのために存在しどう使えるかを考えることには繋がりません。
このステージをクリアするにはどうすればいいのか考えて、とりあえう穴埋めしてステージクリアやったーで終わりです。
プログラミングに慣れ親しむという点では良いと思うのですが、一番大切な考える力にはつながらないように思います。
考える力をつけるにはどうするべきなのだろうか
今プログラミングを教えている人は全くの初学者で、プログラミングのプの字もわからない人です。とりあえずYさんとします。てかYさんです。
当時(といっても1,2週間前)のボクは、とりあえずお題となるコードを渡して、それを改造してもらうことでなんとなくプログラミングについて理解してくれるだろうから、そこまでいけばあとはググっていろいろ作れるようになるだろう。
そう思っていました。
しかし、現実はそうはうまくいかず。
ボクが渡したコード内ではいろいろな面白い改造を施して面白いものを作ってくれるのですが、こんなものを作って!とイラストを書いて渡すと作れないなんてことが多々ありました。ボクの渡したコードの範囲内では自分でググってある程度は解決できているのに、なんでできないんだろう…と思いました当時。
で、気が付きました。
そもそもプログラミングするときの思考スタイルを持っていないんじゃないかって。
Yさんはとても優秀なのでボクの渡したコードもなんとなく理解して読み取れてしまっただけで、なんでそのプログラムがそのコードをあのように組み上げているのかみたいなのはわかっていなかったんだと思います。たぶん普通の人に今回と同じことをやったらポカーンとしそう。
「なぜその選択をしたのか」、「なぜその流れにしたのか」、この部分が一番重要なのに、その部分なしで改造していたんじゃないかなと思います。
Progateはやってたみたいなのですが、0から作るというのにはまだ足りなかったようです。
ボクは最初C言語オタクからプログラミングとはなんぞやということを教わりましたが、YさんはProgateでゲームをしただけで、プログラミングとはなんぞやということを学んでいません。
だから0から作ってと言われると何から始めたらいいかわからないし、どうググったらいいのかもわからなかったんじゃないかなと思います。
Progateをやる前にプログラミングについて学べ
というわけで、結論としてはProgateでゲームをやる前にプログラミングそのものについて一度しっかりと学習するべきだということを言いたいと思います。
おそらくプログラミングを始めるときに、とりあえずこの言語というものがあると思います。とりあえずその界隈で一番有名な教本を買ってきて、しっかり学ぶ。
なぜこの文法があるのか。
なぜこんな書き方をするのか。
こういう部分をしっかり理解する。
その上でProgateでプログラミングゲームをすることでプログラミングそのものに慣れる。
この流れが一番良いような気がします。
最後にもう一度書いておきますが、筆者はプログラミング能力はあまり高くなく雑魚キャラです。
偉そうなことを書いていますが、少なくともボクはそう思ったということですのでお許しください。なにかコメントがあれば残していただけるとありがたいです。
これからプログラミングをやろうと思っている人の参考になれば幸いです。
ここまで読んでくださりありがとうございました。
参考までに、この本結構初心者向けでいいかもと思いました。
たまたまキンドル版半額で売っていたので購入してみたのですが、良さげでしたよ。
Amazon:入門JavaScript フロントエンドエンジニアになるための基本と実践スキル
偉そうなことを書いていますが、少なくともボクはそう思ったということですのでお許しください。なにかコメントがあれば残していただけるとありがたいです。
これからプログラミングをやろうと思っている人の参考になれば幸いです。
ここまで読んでくださりありがとうございました。
参考までに、この本結構初心者向けでいいかもと思いました。
たまたまキンドル版半額で売っていたので購入してみたのですが、良さげでしたよ。
Amazon:入門JavaScript フロントエンドエンジニアになるための基本と実践スキル
0 件のコメント :
コメントを投稿