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

今更ながらFizz-Buzz問題ネタ.

参考
http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm

私のささやかな経験から言わせてもらうと、伝統的に大学のコンピュータサイエンスのカリキュラムで教えられているもので、多くの人がうまく理解できないものが2つあった: ポインタと再帰だ。
(中略)
高校ではApple IIのBASICでpongゲームをうまく作れていた子供たちが、大学に入ってデータ構造の授業のCompSci 101を取り、話がポインタのことになると彼らの脳みそは吹き飛んでしまう。そしてこれはロースクールに進むほうが良さそうだと思って政治科学専攻に切り替えるのだ。コンピュータサイエンス学科のドロップアウト率の数字をいろいろ見たが、それは通常40%から70%の間だ。大学はこれを損失だと考えているようだが、私はこのふるい分けを不可欠なものだと思っている。彼らがプログラミングのキャリアで成功したり幸福になることはないだろうからだ。
(中略)
ポインタと再帰には、ある種の推論力、抽象的思考力、そして何よりも問題を同時に複数の抽象レベルで見るという能力が要求される。そしてポインタと再帰を理解できる能力は、優れたプログラマになるための能力と直接的に相関している。[Javaスクールの危険]

ポインタも再帰もそれほど難しいだろうか.いずれも基本中の基本だし,理解するのにさほど手間取った覚えもない.だからこれらが理解できることが,プログラマーの「才能」とか「素質」と呼ぶのに抵抗がある.

http://d.hatena.ne.jp/yotaropg/20070509/1178712140

応募全体で見ればそんな感じでしょう。自分の経験を振り返っても納得。入社まで辿り着いたとしても、その中でプログラムを書ける人が10%程度なのは神に誓って真実。

http://d.hatena.ne.jp/minekoa/20070519/1179551123

さて、査定面接がてらにちょっといたずら心を出して、入社3年目の子に Fizz-Buzz問題を出したら―――20分まっても出来ないでやんの orz

Fizz-Buzz問題はやりたくない問題の一つだな.あまりにも簡単な問題だから「出来て当たり前」で、「万が一間違えると恥ずかしい」から.それが20分たっても出来ないということは,これはやはり根本的な素質の違いということなのだろうか.

http://d.hatena.ne.jp/kagamihoge/20070525/1180094454

プログラミングが出来ない人はホントに最初の段階から出来ない。

例えば、

int a = 10;

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

.....これは小学生でも理解できるもんだと思っていたのだが.

しかし最大の問題は、FizzBuzz問題すら解けない人が プログラマとして大きく低く評価されることもなく現場で仕事をしているという、よくある現実の方でしょうか。

同感.

小学生以下の能力しかない人がシニアプログラマーを名乗ったり,プロマネやらアーキテクトの肩書きをぶら下げてプロジェクトを引っかき回しているのが普通なんだろうな.

http://d.hatena.ne.jp/kagamihoge/20070527/1180248712

追加

で、これは俺の暴論なんだが C,D,E の人たちは潜在的に int a = 10 が分からないのとほとんど同じなんじゃないか?と。int a = 10 を変数という概念で見れていなくて、単なる構文として暗記してるだけでは?と思う。ポインタと再帰ぐらい複雑なものになると暗記でなんとかなるような代物でもないし、なんとかしていいものでもない。

B と C の開きでいちばん大きいのは、抽象的なモノの考え方*1コンピュータ的な物の考え方というか、問題を分割したり、単純化したり、段階化したりといった、物の考え方そのものが理解できない。

B と C の間にはマリアナ海溝並に深い隔たりがあるわけで。これはもう住んでる世界どころか次元が違うとしか言いようがない。なので、ポインタと再帰が理解できる人たちにとっては理解できないことが理解できない。

たしかにその通り.こんな単純明快なことが理解できないと言われても,想像できない.理解できる側からするとあまりに当たり前のことなので,これを「才能」と呼ぶのさえおこがましいと思う.


その「はてなブックマーク」より.

この理論でいくと、プログラマーの適性がない人はHTMLすら理解できない事になりますね。

一体どういう理屈だろう.HTMLを使う上では抽象的な思考は皆無だぞ?

余談

http://slashdot.jp/it/comments.pl?sid=362696&cid=1162883

  • 組み込みにはまだまだ現役なのにね。
  • これがまた困ったことに、ちゃんとしたCのコードを書けない人が多いんだ・・・
  • C で Hello World を書いたこともなければ、テキストエディタも使えない人を現場に寄越されたときに辞める決心がつきましたよ。そういう采配する人たちとはとてもじゃないが仕事はできない。

これは,人事部の無責任さによるものなのかな.それとも,こういう人でもなんとかなると,本気で思っているんだろうか.

*1:そういえばモデラーには「抽象化」という単語を振りかざす奴らが多いが,そういう奴に限って抽象的なモノの考え方というのが身に付いてない場合が多いのはどういうわけだ?