5月に、チームに加わってくれるフルスタックデベロッパーを探すために、最初の求人広告を掲載しました。
約900件もの応募を受け、多くの才能ある人々と面接を行った結果、ついにRobin Malfaitがポジションのオファーを受け入れ、本日より正式にTailwind Labsチームの一員となったことをお知らせします!

Robinはベルギー出身の才能ある開発者で、Tailwindコミュニティの活発なメンバーとして長年活動しています。Tailwind UIのお客様で、Discordサーバーの#react
チャンネルで質問をしたことがある方なら、彼が質問に答えてくれた親切な人である可能性が90%はあるでしょう。彼はTailwind UIコンポーネントをJSXに変換するのに役立つブックマークレットまで作成しました!
Robinは非常に経験豊富なReact開発者であり、Tailwind UIでの公式ReactおよびVue(まずは)サポートの基盤となる、私たちが取り組んでいるオープンソースのレンダーレスUIライブラリを先導するために参加してくれます。
彼が本日ついに私たちと一緒に働き始めることを非常に嬉しく思っており、彼の貢献によって、人々がこれまで以上に速く、より自信を持って素晴らしいUIを構築できるようになるのを見るのが待ちきれません。チームへようこそ!
以下は、この役割の採用をどのように進め、最終的にRobinにオファーを出すまでに、約900件の初期応募者から候補者を絞り込んだかの物語です。
求人広告
この役割以前は、すでに知り合っていて信頼していたBradのみを採用していたため、求人広告や厳格な応募プロセスは必要ありませんでした。
本当に優秀な候補者を得るためには、魅力的な求人広告を書く必要があるとわかっていました。約3〜4日かけて作成し、最終的にこうなりました。
ここに、私が書く際に焦点を当てた重要な点を挙げます。
- 応募者が入社後に取り組むプロジェクトについて具体的に説明する
- 私たちは小さなチームであり、顧客サポートを含め、誰もが何でも少しずつやらなければならないことを明確にする
- 応募者がすでに会社にいた場合に取り組んでいたであろう、完了したばかりのプロジェクトの具体的な例を挙げる
- 次に予定されている主要プロジェクトで遭遇すると予想される具体的な難しい問題について詳細に説明し、応募者が私たちにとって価値のある専門知識の種類を理解できるようにする
- 具体的な給与と福利厚生の情報を共有する。給与を明確に理解せずに求人に応募することはないので、才能ある人々が給与を明示せずに私たちの求人に応募することを期待すべきでしょうか?
この求人広告について非常に多くの肯定的なフィードバックを受け取り、その出来栄えを本当に誇りに思っています。応募者中心であり、応募の質に大きな違いをもたらしたと思います。
応募プロセス
他の企業と少し異なっていたのは、履歴書を求めたり、応募者に回答する質問のリストを大量に渡したりしなかったことです。私たちが求めたのは、「応募」のみで、形式は応募者が自由に決められるようにしました。カバーレター、小さなウェブサイト、ビデオ、スライドデッキなど、何でも構いませんでした。
私がこの方法で応募を求めた理由はいくつかあります。
- 履歴書はそれほど重要だとは思わない
- 私たちはマーケティングセンスのある人材を求めていました。私たちは小さな会社なので、スペシャリストよりもT型人材が必要です。
- 物事をやり遂げられる人材を求めていました。応募を完全に自由形式にすることで、何もない状態から洗練された製品を自分で作り上げる能力について多くのことがわかります。
- 私たちが探しているものを促されなくても話す人を見つけたかったのです。私たちがやろうとしていることと自然に合致する人を見つけることは、私たちにとって大きな利点になります。
- 多くの応募があることを予想しており、この方法で応募を求めることで、仕事探しに手当たり次第にアプローチしており、私たちと一緒に働くことに特に興味がない人を簡単に除外できると考えました。
かなり敷居の高い応募プロセスだったと思いますが、それでも100件以上の応募があり、Robinの応募を含め、私たちの求人広告のために非常に具体的なものを時間をかけて作成したことが明らかでした。
応募者の中には、本当に突飛で創造的なことをする人もいましたが(インタラクティブゲームを作った人もいました!)、Robinの応募はいくつかの理由で私たちにとって際立っていました。
- 視覚的なデザインが素晴らしかった。私たちはデザイン重視の会社なので、デザインセンスが良いことは私たちにとって非常に重要です。
- 彼がプログラミングを学び、Laravelコミュニティに参加したという話は、たとえ会ったことがなくても、私たちに豊かな共通の歴史があることを教えてくれました。
- 彼は、私たちがごく近いうちに行う予定の作業に非常に関連性の高いコンポーネント設計に関する強い意見を述べ、私は彼の意見に同意し、さらにいくつかのことを学びました。
- 彼は、彼が作成した非常に興味深いオープンソースライブラリを共有してくれました。それは非常に知られていないにもかかわらず、非常によく考え抜かれ、完成度の高いドキュメントが非常に構造化された方法で提示されていました。彼はMarkdownファイルを作成するときでも視覚的なデザインについて考えていることは明らかでした。
- 彼は私たちと一緒に取り組みたいプロジェクトの具体的なアイデアをたくさん共有してくれましたが、その多くは私がすでにやりたいと思っていたことでした。
- 彼は「GitHub」の「H」を大文字にしました(人がそれをしないと本当に嫌です)。
Robinの応募は、コンテンツの観点から本当に際立っていた40〜50件のうちの1つでした。
応募の絞り込み
約900件もの求人応募を処理するのは大変な作業です。そのうち半分以上は、LinkedInのプロフィールや一般的な履歴書へのリンクだけを提出していたため、すぐに破棄できましたが、残りを絞り込むのは本当に大変でした。
私はこれまでこのような方法で人を採用したことがなかったので、最初は質の高い応募を提出した全員と面会して面接する必要があると感じていました。しかし、応募が殺到するにつれて、これは現実的ではなく、何らかの上限を設ける必要があることに気づきました。
私は良い応募をできる限り並べ替え、上位20件を切り取ってそこから始めることにしました。つまり、話さない優秀な人がたくさんいて、絶対的な最高の応募者を見逃した可能性さえありましたが、現実は、これに費やすことができる時間は限られており、約20件の最高の応募の中から、たとえ絶対的な最高の人材が他の30件の中にいたとしても、後悔しない複数の人材が確かにいると信じる必要がありました。
面接プロセス
まず、上位約20名の応募者とビデオ面接をスケジュールしました。これには約3週間かかりました。
これらは30〜45分の電話面接で、いくつかのトピックについてかなりカジュアルな会話をしました。
- 最近取り組んでいたことと、自分の強みはどこにあると考えているか
- なぜこの仕事に応募したのか、この役割のどこに興味を持ったのか
- 会社として今後1年ほどで何をするつもりなのか、そしていくつかのプロジェクトについて詳しく掘り下げる
- 仕事や会社について応募者が抱いている質問に答える
これは、応募した人たちを知り、誰が最も際立っているかについて直感を得るための素晴らしい方法でした。面会したすべての人と会うのを本当に楽しみましたが、次の段階に進む候補者を約10人に絞り込むという難しい決断をしました。
持ち帰りプロジェクト
応募プロセスの次のステップは、持ち帰りプロジェクトでした。応募者は、Steveが作成したデザインをVueまたはReactのいずれかを使用して作成する必要がありました。私たちはそれを約4〜8時間のプロジェクトと見積もりました。
すべての指示、Figmaファイルとしてのデザイン、およびFigmaで捉えるのが難しい動作を概説する作業中の実装のウォークスルービデオを含むzipファイルを提供しました。
非常に明確な指示を出すように努め、人々に時間を集中してほしい場所と、あまり考えすぎたり、時間をかけすぎたりしてほしくない領域を指摘するようにしました。
各候補者にプロジェクトを完了するのに約2週間を与えました。スケジュールを邪魔することなくスケジュールに組み込む機会を確実に与えるためです。
返送されたすべての提出物は素晴らしかったのですが、ここでも次の段階に進む候補者を制限することを余儀なくされ、今回は6人に絞りました。
Robinの提出物について本当に気に入ったことの1つは、コード内のコメントで彼のソリューションを案内するために多くの時間を費やしたことです。通常の製品コードの場合、それは間違いなくやりすぎだと思いますが、求人応募の一部として、彼が実際にコードについてどのように考えているかの舞台裏を見ることができて非常に役立つと思いました。彼はまた、特定の問題に対する代替ソリューションと、なぜそれらのアプローチを採用しなかったのかについても多くの時間を費やして説明してくれました。これも非常に有益でした。
ペアリングセッション
応募プロセスの最終ステップは、私との2時間のペアプログラミングセッションでした。
このような面接プロセスの一部としてペアリングを行う場合、本質的な権力構造が全体に影響を与えるリスクが非常に高くなります。私はそれを可能な限り回避したかったので、2つのことを行いました。
- ペアリングするものが完全に新しいものであり、私が以前に経験したことのないものであることを確認しました。
- 候補者にペアリングするものをいくつか提案してもらい、そのリストから何かを選びました。
私がすべての答えを知っていて、候補者が私がすでに知っていることを理解できるかどうかを見ているだけのものについては、絶対にペアリングしたくありませんでした。それは実際の作業をまったく代表しておらず、まったく役に立たないと思います。
代わりに、私たち二人とも重要な経験がない問題を選択することで、(少なくとも可能な限り)権力構造を脇に置き、一緒に何か新しいことを学び、お互いに行き詰まりから抜け出すのをどのように助け合ったかに焦点を当てることができました。
私がペアリングしたものには、次のようなものがあります。
- 日付ピッカーをゼロから構築する
- XStateを学ぶ
- Vue 3 Composition APIでモーダルダイアログを構築する
私はこのプロセスを本当に楽しんでおり、それをどのようにまとめたかを非常に誇りに思っています。それは間違いなく面接プロセスの中で最も有益な部分であり、私たちが適切な人に仕事を提供しているという確信を私に与えてくれました。
Robinのセッションでは、ゼロからSVGチャートライブラリを構築することにしました(私たち二人とも以前にやったことがありませんでした)。Svelteで(私たち二人とも以前に使用したことがありませんでした)。これはRobinのアイデアであり、面接の状況で同時に2つの完全に新しい問題に取り組む勇気を持っていたことに本当に感銘を受けました。私たちはこれについて一緒にペアリングする素晴らしい時間を過ごし、セッション中に私たちがお互いの先を行っていたり、何かについて追いつかせようとしたりしていると感じたことは一度もありませんでした。私たちは本当に素晴らしい相性を持っており、非常に活気に満ちて生産的だと感じました。そして、それは私がキャリアの中で経験した最高のペアリングセッションのいくつかを思い出させました。それは私たちが以前一緒に働いたことがなく、彼が仕事の評価を受けていたことを考えると、非常に素晴らしいことです。
オファーを出す
このプロセス全体には約1.5か月かかり、最終的に上位数名の候補者の中から選ぶのに非常に苦労しました。現実的には、誰を採用しても後悔することはなかったでしょうが、Robinとの面接とペアリングの経験がわずかに際立っており、彼に役割を提供できることに本当に興奮しました。彼はチームに素晴らしい仲間入りを果たすと確信しており、今後数か月で彼と一緒に難しい問題に取り組むのが待ちきれません。
この投稿について話し合いたいですか? GitHubで議論する →