• 株式会社カンム
  • 執行役員 COO
  • 知久 翼

「設計」は応募者との共通言語? コードを見ずに技術力を見極めるエンジニア採用術

〜エンジニアの採用面接では、コードは敢えて見ない。「議論」から応募者の能力とカルチャーフィットを判断する面接手法とは?〜

年々、競争が激化するエンジニアの採用市場の中で、「優秀な人を採用できない」という悩みを持つベンチャー企業も増えている。

株式会社カンムは、専用アプリの累計ダウンロード数が50万を突破した「バンドルカード」を運営するFintechスタートアップだ。

同社は、2018年1月よりバンドルカードを支える金融系の基幹システムの内製化の開発をスタート。大手Slerが数億円をかける規模の開発を、わずか4人で、6ヶ月間で開発したそうだ。

この高い生産性の裏には、複数の領域に対応できるスキルセット(※)を持つエンジニアで構成される小さなチームと、優秀なエンジニアを見極め惹きつける採用手法があった。

(※)AWS、オンプレ、バックエンドアプリケーション、フロントエンドアプリケーション、対外交渉など

また、同社の面接では、コーディングテストなどは行わず、ソフトウェアの設計に関する議論を行うのだという。

今回は同社でCOOを務める知久 翼さんと、ソフトウェアエンジニアの佐野 裕章さんにエンジニア採用の取り組みについて伺った。

WhatsAppのように「少数精鋭で大きな仕事」をしていきたい

知久 僕は、2013年11月にカンムに入社し、ソフトウェアエンジニアとして、サーバーサイドとインフラ全般を担当していました。現在はCOOとして、プロモーションと採用をメインに行っています。

佐野 私は、SIer、サイバーエージェント、トレタなどB2B、B2C双方の会社でウェブアプリケーション開発やインフラ技術を学び、2017年11月にカンムに入社しました。

今はインフラだけでなく、開発に必要な領域全般を担当しています。また開発以外でも、採用や、Visa等のステークホルダーとの対外交渉も行っています。

【左】佐野さん【右】知久さん

知久 弊社のエンジニアチームは、全員が複数の領域に対応できるスキルセットをもつエンジニアで構成されています。それぞれが専門領域を持ちながら、お互いにタスクを投げ合い、複数の領域をこなしています。

なぜそのようなエンジニアでチームを構成しているかと言えば、僕、WhatsApp(ワッツアップ)のチームがとても好きなんです。

彼らは2014年にFacebookに買収されましたが、当時30人くらいのソフトウェアエンジニアチームで、MAUが4億人を超えていたそうです。買収金額も原子力潜水艦を2隻買えるような金額(※)で…。

※Facebook社により、218億ドル超(約2.4兆円)で買収

WhatsAppのように各メンバーが大きな権限を持って、エンジニアリング的に非常に難易度の高い課題と戦いながら、人の生活に必要なプロダクトを作っているチームってかっこ良いな、と思っていて。

何より「全員が1つひとつの領域で英雄」ってめちゃくちゃテンション上がるじゃないですか。

そういうチームが個人的にすごく好き、ということもあるのですが、誰かがいっぱいいっぱいになったら自然と「自分がこれ手伝うね」みたいなことが起きるチームは非常に生産性が高いと思っていて。目指すのであればそういうチームを作りたいと考えていました。

そのためには、専門性が高くその専門領域の一歩、二歩外をカバーし、お互い率直に議論し合えるエンジニアを集め、背中を預け合わないといけません。

「自分はこの領域しかできない」となると、ある領域のタスクが重たくなった時に手助けをすることができないんです。

そのような背景から、各々が自分の専門領域を少し超えた範囲をカバーし合える少数精鋭のエンジニアでチームづくりをしています。

結果として、大手のSlerが数億円かけて作るような金融の基幹システムを、数百万円の予算で4人で開発できました。

金融領域は、少しでもサービスを落としたら大きな問題となりますが、AWS等のモダンなWebサービスや技術を駆使して開発しています。

議論から得られる情報こそ、エンジニア採用には重要

知久 専門性を持ったエンジニアに仲間になってもらうために、弊社の採用面接では「ソフトウェアの設計に関する議論」を行っています。面接の場でコーディングをしてもらうような面接は行いません。

佐野 コーディングをしてもらうメリットもあると思いますが、その場で回答できないからと言って「この人はコードが書けない」と判断するのはもったいないと思っています。

知久 採用の場でソフトウェアの設計に関する議論をすることで、技術力だけでなく「具体的である」「数字ベースである」「素直である」等の弊社が大切にしている考え方を持っているか、つまりカルチャーフィットするかを見極められると思っています。

議論のテーマとしては、例えば「自分が経験した中で難易度が高かった設計」について話してもらっています。

難しかった設計の過程では、必ずその人の意思決定があり、意思決定にはその人の考え方が現れます。そのため、採用候補者を深く理解できるんです。

このテーマの場合、掘り下げて聞いていくのは「どのような数値目標があったのか」「数値目標に届くためにどのようなアーキテクチャーを組んだのか」といったことです。

具体的で数字ベースの方であれば「◯◯という要望がユーザーさんからあり、その要望を満たすためには4つの選択肢があったのですが、✕✕という理由でこの選択をしました。」といった形で、議論が具体的になります。

PMに言われたことをそのまま実装していたのか、自分の頭で考えて自走していたのか、といったこともある程度わかりますね。

また「素直であるか」ということも、この議論の中である程度わかります。

設計をする際、エンジニアに与えられる時間は有限なので、すべての領域を完璧にすることは難しいと思います。なので、過去行った設計に穴があっても良いと思うんです。

そういった部分について深掘りした際に「なるほど、そこは考えてませんでした」とか「そこは正直分かりません」と、変な言い訳をせずに正直に答えるかどうかで、素直さをある程度判断できるかなと思います。

なお、ただ単に考えていなかったか、敢えて考えていなかったか、を見極めるために「設計しなかった理由はなんですか」といった質問もしますね。

「サービスがスケールしてからでも対応できると判断した」「〇〇という理由で重要なポイントではないと判断したので、もっと重要なポイントに時間を使った」など、設計時に考えたことを具体的に話せる人は、状況や重要な点を考慮して設計できる人なんだなと思います。

また、議論を重ねていく中で、自然と採用候補者の技術レベルもわかります。

設計をする上で「気にすべきポイント」があるのですが、そこを網羅的に話せる人は、高い技術を持つ傾向があり、コードを上手く書ける能力と強い相関関係があると思っています。

例えばバックエンドアプリケーションであれば、複数の外部APIと通信する際のデータの整合性のとり方や、トランザクション境界をどうするか、などについて議論をしたりします。

このように、ソフトウェアの設計に関する議論は、技術力やカルチャーフィットを見極める上でとても良い方法だと思います。

佐野 我々は面接というより、議論がしたいんです。来てくれた方を評価したいのではなくて会話がしたいんですよね。

「設計」というネタに関する議論から得られる情報は、チームにフィットするかどうか判断する大きなヒントになります。

また、エンジニアのGitHubの内容は、簡単に確認するだけで、鵜呑みにしないようにしています。

コンプライアンスに厳しい企業に所属している方の場合、物凄く技術が高くても、GitHubは公開していなかったりします。そこで、コードを公開していないからといって切り捨てることはしません。

対話を重ねていく中で、考え方や、設計時に気にするポイントを深堀っていくことが大事だと思っています。

エンジニアを惹きつけるのは「大きな課題」と「ビジョン」

知久 また、候補者を惹きつけるためには「難しいけどあなたが解決すべき課題があります」と情熱を持って語ることが非常に重要です。

例えば、佐野さんを採用する時は、基幹システムを内製化する計画をしている段階でした。

「基幹システムを内製化するというのは、SIerがすごいお金をかけて作るものだけど、でも俺たちなら絶対作れるから一緒にやろうよ」と、とにかく言い続けました。

また、解くべき課題だけでなく「課題を解いた結果、世の中がどうなるの?」というビジョンを情熱を持って語ることも重要です。

弊社の場合は、「一緒に山賊やりませんか?」みたいなイメージですね。

金融領域は、大手の金融機関や巨大資本がどんどん参入してきていて、売上も伸びていれば利益も出ています。所謂メインストリーム、エスタブリッシュメント層にいる勢力が強い領域と言えます。

その中で、泥臭くも既存の形に囚われず、荒れ地をものともせず進んでいく「山賊」のように小回りの効くチームは、金融の仕組みを彼らとはまた別の角度からよい方向にアップデートできると考えているんです。

また一方では、候補者の方に弊社を魅力的に思ってもらうために、自分たちのソフトウェアの設計を説明し、質問をしてもらう時間も設けています。

小さなチームで、金融という大きな世界を突き破る

知久 2013年に入社してからこの面接方法は変わっていないのですが、この手法で採用したメンバーは非常に活躍してくれているので、良い面接手法だなと思っています。

佐野 少人数で裁量を持って仕事が出来ることは、すごく楽しいです。裁量を自分で背負い込めるだけの技術力がある仲間達と、大きな仕事を成し遂げていきたいですね。

知久 今後も、各人が大きな権限を持って、お互いに背中を預け合い支え合うチームでありたいと思っています。

そして、小さいチームで、今まで大企業が独占しているような金融の領域を突き破っていきたいですね。(了)

;