2023年6月16日
寄稿者
Marcelo Wiermann
世界展開する大手オンラインフードデリバリー会社、Delivery Heroのレコメンデーションエンジニアリング部門を率いている。
非常に魅力的なエンジニア人材の採用活動は、初めての起業の場合やテックに精通にしていない創業者にとっては特に気後れする業務となり得る。
筆者はこれまで複数のスタートアップやテック大手に勤務し、100人以上のエンジニアを採用してきた。優秀なエンジニアの採用には主に4つの関門がある。
・発掘
・引き込み
・評価
・採用
優秀なエンジニアを見つけること自体、書くことが盛りだくさんあるテーマであり、提示する労働条件をどのようなものにするかについては情報があふれている。そこでこの記事では優秀な候補者をどのように引き込み、評価するかに焦点を当てる。
筆者が見つけた、テック分野に精通していなくてもすぐに使えるスタートアップ特有の採用術を以下紹介する。
優秀な候補者の注意を引く必要がある。自身が持つネットワークを通じて紹介を受けたり、LinkedInやStackOverflowにアピールする広告を出したりといった基本的なことは省こう。
長くても2週間以内にすべての面接を終わらせること。これは、リクルーターや大企業に対してあなたが持っている数少ない強みのひとつだ。
あなたはエンジニアの上位25%をターゲットにしているため、業界で最高のリクルーターと直接競合することになる。エンジニアは常にリクルーターから接触があり、リクルーターを警戒するようになっている。そのため、創業者やスタートアップのマネージャーであることは強みになる。
初めてコンタクトを取るときのメッセージは売り込みのプレゼンと考え、相手が興味を持てるものにする。あなたが解決しようとしている問題の大きさと、相手が受けるかもしれない影響について話す。使っている最先端の技術について話し、候補者が自由に会社の未来を形成できることをアピールする。やりすぎは禁物だが、候補者にとってその転職が仕事をする場所を単に変えるような感じにならないように気をつけたい。
あなたが接触する大半のエンジニアはおそらく仕事を探しているわけではないため、無味乾燥なコピー&ペーストで応募を促すようなアプローチをしてはいけない。接触相手のプロフィール、所属しているコミュニティ、興味、スキル、経歴、フォローしている人、GitHubのプロフィールなどを参考にするといい。
それに応じて売り込みをパーソナライズし、なぜ相手があなたの会社に適しているのか、またその逆も然りであるのかを伝えたい。
採用を誤るとプロジェクトは数カ月停滞するか永久に頓挫し、膨大な技術的損失が発生する可能性がある。経験を積んだエンジニアマネージャーは技術者の採用について熟知しているだろうが、技術者ではない創業者や管理経験のない技術畑出身の創業者はまず2つの基本ルールを学ぶ必要がある。
・迅速に行動すること:面接後48時間以内に候補者に連絡し、質問に迅速に答え、最長で2週間以内にすべての面接を終わらせる。これは、リクルーターや大企業に対してあなたが持っている数少ない強みの1つだ。
・興味を引くこと:あなたが相手を評価しているのと同じくらい、相手もあなたを評価している。相手のことをよく知ることで最初のプレゼンにさらに磨きをかけ、売り込み続ける。
また、あなたは2つの基本的な質問の答えを得たいと考えている
この問答は電話による事前審査で行うことができ、それをクリアした場合は、1時間の深く掘り下げた対面面接を3回行う。良い候補者の場合、事前審査のクリア率は20〜30%、最終的なコンバージョン率は1~2.5️%だ。
事前審査は30〜45分の通話で行い、あなたと候補者の双方にとって採用プロセスにさらに時間を費やすことが理にかなうかどうかを判断する。候補者は理路整然としていて、聞き上手か。過去3年間で重要なプロジェクトを遂行したか。どのような技術を採用したのか。
手がけたプロジェクトの技術的、ビジネス的な重要業績評価指標(KPI)を把握しているか。顧客が誰か、自分の仕事が顧客にどのような影響を与えたかを知っているか。自分の仕事について語るとき、熱意があるか。あなたの会社のどんなところに興味があるか。事前審査では深く掘り下げる時間がないので、全体の時間の20〜30%以上話さないようにする。
最後に、候補者個人の貢献と所属するチームの貢献を明確にする。エンジニアの中には、自分の役割が小さくてもチームや会社のことを取り上げて自分の貢献を誇張する人がいるかもしれない。絞り込みすぎを防ぐため、候補者の回答に対して70%程度満足であれば次のステージに進む。
優れたソフトウェアエンジニアの知識は単にコーディングにとどまらない。彼らは、役に立ち、スケーラブルで、かつ安全なソフトウェアを仕様通り、時間通り、ほぼ予算内で作成する方法を知っている。優れたエンジニアは、先に挙げたリストで不確かなものが1つ以上あってもそれを実現することができる。
あなたが技術畑出身である場合は、コーディングと問題解決の面接で候補者のソフトウェアエンジニアリングの基礎をチェックする。スタートアップは、基本的なデータ構造、スケーリング、設計パターン、データ操作などを網羅する実戦的な参考問題を使うべきだろう。大企業が使うような合成的な演習は避けること。小規模なチームの一員として初日から価値を提供できる人材が望ましいからだ。
例えば、複雑なデータベース呼び出しを行うAPIにキャッシュを追加する、大規模なサービスをより小さく、クリーンなものに改善する、重要なコードのバグを見つける、与えられたユースケースに基づいてデータを効率的に保存・取得するなど、適切なテストを行う。
優れた候補者は自分の思考プロセスを説明し、適切な質問をすることができるはずだ。また、面接レベルの擬似コードを作成できる程度の余裕を持って言語を使いこなしているかどうかも確認する。
もしあなたが技術者ではない創業者で、シニアエンジニア(従業員や友人、メンター、アドバイザーなど)に頼ることができない場合は、HackerRank(ハッカーランク)、Coderbyte(コーダーバイト)、Codility(コーディリティ)などの自動コード評価プラットフォームや、Karat(カラット)、expertlead(エキスパートリード)、Geektastic(ギークタスティック)といった面接代行サービスなどの第三者の選考サービスの活用を検討するといい。
自動コード評価プラットフォーム、面接代行サービスいずれも有効だが、シニアなスタートアップエンジニアは後者を好む傾向がある。優秀な技術畑の面接官との会話は評価テストよりもずっと魅力的で、ニュアンスに配慮してくれるため、多くの候補者はテストを受けるのを拒むほどだ。
このようなサービスの活用には費用がかかるが、時間の節約と採用に伴うリスクの低減に見合う。また、優秀な候補者が多すぎるという(現実的ではない)問題が発生した場合に備えて、複数の候補者を並行して面接することもできる。
あるいは、基本的なデータ構造とシステム設計のコースが充実しているAlgoExpert(アルゴエキスパート)のようなウェブサイトで基礎を学ぶこともできる。JSやPythonのようなプログラミング言語の基礎を学ぶことも思いのほか簡単で、良いエンジニアの条件をより理解するのに役立つ。
多くのエンジニアは狭い技術的な問題を解決したり、優れたコードを書いたりする力量はあるが、ビジネス上の問題から現実的な解決策へと逆向きに取り組むことができない。大企業ではチーム内にさまざまなスキルを持った人を配置することでこの点を補うことができる。スタートアップでは、システム全体を構築する方法を知っている、柔軟で実用的なスキルを持つ人材が必要だ。
もしあなたが技術面での確固たる経験を持っているなら、このラウンドでは「Uberをどのように設計するか」「Googleマップをどう実装するか」といった質問をすることになるだろう。
優秀な候補者は、目標とするスループット、ユーザーは誰か、何を達成したいかなど、明確な質問をたくさんしてくる。また、何百万人ものユーザーが使うマップのようなアプリケーションを動かすにはどれくらいのストレージが必要かといった基本的な前提から、そのほとんどを把握することができる。
加えて、候補者に具体的なアーキテクチャ図を設計してもらい、主要なコンポーネントを選択させ(例えば「pub/sub」だけでなく「kafka」を聞きたいところだ)、そのソリューションを説明してもらうのも良い方法だ。自社の業務にある程度関連する課題を選ぶことが重要だが、候補者から無料コンサルティングを受けているわけではないことを明確にする。
設計全体を仕上げることは重要ではないが、候補者が自分のソリューションを複雑にしすぎている兆候を見逃さないようにし、ヒントを提供する。
もしあなたが技術者でないなら、面接代行サービス会社が役立つ。どのような課題を使ってほしいかを必ず具体的に伝えるようにする。たとえば、eコマースのスタートアップのために、eコマースに関する問題を解決できるエンジニアがほしい、など。
あるいは、オンラインでいくつかの設計課題を勉強して使い、面接の際には技術者ではないプロダクトマネージャーの役割を担ってもいい。細かい技術的なことは理解できないかもしれないが、要件や長所・短所、候補者に欠けている点、ビジネスニーズをどれだけ理解しているかなどを掘り下げることができる。これにより、実際に一緒に仕事をするのがどんなものになるかを想像できる。
このラウンドでは、候補者のコミュニケーション能力、チームワーク、ビジネスと顧客の理解、困難な状況への対処、結果を出す能力を探る。
候補者の動機と達成したいことを確認する。これは、困難な時期(スタートアップ企業ではあることだ)にも粘り強く働き続けるか、作り上げる気分が抜けたときに離脱するかの違いになる。候補者の長期的な目標は何だろうか。現在の職務では得られないものを、あなたの会社ではどう考えているのか。エンジニアリングのどんなところが好きなのか。
エンジニアがどのように働き、何に重きを置いているかを理解する。候補者らの最大の功績は何か、そしてその経験から何を学んだのか。最大の失敗はどうだろうか。他人のせいにするのか、それとも学んだことにフォーカスするのか。対立することなく、建設的なフィードバックを与えたり受けたりする術を知っているか。同僚に指示したり、協業したりするのが好きか。大規模な障害や期限まで時間がないようなストレスがかなりかかる状況にどう対処したか。
最後に、候補者がビジネスについて知っていることをチェックする。これはスタートアップでは特に重要だ。ソフトウェアを出荷することが目的ではなく、顧客にサービスを提供することが目的であることを理解しているエンジニアを求めているからだ。候補者らは自分たちの顧客が誰で、顧客が何に関心を持っているのかを知っているだろうか。技術的なKPIとビジネス的なKPIはどうなっていて、どう相関しているのか。候補者の現在の会社のビジネスモデルはどうなっているのか。
候補者らがどのような人物で、何を重視し、何を達成したいのかというメンタルモデルが構築できれば、あなたの会社で活躍できるかどうかを理解することができる。前の2つのラウンドでチェックした機能的な知識や現実社会での問題解決能力と組み合わせることで、採用へと進むかどうかを自信を持って判断することができる。
From TechCrunch. © 2023 Verizon Media. All rights reserved. Used under license.
元記事:How to hire great engineers when you don’t have any technical expertise
By:Marcelo Wiermann
翻訳:Nariko
関連記事
人気記事