この記事をシェアする

Fizz Buzz 問題 プログラムを書けないプログラマを雇うのは雇う側の問題

プログラマの中途募集をしたら、「PHPできます」という技術者が応募してきて、1週間使って、WEBメールフォーム1つすら仕様通りにできなかったというノンフィクションがあるらしい。

もう、そういうレベルになると、応募する方にも問題あるだろうし、その応募者を採用する人の責任(能力)問題だろう。(そもそも仕様の要件定義がシッカリしてるの?)

採用人事権がある人間は応募者よりも能力がある必要はないが、応募者の能力を判断する能力や経験は必要である。

とか、考えたけど、自分は大丈夫かな。と思ってしまった。

小飼弾「転職活動する暇があったらブログを書け」

「1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリント し、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。」(「どうしてプログラマに・・・プログラムが書けないのか?」)

というプログラムを”自称上級プログラマ”のコンピュータサイエンス学科卒業生の過半数が10-15分かかる。らしい。

現役プログラマじゃないけど、やってみた。

高級言語の経験しかないけど、素直に考えるとこんな感じ?

for i in 1..100
 if i % 3 == 0 && i % 5 == 0
 print "FizzBuzz"
 elsif i % 3 == 0
 print "Fizz"
 elsif i % 5 == 0
 print "Buzz"
 else
 print i 
 end
 print "\n"
end

Rubyの独特の文法を使うとこんな風にも書ける。

Ruby使ったことない人は、文法がなんじゃこれ?って思うんじゃないかな。

(1..100).each do |i|
 result = String.new
 result += "Fizz" if i % 3 == 0 
 result += "Buzz" if i % 5 == 0 
 result = i.to_s  if result == ""
 print result + "\n"
end

何パターンかソースコード書ける。書き方で性格とかでそう。おもろい。

毎日ソースコードを書いていれば、この程度は直ぐに書けて当たり前。おそらく、僕が現役でプログラマだったときは、今の何倍もはやく書けるだろう。

インフラ系技術者(主にサーバエンジニア)採用を年間100人以上面接してきた経験からすると、面接で何も見ないでソース書けといわれて、書けない人は半分以上じゃないだろうか。

採用する方からすると、サーバエンジニアの募集なのだから、WEBサーバやDBサーバは構築した経験があって当然。なおかつ、これぐらいの問題であれば、bashだろうが、Perlだろうが、ちょっと、本なりWebなり他のソースなり見て、5分から15分で書いて欲しい。

どんなにソースコードが汚くても、30分あって動作するソースが1つも書けない人は、違う業界への転職を薦める。

いわゆるIT系のエンジニアと呼ばれている人たちは、SEだろうが、プログラマだろうが、インフラ系だろうが、ネットワークエンジニアだろうが、このFizzBuzz問題を本を1冊だけ見ても良い条件下の元では必ず解けなければならないと思う。だからこそ、この問題を”簡単じゃん”と思ってやらないより、やらなければ、ダメだと思った。

「Rubyプログラマ募集」と書いているのに、応募者が面接でFizzBuzz問題できなかったら、まずいのはいうまでもない。

だが、IT系企業で面接の事前課題としてFizzBuzz問題を出しているのにも関わらず、数パターンの動作するソースコードを面接に持参できない人は、まずいと思う。というか、この条件だと技術者だけじゃなく、営業職も解けなきゃいけないレベルな気がする。

小飼弾さんのように、プログラミングと、通常の文章を書くのに意識的な境がないプログラマはそうはいないだろう。というか、そんな人は職探しすることなく、フリーランスでも食っていけるだろう。

どっかの学校の英語教科の入試じゃないけど、1冊だけ本(辞書代わり)を持込可能で、FizzBuzz問題を面接でやらせるのはいいかも知れないと思った今日この頃。

たのしいRuby 第3版

たのしいRuby 第3版

高橋 征義、後藤 裕蔵、まつもと ゆきひろ

プログラマのためのサバイバルマニュアル

プログラマのためのサバイバルマニュアル

Josh Carter、長尾 高弘

スポンサーリンク

この記事をシェアする

著者をフォローする