以前、大手某プログラミング教室を運営されている元プログラマーの方にきいたことがあります。「プログラミングに向いている子ってどんな子ですか?」 すると、彼は即座に「リファクタリングできる子ですね」といいました。
Wikiによれば、「リファクタリング」とは、「外部から見たプログラムの動きを変えずに内部構造を整理すること」とのことで、確かにこれができる、できないというのは、プログラミングのセンスという意味で大きな違いがあるのだとは思います。ただこれは、それなりにプログラミングができるようになってからの話で、そのもっとずっとずっと手前なのに、プログラミングに向いてないのかなあ、と感じる子どもがいたりします。そんな気質を僕なりに整理してみます。
1)短気、プログラムが思い通り動かないとキレる
やっぱりいちばんはこれですね。やり始めてすぐに、もう頭の中に「こうしたい」「ああしたい」という思いが先に立ってしまうのかもしれません。その事自体は決して悪いことではありません。でも、いろいろなことがしたいなら、やっぱり地道にいろんなプログラミングのルールも理解しないといけないんです。そこを全部すっ飛ばして、こちらが全く説明していないブロックの絵だけをみて「多分こう動くんだろう」みたいな思い込みだけでそのブロックを使って、わけが解らなくなるんですね。そうしているうちに、一気に熱が冷めて投げ出してしまう。こういうときに、うまく動かない原因を探して地道にデバッグするのがプログラミングなのですが、一度動かないだけでもうキレてしまい、それを修正しようとせずに、放り出してしまうんですね。2時間のイベント中にこうなってしまう人はそんなに多くないんですが、教室に通ってプログラミングをやりだすと、この傾向に陥る子はけっこういるように思います。
2)めんどくさいことを極端にいやがる
プログラミングにおいて、「めんどくさい」ことを避けて極力効率的にプログラムを作ろうとするのは、とても正しい態度です。頭を使って「めんどくさい」機械的な作業とかを一気に効率化できるのは、ある意味プログラミングの醍醐味だとも思います。ところが、それよりはるか手前の段階で、「めんどくせー」といって手を動かすことを嫌がる子がけっこういるんですね。
こういう子は、決して中身を理解していないわけではないケースが多いです。理解力がけっこうあるので、「いちいちプログラムを動かさなくたって、結果はわかってる」ということになるんですね。「動かしてみないとわからないよ」と言って、実際に動作させたら、結局そのプログラムにバグがなく、想定通り動いたので、「ほら、こんなのやんなくたって、わかってんだよ」という態度を露骨にとる子もいます。でも、これがけっこう落とし穴ですね。
世の中テストしないで本番リリースするなんてことは絶対にありません。動かして初めてバグに気づく方が普通です。そういうことを理解して、一つ一つテストする考え方や、いろいろな意味の慎重さをプログラミングで身につけてほしいんですが、自分の能力にある程度自信があったりすると、そういう地道なことを「めんどくせー」で済ませてしまうんですよね。こういう子は、一度ロボコンにでも参加して痛い目を見ると、いろいろ成長してくれるんじゃないかと思ってるんですが。
3)前にやったことをほとんどすべて忘れる
これは、プログラミングに限らず、学校の勉強全般に影響するのではないかと思うのですが、何回やっても、きれいさっぱり忘れてしまう子どもがいます。教室では、「おー、忘れたか。じゃあもう一回やるぞ!」と、何度でも説明します。もちろん毎回同じ課題ばかりではなく少し目先を変えたりするようにはしているのですが、こんなことをしていると、だんだん後から入ってきた他の子に抜かれてしまうのですね。すると、こういう子どもたちは、だいたい、「いいわけ」をはじめて、真面目に取り組まなくなります。
・そんなの学校で習ってない。
→「学校で習ってない」というのは、子どもにとっておそらく一番の免罪符なのだろうと思います。でもこちらは「それがどうした。ここは学校じゃないんだよ」と言って構わずに教えたりするわけです。すると、だいたい次にこう来ます。
・自分は記憶力が悪いからできないのは当然。(中にはストレートに自分は「馬鹿」なんだとアピールしてくる子すらいます)
→学校で習ってなくても、大体の子は説明すればかなり分かってくれます。なので、ここまで言い切る子はそれほど多くないです。でも、これが出てしまうと結構厄介なのですね。なにせ、もはや「自分は努力して理解することを放棄する」に近い宣言なわけなので。
これは、私の勝手な解釈かもしれないのですが、本当はこういう子はそうは言っても、心の中では強い承認欲求があるのだと思います。だから「勉強はダメだけど、俺はサッカーはすげーんだ」とか「ゲームの◯◯で◯◯した」とかなんとか、関係ないことを自慢し始めたりします。特に自慢することがない子は、わけのわからない「粋がり」や「強がり」を言い出す傾向が強いです。
こういう虚勢をはる子というのは、本心では「真面目にやっても出来ない」ということを恥ずかしく感じているのではないかと思うことがあります。そして、その結果裏返しとして、なおさら真面目にやらなくなる傾向があるのです。「真面目にやってないのだから、出来なくても当然」という雰囲気を無意識に作ろうとしているのではないかと思っています。
4)騒いで人の話が頭に入らなくなる
教室に入ってくると、まあどんな子どもでも最初の2〜3回くらいまでは、わりと大人しく人の話もよく聞いて、課題もちゃんと取り組んでくれるものです。ところが回数を重ねると、だんだんと地がでてくるというか、隠せない本性がでてきます。子どもですからね^^;。
困るのはふざけて騒ぐ子どもです。他の子の迷惑になるので、それが困るという面ももちろんあるのですが、それ以上に騒いでハイになってしまうとなんにも頭に入らなくなる子がいるんですね。最初のうちに真面目にやっていたときに、記憶力も理解力も悪くない、と判断していたのに、同じ子が騒ぐと、突然記憶力ゼロ、理解力ゼロみたいになってしまうんですね。
中には騒ぐだけ騒いでも、すっとスイッチが切り替わって集中してプログラムに取り組んだりできる子もいます。ところが、そういう子ばかりではなく、騒いでしまうと、もう頭が沸騰して、集中力が極端に低下するんでしょうね。人の話も何も頭に入ってこない状態になって、何もできなくなってしまうのです。これもプログラミングへの向き不向きというよりは、勉強全般に関わることですが、実際見ていて、この気質さえ落ち着けば、結構伸びるだろうと感じる子は少なくないです。
ということで、今のところ、この4つの気質をすべて併せ持っているというモンスターみたいな子どもはまだ見たことがない(笑)ので、みんな一長一短。そんな子どもたち相手に、どうやったら理解してくれるのか、理解が定着するのか、うまく承認欲求をくすぐるにはどうすればいいか、またプログラミングを切り口に何とか良い習慣が身についてくれないだろうかと日々悶々としているわけなのです。