わたしはプログラムについてはブログで語れるほどの知識がありません。
誰かに教わった経験がなく、すべて必要なときに必要なだけ知識を得てきたので、知識が体系的ではないからです。
しかし、逆にそれで良かったなと思うことがあります。
学生時代に「授業として」プログラムを習い、それを職業にすると、一部に不幸な人が生まれますが、少なくと私の場合はそうではなかったので。
(わたしは文系の学部を出ていますし、プログラムは自分のやりたいことを表現する一手段でしかないと思っているので、そうなることはなかったとは思いますが)
プログラマーという職業は不思議なもので「プログラムが書けなくても」その職に就けることもあるようです。
FizzBuzz問題という有名な問題があります。
これはイギリスの学校の子供たちがよくやっている遊び(というかやらされている遊び)にちなんで名付けた。Fizz-Buzz問題の例はこんな感じだ。普通はすぐにロジックが思い浮かぶ内容です。
1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
どうしてプログラマに・・・プログラムが書けないのか?
(プログラムを始めて1週間の人でも解けるような内容です。必要なのは剰余の演算子と基礎的な制御構文のふたつだけですから。JavaScriptによる簡単な実装例)
しかし
ちゃんとしたプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。怖い事実を聞きたい? コンピュータサイエンス学科卒業生の過半数にはそれができないのだ。自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。と続くのです。
この有名なFizzBuzzを、社内の社員に実施したという方がいます。
FizzBuzz問題を使って社内プログラミングコンテストを開催してみた - ITは芸術だ
上述のFizzBuzzと違い多少付加的な要素がありますが。
10人中2人は問題を解けなかったようです。
この記事は多くの反響を呼び、Twitter等で話題となったのですが、わたしが気になるのは次のtweetです。
前職で採用やってるときFizzBuzz出したけど大手出身者はほとんど解けなくて驚愕した。ベンチャー出の人は大体解けてた。
いろんな感想があると思いますが、わたしはこれがすべてを表しているような気がします。
プログラムはパズルを解くようなもので、自分の頭で考えて、それをコードに具現化していく作業だと思います。
自分の頭で考えられない人のみが、FizzBuzzのような簡単なプログラムを書くことができないのです。
では自分の頭で考えられない人とはどのような人か
- 大学で嫌々プログラムを習った人
- 業務を細分化し、自分の頭で考える人と、コードを書くだけの人を分けている組織の人
前者については言及しません。もとよりプログラマーにならない方が良いのは明らかですので。
では、後者の問題。
上述のtweetの「大手出身者」というのは、このことを指していると思います。
ソフトウェアを開発する会社というのは数多あるのですが、なかには、この手の会社が多く存在する業種があります。
そのような業種の企業を出身の方を雇う時は、念のため足切りとして、FizzBuzzのようなチェックをやっておく必要はあるかもしれません。
自分の頭で考えられない社員というのは、プログラマーに限らず、あまり活躍の場が多くありません。
しっかり見極めないと採用のミスマッチとなり、会社にとっても本人にとっても不幸です。
そして、自分の会社が「そのような社員を生みだしていないか」を常にチェックするべきです。