『どうしてプログラムが書けないのか』に出てくる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だ。
というのは思ってしまった。技術の盗み方のエントリー書いていたにも関わらず。
これは見下すとまではいかなくても、自分に優位性を感じた時点で、技術を持たない人を軽視しているのだと思った。
これでも「同じ失敗はしないようにしたい」と一応心掛けている。
それでもこの有様。やれやれだ。
努力というのがいろいろと話題になっているが、努力しなくては。
勝手に添削 - 技術の盗み方
盗みたいと思わせるほどの達人たちは、実は盗み上手でもあるのだ。あなたが1盗む間に、彼らは10盗む。そしてその10を気前よく盗ませておいて、盗んだものからさらに盗む。
blogで書かれたことの九割九分九厘九毛は、別の誰かがどこかですでに書いた事であり、そこにある「発明」の九割九分九厘九毛は車輪の再発明。元々誰かから盗んだものだ。気前よく盗んでいただこうではないか。すると「泥棒」は面白いことに、あなたの持っていないものを落として行ってくれる。それを手に入れたら、つかさず「ご自由にお持ちください」と置いておく。以下、これの繰り返し。
こうやって引用して、僕も簡単にだが盗んでみる。
人のエントリーを読んで、引用して、コメントしているだけ。
元のエントリーを読んでいる人は、またか、と思うだけかもしれない。
こんな風に引用したエントリーを書いて、なんになるのだろう、と思うかもしれない。
でもこうやって、引用してエントリーを書くと、読むだけよりも、もうちょっとだけ理解できて、内容が頭に残る気がする。
読んでるだけだとすぐに忘れしまうけど、こうやって文章を書くと、もうちょっと記憶に残る気がする。
文章よりも、コードのほうがその傾向が高いと思う。
サンプルコードを眺めていると、なんとなくわかった気になる。でも少し経ってから自分で書こうとすると、全然書けなかったりする。
# 自分で考えたコードも3日経てば他人のコードだけど・・・。
やっぱり自分の手と頭を使っていかなくては。