10年泥論争とはあまり関係ないけど、ソフトウェア企業の人事担当者の方に読んでほしい本

最近翻訳された、(Joel on Softwareという本で有名な)Joel Spolsky氏の「ソフトウェア開発者採用ガイド」という本が面白かったので忘れないうちに印象的だった部分を引用しておきます。
個人的に、この本がJoel on Softwareほど話題になってないのが不思議でなりません。Joel on Softwareの内容を実践するにしても、一緒に実践することになる同僚はその企業で行われている採用プロセスを通過してきたわけですから、そういう入口の部分が上手くいってないと、その後のプロセスで何をやっても上手くいかない気がします。新しいコードを書く前に、バグを直す必要があります(と、ソフトウェア開発者採用ガイドのp156で語られています)。

最初にやってみたのは、12個の課題のそれぞれに費やされた時間の、平均、最小、最大、標準偏差を求めるということだ。結果は次のようになった。
(表省略)
これを見て最初に目につくのは、ばらつきの大きさだ。一番早い学生は平均的な学生よりも3倍から4倍早く、一番遅い学生と比べると10倍も早い。

ソフトウェア開発者採用ガイド p.p.6-7

これは私個人の学部時代のプログラミング演習の講義を思い出しても割と納得できる結果だと思います。しかし、できる人とできない人の差がここまで広がる学科もなかなか無いと思うのですが、どうなんでしょう。ところで、コーディング面接すらやらずにこのあたりの差を峻別できるものなのでしょうか。不思議でなりません。そんなに時間がかかる採用プロセスをとっている暇はない、というご意見もごもっともだと思うのですが、そこで節約できた志願者1人あたり数時間のしわ寄せがどこかに行ってないか、少し考えてみてほしいのです。

何かの理由で、多くの人はポインタを理解するための脳のある部分を持たずに生まれてきているように見える。

ソフトウェア開発者採用ガイド p108

とまで言われています。教育するにしてもセンスがない人というのはどうしても存在しますし、結果として

それは良い候補者を落とすほうが、まずい候補者を採用するよりもずっとましだからだ。まずい候補者にはたくさんの金と労力がかかり、彼らのバグを直すためにほかの人の時間が奪われることになる。間違って採用した人を解雇するのには何カ月もかかり、それは悪夢のように難しいかもしれない。

ソフトウェア開発者採用ガイド p94

という結末が待っているからです。実はプログラマというのは建築家や音楽家と同じように、本来もって生まれた素養や幼少期の経験の有無によって、結果が大きく左右される職業のひとつのような気がしています。ただ、今の時代はたまたま需要が大きいこともあり、そういうことになってしまうと色々まずいため、社会全体が気付かないふりをしているのではないでしょうか。少なくとも上記の職業のように、向いてない人に対してプロとしての道をあきらめて別の道を選ばせるような風土がない気がします。そうすると、越えられない才能の差を努力で埋めようとして、自分のキャパシティを超えて無理をする人が出てくる。
ところで、

(おあいにくさま!CS 323の課題は私が1980年代に取ったときと変わっていない)

ソフトウェア開発者採用ガイド p9

ここで言われている課題とはイェール大学のCSの講義で実際に出題されているもので、内容は(段階を踏んだ)UNIXシェルの実装や圧縮アルゴリズムの実装です。重要なものは何十年経っても変わらないんですかね。ちなみに東大にも似たような演習がありますね。こういうのが大学が教えるべき内容なのだろうな、と思います。

芸術における高音域が、ソフトウェアでも問題になるのだろうか?「場合によってはそうなのかもしれないが、私はただ医療廃棄物業界向け会計システムのユーザインタフェースを作っているにすぎない」。それは結構。ここで議論しているのはソフトウェア製品を作る会社の話であって、そこでは製品のクオリティが直接、会社の成功・失敗に結び付くのだ。ソフトウェアを社内業務のサポートに使うだけなら、十分なものでさえあればいい。

ソフトウェア開発者採用ガイド p11

多くの新卒がこういった会社のポジションを勘違いしていたために、いろんな会社と新入社員との間に大量のミスマッチが発生している気がします。

2003年のことだが、NullsoftがWinampの新版をリリースしたとき、彼らはWebサイトで次のような告知をしていた。

  • おしゃれな新しいルックス!
  • いかした新機能!
  • たいがいの部分はちゃんと動く! (強調はid:y_yanbeによる)

最後のやつ――たいがいの部分はちゃんと動く!――にはみんな笑った。そしてうれしくなり、みんなWinampに夢中になり、それを使い、友達にも教え、Winampってすごいと思ったのだ。それというのも、連中が「たいがいの部分はちゃんと動く!」とWebサイトに書いたからだ。こういうのって、クールだと思わない?

ソフトウェア開発者採用ガイド p12

たいがいの部分はちゃんと動く!、というある種の開き直りが笑えるのは、Twitterはてなのように、たまに批判されつつも愛されてるという、不思議なポジションを築いているサービスにも共通する部分だと思います。チャレンジングなサービスやソフトウェアであれば、多少ちゃんと動かない部分があっても(アーリーアダプタな)ユーザはついてくる、ということですかね。
上で紹介したような「医療廃棄物業界向け会計システムのユーザインタフェース」みたいなソフトウェアだと、こうはいかない気がします。すべての部分がちゃんと動くと期待されてるし、動かないと責任問題になるし、最悪の場合は誰かがクビになったりする。この辺はどちらが正しいという問題ではなく、ポジションの問題だと思います。(私には上手く説明できません)

まだまだ面白かった部分があるのですが、全部紹介してたらきりがないのでこのぐらいで。後で追記・改訂するかもしれません。書評って難しい。。(書評といえるか微妙な出来ですが)
あと、この本は米国のソフトウェア企業における雇用環境が背景なのですが、この本にあるような採用方法をとっているソフトウェア企業がもし日本に存在するとしたら教えてほしいです。とくに、この本を読んでなお(こんなのあたりまえじゃないか)という感想をが出るような企業でしたらぜひ。