わすれっぽいきみえ

みらいのじぶんにやさしくしてやる

プログラミングの壁

今日はポエムを書く。

数学の勉強について経験したこと。

一番最初は小学校で算数を習う。足し算、引き算、掛け算、割り算。面積とか体積とか、速さとか。これらはまだ公式に数字を当てはめて解けるレベルで、なんとなく言われた通りにやってたらできる。

次に中学校。ここで数学と呼び方が変わり、ようやく数の学問になっていくんだけど、まだ公式通りに解くレベルから大きくは離れてない。

高校。ここから「こんなのどうやって思いつくんだよ」という解答例が出始める。大学に入る前のことなので問題を解く際にはまだ公式があるにも関わらず、言われただけではなかなか思いつかないような解答例があって、しかも解き方はこれだけじゃないなんて書いてある。その中のどれかが自分に解きやすい方法ならいいが、どれも難しかったりすると結構心折れる。そんな難しい問題も見よう見まねでやっていくと、いつの間にか当たり前のように解けるようになっていたり、なんで昔はこんなことでわからないと唸ってたんだろうかと思うようになっていたりする。

そして大学。大学の数学を習った時、本当に意味がわからなくて結局私は適当にしかやらなかった。単位がもらえればそれでいいやという姿勢だった。今になって、もっと真面目にやってたらなぁと思うことがある。とはいえ、じゃああの当時の自分に「もっと真面目に数学勉強したほうがいいぞ」と忠告したとして、おとなしく言うことを聞いたろうかと考えると、決して言うことを聞かなかったろうなぁと思うから、やっぱりやる気の出るものじゃなかったし、やっときゃよかったと思うなら今やるしかないんだなと思う。

で、プログラミングも大体これと同じルートを辿っていることに昨日ふと気がついた。

小学校・中学校で習う公式からもう一歩進んで「こんなコードどうやったら思いつくんだよ」と思えるものが少しずつ見え始めるのが高校。大学はもう一歩その先にあるイメージ。相当にこなれていかないと一、二回生はまだいいが、三、四回生あたりから苦しくなってくる。

昨日、本当に些細なコードの差分を見て「なんで自分はこんな些細なことに気がつかなかったんだろうか」と思った。自分でもよくわからんけど無駄に時間をかけていて、そんなに悩まなくてもこのくらい簡単にコード書けたんじゃないかと。でもその差分を見て「なんで気がつかなかったのか」と思ったところまでに何故か既視感があって、そうか経験したことがあるからだと気がついた。

私は数学では図形問題が絶望的に苦手で、中学の時なんて相似のテストでわからなすぎて半泣きだったことがある。でも友達に「あれ、めっちゃむずくなかった?」と聞いたら「え、楽勝やったやん」と言われて、マジか、なんだこの差は、と思った。

そこから高校に上がって座標とベクトルを習って図形問題をなんちゃらの定理で解かなくてよくなった時いたく感動した。「やったぜ!計算だけで図形問題が解ける!勝ちましたね!」

しかしよく考えてみたら、あるいは解答例をみたら定理を使って問題を解いたほうが解答が簡潔になる場合が多い。計算で解くと往往にして時間がかかるし書く量が増える。それで時間短縮のためにもう一回図形関連の定理を勉強した。テストの時は時間がかかってもより得意な計算で解いたりベクトルを使ったりしてたけど、慣れてきたタイミングでテストでも使うと効果はまぁまぁあった。具体例が思い出せないけど。

数学の勉強に関して、上に書いたような経験をしたことがある。周りを見ているとぴょんぴょんと軽く問題を解いていく人がいて不思議だなと思うこともあった。ただその不思議だと感じたことも含めて全部、プログラミングとどこか通じるところがある。

だから周りがすごい勢いでコードを書いてても気にすることないし、解けなかったことでえぇーと思い続ける必要もないなと思った。数学の時と同じだから。解答例が他にあることを私が知らないパターンと、他の人のほうがずっと得意なパターンがある。

基本的に私は負けず嫌いだから、自分以外の誰かが簡単にやってのけるのを見ると割と悔しいと思うけども、その気持ちに飲まれると相手のペースに合わせ続けるのと一緒なので、自分にできることとできないことをもう一回振り返ることにしている。そもそも自分にとって得意じゃないものだったら、相手ができたことを悔しく思ってる時間そのものが勿体無い。むしろ他の誰かにやってもらったほうが捗る。やってもらえたら「助かりました。ありがとう」。それでええやん、と。

昨日みた些細なコードと、その時に感じたことと、これまでの経験を重ね合わせると
「私はようやく高校に入学したところらしい。遅くないですかw」
と思った。