『どうしてプログラムが書けないのか』に出てくる200人中1人理論は、実によく出来た中毒性のある文章だ。
元ネタは「どうしてプログラマに・・・プログラムが書けないのか?」だ。
レジナルド・ブレイスウェイトが書いていることを読んだとき、私はそんなわけないだろうと思っていた。
私と同様、この著者は、プログラミングの仕事への応募者200人中199人はコードがまったく書けないということで苦労している。繰り返すが、彼らはどんなコードも書けないのだ。
彼が引用している著者というのはイムランのことで、彼は単純なプログラムも書けないプログラマをたくさん追い払っているということだ。
かなりの試行錯誤の末に、コードを書こうともがいている人たちというのは、単に大きな問題に対して苦労しているのではないことがわかった。やや小さな問題(連結リストを実装するというような)に対して苦労するということでさえない。彼らはまったくちっぽけな問題に苦労しているのだ。
それで、そういった類の開発者を見分けるための質問を作り始め、私が「Fizz-Buzz問題」と呼んでいる問題のクラスを考え出した。これはイギリスの学校の子供たちがよくやっている遊び(というかやらされている遊び)にちなんで名付けた。Fizz-Buzz問題の例はこんな感じだ。
1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
ちゃんとしたプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。怖い事実を聞きたい? コンピュータサイエンス学科卒業生の過半数にはそれができないのだ。自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。
会社のお昼休みにJavaでがりっと書いてみた。
public class FizzBuzz { public static void main(String args[]){ String x3 = "Fizz"; String x5 = "Buzz"; for(int i=1; i<=100; i++){ if(i%3 == 0 && i%5 == 0){ System.out.println(x3 + x5); }else if(i%5 == 0){ System.out.println(x5); }else if(i%3 == 0){ System.out.println(x3); }else{ System.out.println(i); } } } }
PerlやRubyだとワンライナーでできるらしい。
はてなブックマーク > どうしてプログラマに・・・プログラムが書けないのか?
そして帰ってきてから以下のエントリーを見つけた。
アイデアノート 『どうしてプログラムが書けないのか』に出てくる200人中1人理論は、実によく出来た中毒性のある文章だ。
私がこの記事をみて率直に思った事はこうです。
・それでプログラマーを名乗るなんてどうかしている。
・くだらない記事だなぁ。
・自分は199/200のうちの1だ。実に酷い思考が走っていた。
プログラムを書ける自分に満足するだけではなく、書けない人をなんとなく見下すような考えまで抱いてしまった。
この記事は恐ろしい表現をしている、と、その時に記事の見方が全く変わりました。
この記事に隠された蜜は、200人中1人が自分だという安堵感が与えられる一種の麻薬のような効果がある。
そしてこの記事の麻薬部分である、自分は出来る1人だという気持ちを相手に与え、人を引き付けるという文章に、新しい感動を覚えました。
・それでプログラマーを名乗るなんてどうかしている。
・自分は199/200のうちの1だ。
というのは思ってしまった。技術の盗み方のエントリー書いていたにも関わらず。
これは見下すとまではいかなくても、自分に優位性を感じた時点で、技術を持たない人を軽視しているのだと思った。
これでも「同じ失敗はしないようにしたい」と一応心掛けている。
それでもこの有様。やれやれだ。
努力というのがいろいろと話題になっているが、努力しなくては。