みんからきりまで

きりみんです。

プログラミング初学者が感じる「センスの壁」はだいたい慣れの問題だと思う

掲示板などで時々「プログラミング覚えたいんだけどどうすればいい?」みたいな相談を見かけます。
すると大抵「数学が得意じゃないと無理」「プログラマはセンス」「これが理解出来なければ向いてない」みたいな事が書かれています。
たしかに言いたい事は分かるけど、ちょっともやもやしてしまいます。



今回はそんなやりとりを見ていつも感じる事を、主にプログラミングを始めたばかりの人に向けて、子供の頃からプログラミングをしていたわけでもなく専門学校でもそんなに成績の良くなかったぼくが偉そうにアドバイスっぽく書いてみます。



プログラミングを習い始めの学生や、未経験歓迎でIT企業に飛び込んだ人など、プログラミング初心者は大抵、簡単なアルゴリズム問題なんかを解かされると思います。
すると最初はちょっとした条件分岐や繰り返しロジックで悩んでしまったり、しょうもない構文ミスのようなバグが何時間も見つからなかったりする事も多いのではないでしょうか。
一方、学校の先生や会社の先輩、それどころか同級生ですら自分が何時間も詰まっていたような問題を、パッと見ただけであっという間に解決してしまったりします。
そんな時「自分はプログラミングのセンスがないのかもしれない・・・」と思うかもしれません。



でも実はその差は、別にセンスとか自頭の良さとかではなく、単純に慣れと経験の差だったりする事がほとんどです。
かなり高度な事をやろうとすれば別かもしれませんが、一般的なコーディングで出てくる処理はほとんどパターンが決まっています。
プログラミング初心者ならじっくり考えてしまうような処理も、何度も何度も同じような処理を書いていると、ほとんど頭を使わなくても経験の引き出しから当てはまるパターンを持ってこれるようになって、流れるようにコードを書けるようになります。
これはデータを順番に処理するようなロジックはもちろん、座標計算のようなちょっと複雑な計算処理ですら同じです。



また、バグの原因を見つけるまでの速度などは更に経験がモノを言います。
バグを一瞬で見つけられる人というのは、以前に同じようなバグを経験し、何時間も悩んだ事があるのかもしれません。
同じようなバグを経験していると、エラーを見ただけで「あ、多分アレかアレが間違ってるんだな」と分かるようになります。



何が言いたいかと言うと、ちょっとロジックを考えるのが他の人より苦手でも、めげずに頑張ってほしいという事です。
まったく未経験の二人が競争すれば、自頭の良さによって大きな差が出るかもしれませんが、経験と知識があればそれよりもっと速くコードが書けるようになるはずです。
もちろん、同じだけ経験があれば数学が得意で頭の回転が速い方が優秀でしょうし、その差は時に残酷かもしれません。
ただ、それは少なくともプログラミングを始めたばっかりの人が悩む事ではないと思います。



それではプログラマに向いてる人はどんな人でしょう。
個人的には、「働き出してからも新しい事を勉強し続けたいと思える人」、そして「プログラミングやIT技術の世界が面白いと思える人」だと思います。
何故なら、世の中には技術力を高めるための勉強をしたり新しい技術を試したりすることに興味がないプログラマが驚くほど多いからです。
本当に驚くほど多いです。



だから、たとえちょっと頭の回転が遅くて初めてのロジックで頭を抱えてしまうとしても、分厚い技術書を読んでもっと良いコードを書けるように試行錯誤したり、話題のツールや技術について自主的に調べて試してみたり、休日でもたくさんコードを書いて何かを作ってみたりする気持ちがあれば、世の中のプログラマの中ではかなり「センスのある方」になれるでしょう。



あと、プログラミングはすらすら出来るようになると一気に楽しくなるよ。