プログラマーの力量を見極める--面接官になったら尋ねるべき質問実例集

文:Justin James(TechRepublic) 翻訳校正:村上雅章・野崎裕子 2010年03月02日 07時00分

  • このエントリーをはてなブックマークに追加

 ソフトウェア開発者を採用する面接の場においては、応募者の専門家としての力量を見極めることが最も困難な作業の1つである。彼らの考え方については、面接時に少しやり取りを行えばそれなりに見当が付くだろう。しかし、実際のプログラミング経験を推し量るのは至難の業だ。一部の企業では、さまざまなテストを実施することでこれを行おうとするものの、筆者の経験から言えば、こういったテストは近代的な開発環境では必要性が薄い知識(IDEのオートコンプリート機能や、F1キーの押下で表示されるヘルプ、インターネットといったものがあるため、ライブラリの知識は以前ほど重要ではなくなっている)の丸暗記能力を試すだけに終わることも多い。そこで本記事では、開発者を評価するうえでの優れた質問を紹介するとともに、なぜそれらが優れているのかを説明している。あなたが技術的な質問に対する返答を判定する自信がないというのであれば、上級開発者にも同席してもらえばよい。本記事で紹介している質問は汎用性のあるものとなっているため、あなたのプロジェクトに関する特定の質問を行うに先立って候補者を絞り込むために使用できるはずだ。

コンピュータ科学に関する基礎的な質問

 筆者は長い間、「プログラマー」を名乗る人であれば誰でも、コンピュータ科学に関する一定レベルの基礎知識を有しているものだと思っていた。しかし、そんなことはまったくない(!)ということが分かった。開発者であれば必ずコンピュータ科学の学位を持っているわけではないものの、開発者は皆、一定レベルの基礎的な知識を有していて然るべきである。こういった知識は日々のプログラミングで必ず必要となるわけではないものの、開発者であれば理解しておかなければいけないはずである。基礎的な知識の有無を判定する質問の例として、以下のようなものを挙げることができる。

  • 「等値」と「等価」の違いを説明してください(この質問はTechRepublicのTony Patton氏に教えてもらったものである)。
  • 「値渡し」と「参照渡し」の違いは何ですか?オブジェクト指向システムや手続き型システムにおいて、これらにはどのような違いが存在するのかを説明してください。
  • 「ポリモーフィズム」とは何かを説明してください。
  • 「悲観的ロック」と「楽観的ロック」を比較し、違いを明確に述べてください。

 これらの質問のうち、最初の2つに答えられない応募者は、どう考えても「入門者レベル」ということになる。また残り2つの質問は、「中級」開発者であれば答えられるはずである。

思考問題

 MicrosoftやGoogleといった企業が採用面接において応募者の問題解決能力を推し量るために行っている難しいテストがよく話題に上る。こういったテストはよく考えられており、有用であるものの、ほとんどのマネージャーや企業にとって、応募者にパズルを解かせる丸1日がかりのテストに時間を割く余裕などないというのが実情だろう。しかし、応募者がいかにうまく問題に立ち向かい、解決策を相手に伝えることができるのかを知っておくことは重要だ。筆者の経験から言うと、この種の質問の中で最も優れているのは「鶏の問題」である。筆者は約3年前の採用面接でこの質問を耳にした際、素晴らしい質問だと感心したものだ。具体的には、応募者に対して「自分の好きなようにできるとすれば、どのような鶏をデザインしますか?そしてその理由は何ですか?」と質問するわけである。この質問には「正しい答え」も「間違った答え」も存在しないものの、問題へのアプローチ方法を心得ている応募者であれば、詳しく回答できるはずである。また、応募者の中には「哲学者ぶって」(あるいはさらに悪い場合には非協力的な態度を示して)、「そもそも、鶏をデザインする必要が本当にあるのですか?」といった質問を返してくる者もいるだろう。こういった回答によって、仕事に対する彼らの姿勢をうかがい知ることもできるはずである。この質問は、上級開発者やソフトウェアアーキテクトの職を求めている人々に特に適している。もちろん、質問は鶏である必要はない。どのような動物でもよいし、何らかの機械であっても構わない。

ZDNet Japan 記事を毎朝メールでまとめ読み(登録無料)

  • このエントリーをはてなブックマークに追加

この記事を読んだ方に

SpecialPR

連載

CIO
トランザクションの今昔物語
研究現場から見たAI
Fintechの正体
米ZDNet編集長Larryの独り言
大木豊成「仕事で使うアップルのトリセツ」
山本雅史「ハードから読み解くITトレンド放談」
田中克己「2020年のIT企業」
松岡功「一言もの申す」
松岡功「今週の明言」
内山悟志「IT部門はどこに向かうのか」
林 雅之「デジタル未来からの手紙」
谷川耕一「エンプラITならこれは知っとけ」
大河原克行「エンプラ徒然」
内製化とユーザー体験の関係
「プロジェクトマネジメント」の解き方
ITは「ひみつ道具」の夢を見る
セキュリティ
「企業セキュリティの歩き方」
「サイバーセキュリティ未来考」
「ネットワークセキュリティの要諦」
「セキュリティの論点」
スペシャル
課題解決のためのUI/UX
誰もが開発者になる時代 ~業務システム開発の現場を行く~
「Windows 10」法人導入の手引き
ソフトウェア開発パラダイムの進化
エンタープライズトレンド
10の事情
座談会@ZDNet
Dr.津田のクラウドトップガン対談
展望2017
Gartner Symposium
IBM World of Watson
de:code
Sapphire Now
VMworld
Microsoft WPC
Microsoft Connect()
HPE Discover
Oracle OpenWorld
Dell EMC World
AWS re:Invent
AWS Summit
PTC LiveWorx
より賢く活用するためのOSS最新動向
古賀政純「Dockerがもたらすビジネス変革」
中国ビジネス四方山話
ベトナムでビジネス
米株式動向
日本株展望
企業決算