FizzBuzzって、結局なんなの?
こんにちは!
今日は「FizzBuzz」について書きたいと思います。
「あー、それ知ってる!」という人も、「なんか聞いたことあるけど、よく分かってない」という人も、ぜひちょっとだけ付き合ってください。数分で読めますし、もしかしたら「なるほど」ってなるかもしれません。
「FizzBuzzが書けないとプログラマー失格」は本当?
FizzBuzzって、ざっくり言うとこんなやつです。
|
|
はい、これが有名な「FizzBuzz問題」です。
1から100までの数字を順番に見ていって、
3の倍数なら「Fizz」、5の倍数なら「Buzz」、
両方の倍数なら「FizzBuzz」と表示するという、非常にシンプルなものです。
なのに、なぜか「プログラマーとして最低限の試験」みたいな扱いをされることが多いです。面接でも出されますし、SNSでは「FizzBuzzも書けないやつが…」的なマウントもチラホラ。
でも、ちょっと待ってください。
本当に「FizzBuzzが書けなかった=プログラミングできない」と言い切れるんでしょうか?
できるか、じゃなくて、できる“状態”があるか
たしかにFizzBuzzは、構文の理解や基本的な論理思考が求められます。だから「基礎の確認」に使われることも納得です。
でも、ですよ。
環境が違えば、結果も違います。
たとえば、
- 初対面の面接官の前で緊張しているとき
- 急にホワイトボードを渡されて、手元にエディタがないとき
- 「あれ、moduloって何だっけ?」って急に出てこないとき
…そういうの、ありませんか? 人間ですからね。あると思います。
だから、「FizzBuzzを書けるかどうか」っていうよりも、「FizzBuzzを書ける状態に自分を持っていけるかどうか」のほうが、実は大事なんじゃないかなと思うんです。
よくある「訓練すればOK」というアドバイスの落とし穴
この話になると、「だから毎日練習しろ!」ってアドバイス、出てきがちです。
たしかに、反復練習でスラスラ書けるようになるのは事実ですし、それ自体は良いことです。でも、「FizzBuzzが書けなかったら失格」という前提に立ってしまうと、ただの恐怖に変わってしまうこともあります。
つまり、「ミスした=自分はダメだ」と感じてしまう構造になりがちなんですね。
たとえば、朝寝坊した日って「自分は怠け者だ…」って思いがちじゃないですか? でも、それってたまたま体が疲れてただけかもしれません。
FizzBuzzだって、それと同じです。
とはいえ、FizzBuzzはやっぱり良い問いでもある
とはいえ、FizzBuzzが悪いわけではありません。
むしろ、すごく良くできた問いだと思います。ルールがシンプルで、拡張も簡単。たとえばこんなふうに変えてみると、より思考が深まります。
|
|
これは「if-elif-elseじゃなくても書けるよ」という例です。ちょっとスマートですよね。
つまり、FizzBuzzは「できたかどうか」だけじゃなくて、「どう書くか」や「どこまで理解しているか」を見るための入り口にもなるんです。
というわけで
FizzBuzzができるかどうかに、あまり過剰な意味を持たせすぎないでいいと思います。
書けなかったとしても、それは単に「今ちょっと調子が悪かった」だけかもしれませんし、あとでじっくり考えればできることも多いです。
焦らずに、ゆっくり進めていきましょう。
コードは人間が書くものです。人間だから、忘れることもあるし、緊張することもある。そこを受け入れながら、少しずつ進んでいければ十分だと思っています。
では、今日も気楽に、コード書いていきましょう。