すべてのプログラマーは将来、面接という何かを経験する必要があります。面接中は非常にリラックスしていたか、あるいは非常に不快だったのかもしれません。優れた面接官は非常に重要だと思います。その面接官がどのように面接を行ったかについて話しましょう。
従来の面接採用プロセスの場合、基本的には次のようになります:
応募者の履歴書を読み、応募者に自己紹介を依頼します。
難しくて非常に詳細な技術的な質問を一問一答形式で質問してください。
面接官にいくつかのプログラミング パズルを与えます。 (変なアルゴリズムの質問など)
個人的にはこの面接方法、特に最後の2点はばかげていてひどいと思います。一般的に、この種の面接では一部の「オタク」または「技術にこだわる人」しか面接できません。これらの欠点を 1 つずつ分析してみましょう。
履歴書や自己紹介からその人を知るのは難しいです。なぜなら、これらはすべて当事者自身によって書かれたり、練り上げられたりするからです。したがって、これはあまり正確ではありません。履歴書を通じてわかることは非常に簡単なことだけであり、グループに採用されるかどうかを判断するのに十分ではありません。面接の初めに候補者に自己紹介を求めると、面接官は面接全体に非常に形式的な態度で臨むことになります。面接プロセスが非常に形式的で真剣なものになると、人々は拘束されたように感じてしまいます。実際、私たちが望んでいるのは候補者の真実で自然なパフォーマンスであり、最も現実的なものを理解してもらうことなのです。
技術的な詳細についていくつか質問してください。例: 私が個人的に経験したこと - 「ps の -a パラメーターは何を意味するのか?」、「vi で改行を削除するコマンドは何ですか?」、「C++ キーワードの explict および mutable は何に使用されますか?」など。 、等。かつての求職者として、私はこのような質問が大嫌いでした。なぜなら、そのような質問はマニュアルを確認するだけで済むからです。彼は辞書とマニュアルを探していますか?一人じゃない?このために重要なのは知識ではなく、それを見つける能力です。
候補者に 10 分以上にわたってアルゴリズムの難しい質問を 1 つまたはいくつか与え、面接官に疑似コードまたはコードを書き留めるように依頼します。このやり方は非常にばかばかしいもので、議論も情報確認も行われず、実際の仕事とはまったく異なります。私の経験では、2ページに渡って書かれたコードを提出した後、面接官がそれを隣のプログラマーに渡して検証のためにコンピューターに出力したところ、プログラマーはコンパイルエラーがあると言いました。インタビュアーは「とても良いです。残念ながら、あなたはまだあまりプログラムを書いていないのかもしれません」と言いました。これはまったくばかげています)。この点において重要なのは、問題の答えではなく、問題を解決するための考え方や方法です。
私はこれまでに何度も面接を経験しましたが、技術者が面接に来たとき、人によっては「技術者の考え方」が面接と試験を無意識のうちに区別できていないことがよくあります。むしろ、その人にとって物事を困難にして、自分のスキルを証明することです。私は個人的には自分が優れたプログラマーであると思っていますが、そのような面接は合格できなかったと言えます。面接は候補者のためのものではなく、自分のためのものだからです。
それで、どうやって面接を受けたのですか?
1.履歴書を確認します。まずは他人の履歴書を読む必要があり、その履歴書から職歴、プロジェクト経験、技術スキルの3つを理解する必要があります。一般的には、電話で職歴やプロジェクト経験、技術力などを確認し、求める人材の条件にマッチする場合は電話で直接面談することになります。決して他の人を呼んで、あなたの経験と私たちの仕事の間にギャップがあるなどと言わないでください。 (私も面接経験があります。会社の話はしません。とにかくコミュニケーションが必要と謳っている会社です。普通のプログラマーからPM、マネージャー、部長、部長まで9回ほど面接を受けました)最後に直接面接を受けたときのことです。教えてください、私のこれまでの経験と彼らの要件の間には大きなギャップがあります。以前の面接では何をしていたのかと思わずにはいられません。)
2. 面接の冒頭。 。次に、面接に人を会社に招くとき、候補者が面接に来社するときに非常に重要なことの 1 つが、面接プロセス全体を、通常の雑談や友人間の通常のコミュニケーションと同じように、非常にカジュアルでリラックスしたものにしなければなりません。 。この方法でのみ、候補者はリラックスして素の姿を見せてあなたと話したり雑談したりすることができ、あなたは短期間でより多くのことを学ぶことができます。採用担当者の責任は、候補者に心理的な負担を軽減させ、自然に行動してもらうことです。他の人が緊張しすぎて良いパフォーマンスができないなどとは決して言わないでください。採用担当者は、自分自身の問題について考えなければならない場合があります。
面接の初めに、応募者に自己紹介を決してさせないでください。応募者はすでにあなたに履歴書を送っており、あなたも彼に電話をかけているからです。さらに、候補者は通常、この面接ルーチンに対して十分に準備を整えていますが、その一方で、面接プロセス全体が形式的かつ真剣になりすぎる可能性があります。それで、申請者にどうやってここに来たのか聞いてみてはどうでしょうか?調子はどう?また、候補者が好きなスポーツ、音楽、映画、社会で話題の話題など、一般的なトピックについて候補者と話すこともできます。真顔でいるのではなく、ただ話して笑って、全員をリラックスさせるように努めてください。また、ちょっとした会話を通じて、その人の対人能力や性格の一端を知ることができます。また、テーブルをあなたと候補者から遠ざけ、カジュアルな環境を保ちます。
3. 候補者に自分の経験について話してもらいます。次に、この候補者が問題を解決して物事をやり遂げることができる人物であると感じたい場合は、彼/彼女に何をするかを聞く必要はなく、彼/彼女が何を持っているかを直接尋ねてください。終わり?あなたは何をしましたか?優れたプログラマーにとって、たとえ大学に通っていたとしても、何かをしておくべきだということは考えられません。あなたに問題を解決する能力があるなら、当然、今日たくさんの問題を解決し、多くのことを達成しているはずです。それらについての応募者の話を聞いてください。 (質疑応答のアプローチは使用しないでください。応募者にもっと話して、もっと聞いて、もっと考えてもらいましょう)
応募者が自分のプロジェクトについて話すときは、一般的に次の点に注意する必要があります:
コミュニケーションそして表現力。申請者は何かを明確に説明できますか?この人が賢ければ、複雑な事柄を最も簡単な言葉で明確に説明することができます。さらに、これは優れたプログラマーの最も基本的な能力です。さらに、応募者が自分の経験を説明している間、何度かやり取りをすることで、応募者のコミュニケーションスキルやコミュニケーション方法を知り、その人柄を理解することができます。
キャラクターと場所。おそらく彼は大きなプロジェクトに関わっていましたが、非常に単純なモジュールを作成しただけだったのでしょう。したがって、プロジェクトにおける彼らの役割と立場を理解することが非常に必要です。応募者が「私たち」や「皆さん」などの言葉を使用する場合は、詳細かつ明確にする必要があります。
どのような貢献が行われ、どのような問題が解決されたか。これを理解することで、面接官が頭が良く、問題を解決する能力があり、優れた技術的基盤を持っているかどうかを知ることができます。
デモ。可能であれば、候補者に自分が書いたコードやデザインを見せてもらったり、自分が書いたプログラムのデモンストレーションを直接見せたりすることができます。 (デザイン、コードスタイル、再利用性、保守性について多くを学ぶことができます)
基礎知識。プロジェクトで候補者が使用するテクノロジーに関する基本的な知識を理解します。たとえば、プロセス全体を通じて、ネットワーク、言語、オブジェクト、システムに関するいくつかの基本的な知識について尋ねることができます。基礎知識は非常に重要であり、それは彼の能力に直接関係します。
プロセスとツール。候補者が精通しているプロジェクト プロセス (特効薬、ウォーターフォール、アジャイルなど) とプロセス内の成果物 (要件文書、設計文書、テスト文書など) を理解する。開発プロセスで使用されるツール ツール (メモリテスト、コード検査、バグレポート、バージョンメンテナンス、開発およびデバッグ...) (プログラマの基本スキルについては、「プログラマが身につけるべき基本スキル」を参照してください)
候補者の経験は自分で作り上げることができ、自分がしなかったことをいくつかやったと言えると言う人もいます。はい、それは確かに可能です。ただし、嘘の背後には、その嘘を隠すためにさらに嘘を重ねる必要があることを忘れないでください。そのため、申請者の説明中に質問を徐々に洗練させていく限り、この問題について心配する必要はありません。申請者が私が作り話をしているかどうかはわかります。
次の点を必ず覚えておいてください:
会話スタイルは堅苦しくなく、カジュアルで自然なものである必要があります。
候補者が以前に何をしたかを知ることにあまり関与しないでください。採用担当者も技術者であるため、候補者が取り組んでいるプロジェクトの魅力的なテクノロジーに採用担当者自身が惹かれる場合もあります。
候補者の指導に注意してください。信じてください、その仕事に応募するプログラマーの 10 人中 8 人は、以前に何をしていたのかわかりません。プロジェクトの背景やどのような問題を解決したいのかをすっ飛ばして、具体的な実装に直接入ってしまうからです。
単に質問して答えるだけでなく、応募者にもっと話してもらい、その人のことをより包括的に知ることができます。
その人の過去とその人が何をしたかを理解することは、その人がこれから何をするかよりも重要です。
人の性格、考え、考え方、行動を理解することは、その人の技術的スキルを理解することよりも重要です。
コミュニケーションスキル、表現スキル、言語構成スキル、理解スキルなどは、他の人と一緒に仕事ができるかどうかに関係します。
基本的な知識は、断片的な知識よりもはるかに重要です。 C++ のキーワードは知らないかもしれませんが、C++ の継承とポリモーフィズムについては知っておく必要があります。
技術的なスキルは確かに重要ですが、それよりも重要なのは、コンピューターのような急速に変化する業界では、知識を習得する能力です。
習得したスキルよりも、それを培えるかどうかが重要です。
4. 実際に参加しますか? ?このステップは実装が難しい場合があります。ある程度の期間を費やす必要がある応募者がいるため、まず一定期間インターンをさせても問題ありません。でも、他の人が仕事を持っているのは良くありません。おそらく、これが試用期間の目的だと言うかもしれません。ただ、原則として問題がなければ、3ヶ月の試用期間中に応募者が退職してあなたのところに出勤してきた場合、採用担当者としては後悔することになると個人的には思います。それは、非常に悪いです。もしそのようなことが発覚した場合、それは採用担当者の責任としか言いようがありません。
面接プロセス中、一部の採用担当者は候補者に、一緒にゲームをしたり、ディベート大会を開催したり、簡単な作業をするために現場でチームを結成したりするよう求めます。また、候補者に自分で仕事をするために一日休むよう求める人もいます。会社に来てチームと 1 日仕事をし、何かを完了する必要があり (期限も設定されます)、これを使用して応募者の実際の参加能力を測定します。
はい、一緒に仕事をしたことがなく、実際に何かが起こった場合、数時間のインタビューで相手を理解するのは困難です。採用担当者がこれらの面接リンクを設定し、候補者に関するすべてを最短時間で把握したいのは理解できます。そして時には良い結果が得られることもあります。ここで 1 点だけ述べておきますが、このようなサイクルは非常に長く、候補者に多額の支払いを要求するため、ある意味、これは候補者にとって非常に有害です。 。
私はこれについてずっと疑問に思っていたので、後ろに疑問符を2つ付けました。正直に言うと、実際にこのリンクに参加してみての個人的な意見としては、時間が短すぎるし、どうやっても完全に理解することはできないので、もう十分だということです。すべてを理解することはできないので、最も必要なもの、つまりこの記事の冒頭にある 3 つの質問と、上記の「3 番目のポイント」(候補者の過去の経験を理解する)を理解してください。
上記の面接プロセスと概要を通じて、あなた自身の経験を準備するだけでなく、面接官の心を理解することもできれば幸いです。しかし、あなたがどのような種類のプログラマーであっても、面接官があなたと「人生について話す」ことができるように、優れたスキルを持ち、本当に成長できる必要があります。
関連する推奨事項: