
「人はできなかったことを思い出すことはできない」という話
はじめに
※ この記事は、僕個人の経験と学びによる価値観の話であり、その他不特定の人の価値観や考えを指摘するような話ではありません。ご理解いただけrば幸いです。
本題
プログラミングの講師をしているときの話です。新しくプログラミングを始める人の高確率で、初期の1ヶ月くらいで壁に当たることがあります。その時難しくて理解できない、上達できる気がしないと言った悩みを聞くことがあります。
「全然わからなくて伸び悩む」というのは、プログラミングに限った話ではなく、何か新しいことを始める時には多くの人が体験することだと思います。
こうした時に僕は『僕も初めはそうでした。気持ちはすごくわかります。』という言葉を安易に選んでしまうことがありますが、自分で言っていて時々この言葉に疑問を持つことがあります。
それは『本当に僕はこの人の気持ちを分かっているのだろうか?』ということです。
プログラミングを教えているときの話
プログラミングサポートを例に話すと、人によって悩む箇所にはばらつきがありますが、割と変数という機能にピンとこない人は結構います。
sum = 10 + 20 # 10 + 20の結果をsumという変数に格納する
puts sum # sumを出力する
上記は、rubyというプログラム言語の構文で、「sum」という変数に「10 + 20」の結果を代入してそれを出力するものです。
プログラミングを経験した方なら理解できるかと思いますが、変数はプログラムの基礎的な機能でかなり初期の学習から登場します。基礎的な機能であるがゆえにどこまで学習しても変数は出てくるため、ここで理解が止まってしまうと先に飛ばして学習することも難しくなってしまいかなり苦しい時間が訪れてしまします。
こういった場合、どこが理解できないのかヒヤリングして僕なりにあの手この手で説明しますが、完全に理解してもらえないこともあります。
そんな時にふと「あれ?本当に僕はできない人の気持ちを分かっているのか?」と思う時があるのです。
僕はプログラミングを仕事にして10年経ちますが、当然変数を使うことができます。むしろ、最近は仕事をする中で「変数の使い方ってこれであってるんだっけ?」と思考することはおそらくないです。
※ 新しい言語の習得などでは別の話です
ですが、プログラミングを始めた当初は、僕もなんとなく変数とかよくわからなかったという時期があったような気がします。ただしその苦しさを今思い出せるかというとちょっとよくわからないというのが正直なところかもしれません。
つまり、出来なかった時期があるのは何となく覚えているが、何が問題で何に苦しんでいたのかは、全く覚えていないのです。
ボルダリングの話
別の例を出すと、僕はボルダリングを趣味でやっていて、もう6年近くになるのですが、初心者の人と一緒に登ることもたまにあります。
ボルダリングとは、壁につけられたホールドと言われる岩状の突起を使って壁を登るスポーツで、10級 ~ 5段くらいまでのグレード(レベル)に合わせて課題が作られています。(壁を上りきればゴールです)
初心者の人は、当然僕よりも下のグレードで次のホールドが取れないなどの理由で登れないことがあります。その時僕は「このホールドはこの辺が持ちやすいとか、このホールドのこの辺が踏みやすいとか」アドバイスをするのですが、それを聞いてもそもそもホールドのアドバイスの位置を持って立ち上がることもできないということも結構あります。
なぜそんなことになるのかは割と明白で、筋力値や基礎経験値が違うので僕が登りやすいと思っている方法が相手にとって最善とは限らない(その方法を試すだけの筋力や経験がたりない)というのが原因です。
これはプログラミングよりも理解しやすい話です。なぜなら、僕よりももっと登れる人と僕が登る時、同じように僕がその動きを再現できないからです。
ボルダリングの例も根本はプログラミングと同じなのですが、僕も始めた頃は、その人と同じような筋力値や経験値で、同じグレードで苦しんだ経験があったはずです。実際、8級程度(スポーツ経験者なら1日で登れるようになるくらい)の課題を登れるようになるまで2ヶ月くらいかかった記憶はあります。
ですが、筋力値や基礎経験値が違うと分かっていながら「その人がどのくらいの動きならできるのか」が想像できないし、「自分が過去その時にどのように解決したか」も思い出せないのです。
言いたいこと
これらの例から言いたいことは、人はできなかった過去の経験から『共感する』ことできるが、その経験をもとに『アドバイスをする』ことは出来ないのではないかということです。
先生や、コーチとして人にアドバイスするには、自分の経験則とはまた別に定量的な視点で相手のレベルに合わせた教える技術を身につける必要があるのだと思います。
「自分がどうだった」ではなく、「この事象でつまずく人は、この辺の理解が足りない可能性が統計上多い」といった視点を持つことが重要なんだと思います。
自分の過去の経験からの共感も無駄ではないと思いますが、安易に「僕も出来なかったけど、出来るようになったから、きっとできるよ」というのは、あまり多用しないように気をつけたいていきたいです。
このように、まだまだ人に何かを教えるというのは素人に近いので難しさを感じています。しかし自分なりの発見や学びも多いので、これからもプログラミングサポートがもっと上手くなるように努力していきたいと思っています。
以上、読んでいただきありがとうございました。
※ 結論「お前個人の教えるスキルの問題だろ」と思うかたもいるかもしれませんが、そのとおりなのでそれ以上膨らむ話でもありません。