ジョエル・テストは(もはや若干)時代遅れ―今ならこう質問しよう

ジョエル・テストとは、面接時に求人応募者が面接官に聞くものとして広く受け入れられている「12個の役立つ質問」のことです。このテストはJoel Spolsky氏が考案しました。彼のブログは開発者の間では有名で、この12の質問も広く知られていました。そして、スタック・オーバーフロー(創設者の1人がJoel Spolsky氏)によって、さらに普及することになります。スタック・オーバーフローの求人ページでは、求人を出す側の企業向けにこの質問を使ったチェックリストが用意されています。以下がそのジョエル・テストです。

  • ソース管理の仕組みを導入していますか?
  • 1ステップでビルドを行えますか?
  • ビルドは毎日実行していますか?
  • バグデータベースを持っていますか?
  • 新しいコードを書くまえにバグを修正していますか?
  • 最新スケジュールを常に社内で共有していますか?
  • 仕様書を持っていますか?
  • プログラマは静かな作業環境にありますか?
  • 予算の範囲で一番良い開発ツールを使っていますか?
  • テストの担当者はいますか?
  • プログラマの採用面接でコードを書かせますか?
  • 「ホールウェイ・テスト」を行っていますか?

このリストは、長い間多くの人の役に立ってきました。そして、ある程度はソフトウェア業界に貢献をしてきたと私は思います。開発者がこれらの質問の答えで企業を比べるので、企業側は才能ある人材に興味を持ってもらおうと、仕事をする環境や、仕事のプロセスを良くしようするのです(このリストが誕生する前から、いい環境を作っている企業はもちろんありましたが、全く気にかけない企業があったのも事実です)。

しかし、10年が経って、この質問リストは若干、時代遅れとなってきました。「イエス」か「ノー」で答えられる質問形式なので、単純すぎるのです。求人広告で企業を比較する時のチェックリストとして使うのはいいと思いますが、面接中に質問をするならもっといいものがあるはずです。改善するためにはいくつか修正する必要があります。では、どの質問をすべきで、どれがすべきではないのかをチェックしながら、修正すべき点を見ていきましょう。

修正が不要な質問

  • 1ステップでビルドを行えますか?
  • バグデータベースを持っていますか?
  • プログラマは静かな作業環境にありますか?
  • 予算の範囲で一番良い開発ツールを使っていますか?
  • テストの担当者はいますか?
  • 「ホールウェイ・テスト」を行っていますか?

時代遅れな感じがする質問

  • ソース管理の仕組みを導入していますか?

10年前なら、この質問は意味があったと思います。現在では、ソースファイルのバージョン管理をしていない会社なんて、もはやあり得ないでしょう。だから、どうしても必要な質問だとは言えません。会社が求人広告を出した時点で、その広告の中で応募者に説明してもおかしくないほど基本的な情報だからです。ただし、面接までにどういうわけか説明がなかった場合なら、ソースファイルのバージョン管理の仕組みは、どのようなものを使っていますか? のように尋ねてみてもいいでしょう。GitかMercurialという回答であれば、文句なしです。Team Foundation ServerかSVNでも、まあまあ安心です。CVSという回答なら、その会社はあまり好ましいとは言えません。SourceSafe、またはそれと同様の、2000.年以前からある製品を使い続けていると言われたら、その会社からは即刻退散しましょう。

  • ビルドは毎日実行していますか?

ビルド作業のコストがかさみ、完了までに何時間もかかった時代なら、これは意味のある質問でした。今は状況が全く変わってしまい、チェックインするたびにビルドが実行されます。優れたビルドシステムとはゲートとして作用すべきで、ソリューションをコンパイルし、テストを実行し、必要以上のチェックも実行し、新しいものをコミットしたとしても、そのことによって別の何かが壊れたりしないシステムを指します。ビルドは、ゲートチェックイン方式に従って実行していますか? と質問しましょう。ゲートチェックインと毎日のビルドを併用しているという回答だった場合は、言うまでもなく良い会社の兆候です。

リストに追加するべき質問

  • 開発者はテストを書くことを要求されますか?

昨今のソフトウェア開発企業で、テスト工程を設定しない会社があるとすれば論外です。全てがテスト可能な作業環境が理想的です。現実は必ずしも理想どおりにはなりませんが、書いたコードに対しては、どこかの時点でテストを実行するべきです。ちなみに筆者の勤務先では、可能な限りのテストを実行します。単体テスト、JavaScriptでの単体テスト、PowerShell環境での単体テスト、統合テスト、互換性テスト、自動化テスト、そしてもちろん手動でのテストも実行します。これだけ実行してもバグが残っている場合はありますが、当社では新しいバージョンをリリースした直後に「しまった、ヤバい」などと大騒ぎになることは、ほとんどありません。あなたを雇う可能性がある会社が、テストを書く作業に対して、時間を割くに値しないと考えているとすれば、仮にその会社に入社したとすると、悔しさに歯噛みして髪をかきむしりながら残業する日々を重ねることになるかもしれません。気を付けてください。

  • 御社では開発者の幸福度指数を考慮して、その確保のために何か対策を取っておられますか?

開発者もやはり人間です。開発者はコードを書いたりバグを解決したりするのが大好きなので、ほとんどの場合、こうした作業に携われることが幸せです。とはいっても、会社の規約、意思決定、何らかの変化に影響される存在であることも確かです。しかし多くの企業で、特にソフトウェア事業が主流ではない会社では、開発者は二級市民として扱われ、会社全体の意思決定に際しては無視される場合も珍しくありません。断言してもいいのですが、そんな企業に入社すると、次第に働く意欲が薄れてきます。あなたを社員として尊重する会社、あなたの意見に耳を傾ける会社に行きたくなるものです。

あなたがこの質問をしたときに面接官が驚くようであれば、その会社では開発者の意見が尊重されていないことの表れかもしれません。気を付けてください。