エンジニアの採用は人物重視?スキル重視?

f:id:yuhei_kagaya:20191130165651p:plain

この記事はBASE Advent Calendar 2019の1日目の記事です。

こんにちはえふしんです。

11/27日に、Fukuoka Growth Nextで開催されたFGN Campに登壇してきました。僕とCAMPFIREのCTOである中川さんが登壇し、FGNに入居するスタートアップである株式会社クアンド の中野さんと、株式会社トイポの小神さんのお悩みを聞くという形式のパネルディスカッションでした。

growth-next.com

その中の質問で、「エンジニアの採用は人物重視?スキル重視?」という質問がありましたので、この記事で触れてみたいと思います。

そもそも人間はモチベーションで動く生き物だと思います。とりわけ頭脳労働であるプログラミングについては創造性とセットで動くことが必要です。

インターネット以前、プログラミングを仕事にする人の仕事が「情報処理」が主流だった時代におけるプログラミングの作業は、製造業のメタファで言うブルーカラー的な職種だったのではないかと思うところがあります。まだコンピュータの処理速度も遅く、メモリの量も少ないため安定稼働のためにスキルが要る時代。更にHTMLのようなエレガントな情報伝達技術はなく、コンピュータフレンドリーなエレガントなロジックとViewをプログラマが作らないといけなかったわけですが、この頃は仕様を考えると言う行為よりも、圧倒的にプログラミングの負荷が高い時代だったので、コードを書く人たちは、ちゃんと動くプログラムを作ることに集中せざるを得ない。それが製造業的なメタファで、設計工程とプログラム工程の分離が求めらていたのだと考えられます。

その後、WindowsプログラミングでRADツールが出てきてGUIプログラミングが簡単になり、その後、さらにHTML、CSSなどのWeb技術が出てきて、フロントエンドのViewとサーバサイドのロジックは、その専門職毎の職能として分離されることになりました。Webの技術は少々、コードをミスってもブラウザが落ちるなんてことはありません。トライアンドエラーのしやすさと表現力が増えたことで競争原理が働き、ユーザーにとっては表現力豊かで使いやすい機能を享受するきっかけになります。

そうなるとインターネット時代のプロダクトは、コードを通じて作り手の創造性を表現する舞台としての要素が高まります。結果、競争力の源泉として作り手のビジョンが重要、いわゆる詳細設計とコードが同時に書かれることも増え、ある種の即興劇としてのプログラミングが重要な時代になりました。特にスタートアップの初期であればあるほど、プロダクトオーナーである経営者が最初にコードを書くことが求められるなど、プロダクトマーケットフィットを実現しユーザに刺さるプロダクトが作れることの方が大切になります。

これはいわゆるユーザ体験 = ユーザエクスペリエンスが重要であるということを示しています。

そういう時代においては、ユーザのことを意識して、ユーザさんに喜んでいただけるプロダクトづくりをポジティブに進めなくてはいけません。

さて、ここまで技術力という言葉が一言もでていないことに気が付きましたか?

Webを支えるバックエンドの技術やフロントエンドの技術はとても重要です。技術の移り変わりも激しく、継続するWebサービスにとってはインターネットトレンドの変化に対して常に最前線でいるためには技術力が必要です。

ところが、その技術力で支えられるWebのプロダクトは、よりよいユーザ体験を実現してなんぼです。どんなに安定したシステムもユーザさんが使ってくださらないと存在する意味がありません。そして、そのプロダクトのユーザ体験は、その会社の文化や思想によって生み出されます。その会社のカルチャーやプロダクト思想に共感し、賛同した上で、高度な技術を使ってプロダクトを支えるわけです。

つまり、人物重視か、スキル重視か、というと生産性は掛け算になります。

アウトプットの生産性 = その人がポジティブに動けること x スキル

アウトプットを実現するためのスキルレベルは専門領域によって変わるので、スキルは役割を司るパラメータだと思ってもらうのが良いと思います。それに対して、その人の脳内物質がポジティブになっていなければ、その人がどんなに高いスキルを持っていても、よいアウトプットには恵まれません。

またソースコードを生み出すための労働生産性という視点では、知識労働者という人間のスペックに対して100%までが限界です。つまり、最速の開発を実現するためには、脳内の集中力と稼働率を100%に近づけることが理想です。そのためにも、作るものに対してネガティブ物質が脳内に分泌されてしまい余計な思考に邪魔されないことが大前提になると思います。

それ故に、エンジニアリングマネージャしかり、プロダクトマネージャやディレクターは、各メンバーが楽しくポジティブに働けるような環境つくりや、プロダクトの方向性を示していく必要がありますし、そこに共感可能な人材だけが、よいアウトプットを生み出すということになります。

厳格で真面目な人は「仕事」において「モチベーション」などというパラメータを持ち出すのはけしからんという人もいらっしゃるのですが、我々のプロダクトがユーザ体験を志向する限り、ユーザさんに寄り添ってプロダクトを作れなければエラー処理一つ取ってもイケてない実装になると思いますし、やはりポジティブなモチベーションは無視できないかなと思います。

もし、そこに期待できない場合は、エラー処理一つまで設計でガチガチに固めるしかなく、いわゆるウォーターフォール形式で開発せざるを得なくなるわけですが、Webのエンジニアがそれを嫌うのは皆様、御存知の通り。アジャイルとか様々な開発手法は提案されていると思いますが、その下地に、メンバーの高いモチベーションを生み出すことが大前提であるということは、あまり語られていません。

なので、冒頭の質問の回答をすると、

「もちろんスキルは必要だが、それよりも圧倒的に人物の方が重視、何が重視かというと作るものや我々のプロダクトの考え方に対するカルチャーフィットこそが重要」

という回答になると思います。我々の中では、「インターネットが好き」というのは1つの採用基準になっています。インターネットにつながるプロダクトに対する造詣が深いからこそ、ユーザに対してもコンピュータに対してもホスピタリティの高いプロダクトを作ることができ、結果としての工数最適化、手戻りの少なさにつながるわけです。