エリート少数を求めて–業界で最高のソフトウェア開発者を見つけて採用する
公開: 2022-03-11挑戦
ソフトウェア開発の才能、つまり真の才能を採用することは、ソーシャルネットワーキング、技術的洞察力、プロセス管理、および直感の岐路に立つ多面的なスキルです。 採用の責任を負ったことのある人なら誰でも、採用の課題の範囲と深さを十分に理解しています。
特に難しいのは、優れたソフトウェアエンジニアリング候補の特徴的な品質を評価するのが非常に難しいという事実です。 革新し、創造的に考える候補者の能力をどのように探求しますか? 彼がチームプレーヤーであるかどうかをどのように判断しますか? 建設的なフィードバックを受け取る彼女の能力をどのように診断しますか? 誰かの道徳的繊維をどのように調査しますか?
これらの「ソフト」基準を評価することは簡単な作業ではありませんが、最高の人材を採用するためには、評価することが不可欠です。 しかし、多くの場合、これらの重要でありながらとらえどころのない属性を評価する試みは、ほとんどの候補者が「正しい」答えを明らかにするために十分に透過的な質問または課題で構成されます。 したがって、彼らに尋ねることによって実質的なことは何も達成されません。
結果として生じる一般的な落とし穴は、問題を解決し、創造的に考え、チームの他のメンバーと互換性を持って作業する候補者の能力を評価するのではなく、技術的な細部に重点を置きすぎることです。
確かに、高度なソフトウェア開発者の効果的な面接と採用は、科学であると同時に芸術でもあります。 それにもかかわらず、ソフトウェアエンジニアのスキルと能力のより微妙な側面を評価するためのアプローチと方法論は存在します。
これらの採用手法をまとめて使用すると、有給またはフリーランスのプログラミング人材の採用で成功した確かな実績を持つ非常に効果的なスクリーニングプロセスが得られます。 そのプロセスがこの投稿のすべてです。
はじめに:パイプラインを最高のもので満たす
少数のエリートを見つけて採用するプロセスは、面接自体のずっと前に始まります。 実際、資格のある候補者を適切に特定するための体系的なアプローチにより、採用プロセス全体の効率を大幅に向上させることができます。
質の高い人々は質の高い人々と結びつく傾向があるため、間違いなく、資格のある候補者の唯一の最良の情報源はパーソナルネットワーキングです。 個人的な紹介は、成功した新入社員の最も生産的な情報源として支配的です(情報源)。
一流の技術的才能の他の貴重な情報源は次のとおりです。
- ブログとオンライン技術投稿。 開発者のブログは、有力な候補者の優れた情報源になる可能性があります。 技術的な投稿は、開発者の技術的な洞察力、問題解決へのアプローチ、および執筆スキルに関する貴重な洞察を提供することがよくあります。これらはすべて、作物の候補を特定するための重要な基準です。
- オープンソースコードの寄稿者。 GitHubやSourceForgeなどのサイトでオープンソースプロジェクトを熟読すると、非常に有能な候補者を生み出すことができます。 このアプローチの追加の利点は、連絡を取ることを決定する前に、候補者のコードサンプルを確認して評価できることです。
- 会議。 会議の講演者や関連する技術会議の共同参加者は、資格のある候補者に貴重なリソースを提供することがよくあります。 参加できない場合は、オンラインプログラムを確認し、プレゼンターに連絡することを検討してください。 あなたはたまたま「適切なタイミングで」彼らに連絡するかもしれませんし、あるいは彼らはあなたを非常に有能な他の誰かに紹介することができるかもしれません。
これらのリソースの利点は、面接する前に、何らかの方法で精査したエンジニアリング候補者を提供することです。 あなたの会社の誰か、またはあなたが知っている誰かが彼らを知っていて、彼らを強く推薦します。 または、彼らのオープンソースコードをレビューして、それに感銘を受けました。 または、彼らのブログ投稿は、成熟したレベルの技術的専門知識と理解(そして理想的にはユーモアのセンスさえも:-))を示唆しています。 ここで重要なのは、連絡をとるまでに、候補者はすでに「単なる履歴書」以上のものであるということです。
さらに、希望する候補者のタイプに高い期待を設定する職務記述書テンプレート(SEO、フロントエンドWeb開発、バックエンドWeb開発用など)の使用を検討してください。
ソフトウェア開発者の技術的洞察力の評価
技術的な習熟度の効果的な判断は、特定のプログラミング言語やテクノロジーのニュアンスをはるかに超えています。 これらの技術的な詳細は確かに無視されるべきではありませんが、通常、評価プロセスの最も重要な要素ではありません。
評価することが重要なのは、候補者の基本的な技術力と理解、創造的思考、および問題解決です。
最高の開発者は、言語仕様やAPIドキュメントで簡単に見つけることができるメモリにコミットする時間を無駄にしません。 さらに、新しい言語、テクノロジー、またはデザインパターンを学ぶことは、強力な開発者にとっては比較的簡単な作業です(そして、新しいテクノロジーが導入されて市場シェアを獲得する速度が加速していることを考えると、実際には不可欠なスキルです)。 したがって、評価することが重要なのは、候補者の基本的な技術力と理解、創造的思考、および問題解決です。
これを達成するための実証済みの方法は、言語に制約されないプログラミングの課題を提起することです。 候補者に問題を提示し、選択した言語で解決策をコーディングするように候補者に依頼します。 唯一の要件は、エッジの状態や潜在的なエラーへの対処を含め、ソリューションが徹底的かつ正確であることです。 ここでの目標は、候補者の(a)問題解決能力、(b)コンピューターサイエンスの知識、および(c)コーディングスタイルを評価することです。 この時点では、特定のプログラミング言語で適性を評価しているわけではありません。 (ちなみに、このアプローチの追加の利点は、面接官が候補者がコーディングしている言語の専門家である必要がないことです。)
面接プロセスに組み込むためにそのようなプログラミングの課題を選択できる多数のオンラインリソースが存在します。 (特定のプログラミング言語の知識ではなく)アルゴリズムに焦点を当てたものは、候補者のコンピュータサイエンスの基礎と問題解決能力の評価を容易にします。 注目すべき例としては、hackerrank.com、projecteuler.net、beatmycode.comなどがあります。 ただし、テストを管理するためにこれらのサイトを使用する必要はないことに注意してください。 むしろ、課題を選択するためのリソースとしてそれらを使用し、面接(ホワイトボードなど)中に候補者にソリューションをコーディングさせることができます。
とはいえ、オンラインテストは、面接プロセスの貴重な追加コンポーネントになる可能性があります。 ただし、オンラインテストサービスを使用する場合は、ソリューションの詳細ではなく、候補者のサイトで生成されたスコアに過度に集中するリスクを回避することが重要です。 一つには、テストサービスで採用されている評価指標に同意できない場合があります。 さらに、自動評価プロセスが完全に気付かない可能性がある、特に賢いまたはエレガントであると考えるソリューションの側面があるかもしれません。
オンラインテストサービスによって提供される評価では、「誤検知」または「誤検知」の可能性もあります。 一方では、誤検知は資格のない候補者への面接に時間とリソースを浪費する可能性があり、誤検知は非常に検討に値する候補者を失格にする可能性があります。 長期的には、後者はより深刻な影響を与えるため、注意深く監視する必要があります。
一般に、直接実施されるテストは、欺瞞の可能性を減らすため、オンラインで実施されるテストよりも本質的に信頼性が高くなります。 さらに、対面テストは、ソフトウェアエンジニア候補がプレッシャーの下でどのように動作するかを観察する機会を提供します。 それにもかかわらず、オンラインテストサービスの使用は、不正または資格のない候補者を排除するのに役立つ他の技術を組み込んだ、ここで提唱されているより包括的なタイプのスクリーニングプロセスの効果的なコンポーネントになる可能性があります。
オンライン開発テストは、技術スキルが標準をはるかに下回っている候補者の驚くほど高い割合を排除するための貴重な予備フィルターとしても役立ちます。 興味深いことに、そのような候補者の多くは、自信がないために、テストを受けようとさえせずにプロセスを放棄します。 とはいえ、ダニング・クルーガー効果によって証明されているように、自信が常に最良の態度のバロメーターであるとは限りません。
技術的洞察力を評価するためのもう1つの非常に価値のある手法は、GitHubやSourceForgeなどのサイトで作成した、または少なくとも貢献したオープンソースプロジェクトのリストを提供するよう候補者に依頼することです(貢献者のみの場合は、コードのどの部分を個人的に作成したかを示します)。 次に、彼らのコードをレビューし、特定の設計上の決定、コーディングスタイル、採用されたパターンなどについて質問する準備をして、面接に来ることができます。 このような話し合いは、言語の技術的な特徴について候補者にクイズを出すよりもはるかに価値があります。
言語といえば…
少数のエリートのメンバーは、技術に精通しているだけでなく、口頭と書面の両方で明確、効果的、簡潔にコミュニケーションをとる完璧なソフトウェア開発の専門家です。

口頭でのコミュニケーションスキルは、面接でも電話でも簡単に評価できます。 口頭でのスキルは、ユーザーとの接触を伴わない特定の「奥の部屋」の技術的役割では確かにそれほど重要ではありませんが、それでもなお、効果的なチームの相互作用とアイデアの交換を最大化するために重要です。
筆記コミュニケーションスキルは、筆記サンプルを提供するよう候補者に依頼することで最もよく評価できます。 テクニカルライティングのサンプルは、ライティングスキルだけでなく、技術的な明快さも示すため、強く推奨されます。 面接の前にこれらのサンプルをリクエストすると、特に便利です。 一つには、これは彼らの文章を事前にレビューして分析する機会を提供し、あなたが彼らと彼らの文章について話し合い、批評する準備ができているインタビューに来ることができるようにします。 さらに、一部の技術候補者は、それ自体が貴重なフィルターとして機能する可能性のあるサンプルの作成要求によって「延期」されます。
道徳的なジレンマ
息子に倫理について教えたいと思っている父親についての古いジョークがあります。 父親は息子に、彼と彼のパートナーはドライクリーニング業を営んでいると言います。 ある日、父親は、顧客がドライクリーニングを受け取るために私たちの店にやって来たと言います。 顧客が立ち去ろうとすると、彼女が10ドルも支払っていることに気づきました。 さて、ここに倫理があります…私は私のパートナーに話しますか、それとも言いませんか?!
対照的に、実際の倫理的ジレンマ、つまり道徳的ジレンマは、しばしば曖昧で複雑になる可能性があり、それらは間違いなくビジネスに現れます。 最強のソフトウェア開発者は、適切に調整された道徳的コンパスがない場合、プロジェクトに計り知れない大混乱をもたらす可能性があります。 したがって、候補者のこの次元を評価することが重要です。
これを達成するための非常に効果的な手法は、候補者に仮想的な道徳的ジレンマを提示し、その状況で彼らが何をするかを尋ねることです。 これが効果的であるためには、ジレンマが明白な答えを持っていないことが不可欠です。 理想的には、考えられる答えは不完全で、やや問題があるはずです。 候補者がそのような質問に提供する答えは、彼らがどのように考えるか、彼らの倫理基準、および彼らの優先順位についての膨大な洞察を提供することができます。
次に例を示します。
あなたが働いている会社は、別の会社によってプロジェクトに取り組むために雇われました。 プロジェクトでは、特定の下請け業者を使用する必要があります。 あなたは以前その下請け業者で働いていたので、彼らがしばしば彼らの時間を埋めて、彼らの時間のために彼らの顧客に過大請求することを直接知っています。 しかし、彼らがこのプロジェクトでこれを行ったとしても、それらの費用はあなたの会社の顧客に転嫁されるので、あなたの会社を傷つけることはありません。 あなたは上司にこれについて言及しましたが、特にプロジェクトの下請け業者の部分は全体の予算のごく一部にすぎないため、顧客には何も言わないようにアドバイスしました。 しかし、あなたには顧客のために働く非常に親しい友人がいます。 ある日昼食をとったとき、あなたがそこで働いていたことを知っているので、あなたの友人はあなたがこの下請け業者について知っていることをあなたに尋ねます。 あなたはどのように反応し、彼に何を伝えますか?
ここでの美しさは、明確に「正しい」答えがなく、状況が現実の生活とビジネスの世界の道徳的な複雑さを反映していることです。 適切に尋ねられれば、そのような「道徳的ジレンマ」の質問への答えは、ソフトウェア開発者を雇うための面接プロセスの最もわかりやすく価値のある部分の1つになる可能性があります。
あなたを知るようになる(あなたは本当に誰ですか?)
面接プロセスに内在する欠点の1つは、実際に人と仕事をするまで、人と仕事をすることがどのようなものになるかを知る方法が実際にはないということです。 それでも、候補者の性格と気質を現実的に感じることは、採用を成功させるために不可欠です。
テクニカルエリートは、技術的に優れているだけでなく、高度な専門性も備えています。 したがって、それらの検索は厳密に技術的な評価に限定されません。
そのことを念頭に置いて、候補者の性格とプロ意識を評価するのに役立つ面接テクニックをいくつか紹介します…
1つは、技術者以外のスタッフ(管理アシスタントなど)による事前審査から面接プロセスを意図的に開始することを検討してください。 次に、このスタッフに、技術的ではないことに気付いた候補者がどのように扱ったかを尋ねることができます。 彼らは侮辱的で、せっかちで、見下していましたか、それとも彼らは心地よく、忍耐強く、そして敬意を表していたのでしょうか? スタッフがあなたに伝えていることは、実に非常にわかりやすいものです。 あなたは、候補者が誰であるかに関係なく、他人を尊重して扱っているかどうかを知りたいと思います。
面接を通じて、候補者に建設的なフィードバックを提供する機会を探します。 これが引き起こす反応を注意深く観察してください。 フィードバックは高く評価されていますか、それとも候補者はまったく防御的になっているように見えますか?
面接の最初の5分または10分間は、候補者の性格についての洞察を得るための手段として、非技術的な「チャット」に参加します。 候補者は、これが実際の面接の単なる前置きであり、したがって「髪を下ろす」可能性が高いと考えるかもしれません。 それにより、この時期に彼らの性格について驚くべき量を識別することができるかもしれません。 そしてもちろん、彼らがユーモアのセンスを示しているなら、それは常に良い兆候です。 :-)
エンジニアを採用するためのこれらの一般的な手法に加えて、候補者の性格、自信、誠実さ、およびプロ意識を評価するのに役立ついくつかのサンプル質問があります。
- 自分のキャリアを振り返ってみると、あなたが直面している特定の困難な状況が頭に浮かぶのは何ですか? 課題とその対処方法を詳しく説明してください。 特に上手く扱ったと思いますか? もう一度やり直す機会があったら、どうしますか?
- あなたがこれまでにあなたのキャリアで犯したと思う最大の間違いは何ですか?
- ソフトウェア開発の何が一番好きですか? 何が一番好きですか?
- 自分にとって理想的な位置を描くことができたら、それは何でしょうか? あなたの役割と責任、会社の規模と種類、職場環境などの観点から、どのように見えますか?
- あなたの最大の強みは何ですか? あなたを雇うことで何が得られるでしょうか?
- 私たちの誰もが完璧ではありません。 あなたが改善に取り組んでいるあなたの性格のいくつかの側面は何ですか?
- 私があなたの現在の上司に電話してあなたについて尋ねたら、彼または彼女は私に何を言いますか?
- あなたを雇う際に私たちは何を心配すべきですか?
まとめると、これらの質問とテクニックは、候補者が実際に誰であるかについてのはるかに強力で深い理解を促進することが証明されています。これは、採用決定を成功させるために不可欠です。
感情は相互ですか?
だから、あなたはA+候補を見つけました。 高度なスキル。 ポジティブで明るい性格。 優れた文化的適合。 それは素晴らしいことです! だが…
まだ答えられていない重要な質問が1つあります。候補者は、あなたの利用可能なポジションとあなたの会社で働くことに特にどの程度関心がありますか? これに対する答えは、雇用を成功させる上で最も重要です。 一方的な関係は、私たちの生活の他のどの側面よりもビジネスでうまく機能しません。
繰り返しになりますが、面接プロセスの文脈では、そのような質問に答える際の候補者の率直さを疑う必要があるため、単に直接質問することは最小限の価値しかありません。 むしろ、これは、他の、より直接的ではない手段を通じて確認しようとしなければならないものです。
手始めに、候補者が最初からあなたに近づく方法は、かなり信頼できる関心の尺度です。 候補者は、なぜ彼または彼女があなたの会社と利用可能な機会に特に興味を持っているのかについて、説得力のある説得力のある説明を提供しますか? もしそうなら、これは本当の興味を示すだけでなく、専門家としての成熟度と洗練度も示しています。 そのような候補者は、あなたに連絡する前に、あなたの会社と機会について少なくともある程度の事前調査を行ったことは明らかです(単に「町の周りで彼らの履歴書を撃ち殺す」のではありません)。
会社とその製品またはサービスで宿題をした後、開発者の採用プロセスに入る候補者は、彼らの興味と知識の両方の有用な指標を提供します。 面接官の事前調査(たとえば、彼または彼女の経歴、LinkedInプロフィール、ブログ投稿などを読む)まで行った候補者は特に注目に値します。 より洗練された候補者は、面接の過程でこの情報を明らかにすることに重点を置きます。 その他の場合は、 「当社について何を知っていますか?」などの簡単な自由形式の質問。 「当社とこのポジションについて特に興味を持っていることは何ですか?」 確かに非常に説得力のある応答を引き出すことができます。
最後に、真に興味を持っている候補者は、面接プロセス全体を通して質問をする可能性があります。 それにもかかわらず、候補者に質問があるかどうかを尋ねて面接を終了することは常に良い考えです。 質問がまったくないことは、そうでなければA+候補と見なされていたであろう誰かでさえも危険信号となる可能性があります。
要約
ここで説明する手法は、業界で最高のソフトウェア開発者を見つけて採用するための貴重なコアプロセスとして役立ちます。 しかし、効果的な採用は目的地ではなく、旅であることを覚えておくことが重要です。 静的プロセスはデッドプロセスになる運命にあるため、プロセスを継続的に再評価して微調整する必要があります。
企業の文化や優先順位に基づいて、企業の旅はそれぞれ異なります。 組織に適したパスを見つけて実行します。 あなたには成功があり、失敗するでしょうが、後者から学ぶ限り、あなたは正しい道を進んでいると確信することができます。