kagamihogeの日記

kagamihogeの日記です。

プログラマーになれる人なれない人

http://anond.hatelabo.jp/20070523230747

どういう理屈なのかはわからないけど、プログラミングを出来るようになれる人とマッタク出来ない人はハッキリと分かれてしまう。

俺がコンピュータサイエンス学科に居た頃と Teaching Assistant として一年生の面倒見てた経験から言うと、プログラミングが出来ない人はホントに最初の段階から出来ない。

例えば、

int a = 10;

というのを習うと 50 人中 4,5 人は脱落する。変数という概念がどうしても腹の中におちていかないらしい。

あと今でも強烈に覚えてるのは、

int main(int argc, const char **argv) {
if (a == 10) {
}

「カッコは対応させないとダメだよ」と手を変え品を変え何回も何回も教えてもマッタク理解出来ない人とかもいた。

プログラミングのキモチというか、コンピュータ的な物の考え方というか、そういうのに馴染めない人はプログラミングが出来るようになれない。やる気も熱意も根性もあっても出来ない人はまったく出来るようにならなかった*1

どういう「見えざる力」が働いてるのかよくわかんないけど、プログラミングに向いてる人と向いてない人が居る、ってのは俺の意見。

まー 1 年間寝てるときも起きてるときもプログラミングのことばかり考え続けてもなお進歩が無いと感じられたら諦め時、かなぁ?出来ない人は出来ないけど、ちょっとやそっとで身に付けられるほど甘いもんじゃないです、プログラミングは。

ところでJavaスクールの危険では下記のような記述がある。

私のささやかな経験から言わせてもらうと、伝統的に大学のコンピュータサイエンスのカリキュラムで教えられているもので、多くの人がうまく理解できないものが2つあった: ポインタと再帰だ。
(中略)
話がポインタのことになると彼らの脳みそは吹き飛んでしまう。(中略)コンピュータサイエンス学科のドロップアウト率の数字をいろいろ見たが、それは通常40%から70%の間だ。

ものすごく大雑把に言うと 4 割から 7 割の人はプログラマーに向いてない、ということになる。ポインタと再帰はかなりの難関だけど、それ以前の段階でつまづいている人がかなりいるのでは、と俺は思う。ポインタと再帰までは騙し騙しでやれてるだけなんじゃないかなぁ?

なんかプログラミングが出来ない人を人格攻撃してるみたいだけど、そんなつもりは決してない。そういう人たちはプログラミングに向いてないだけで、何か別の分野でなら才能を出せるんだと思う。

大学はこれを損失だと考えているようだが、私はこのふるい分けを不可欠なものだと思っている。彼らがプログラミングのキャリアで成功したり幸福になることはないだろうからだ。

と Joel Spolsky も言っている。どんな道へいくべきなのか?それが料理なのか F1 ドライバーなのか弁護士なのかは自分で探すしかないけどね。

*1:まぁ俺の教え方も稚拙だったろうけど・・・