St_Hakky’s blog

心理学/人事/就活/留学/データサイエンス/バイオインフォマティクス/日頃思ったことについて書きます。

社会にも出てない大学生だけどITベンチャー企業の人事(採用)は難しいというのを痛感しているのでまとめた

こんにちは。

今日は、タイトルにある通りな話を書こうと思います。

◯お前は何か書ける程なにかしているのか

していません(笑)。一応人事っぽいことはしていますし、勉強はしていますが、こんなことは僕みたいなミーハー野郎が書くべきものでもないのですし、経験も浅すぎワロタです。

でも、とにかくむずいってことと、メンバーの協力を得ないとこれはどうしようもないんだということを痛感しているので、考えたこととかを書き止めておこうと思います。

一応僕がいま関わっているブロジェクトや眺めている採用とかの話をぼやかして書くと以下のような感じになります。

  • IT企業。技術の色が強い。
  • 人数は5人~30人くらいの小規模なベンチャー
  • 技術職系の人がトップ。その人の意見が強く出る組織構造。
  • とにかくプロダクトリリースがヤバイのでコードを書かないといけない。予算も無い。
  • 人事担当は兼務で技術系がやっているが、正直言って優先度が他のタスクとの兼ね合いでどうしても下げざるを得ない。
  • 正直技術職じゃないと求職者が何を言っているのかを把握することも難しい。

はい(笑)。良くありそうな構図かと思います。これについて色々最近思っていることを書きます。

◯この状況下における問題点

技術職系の人(以下、Aさんとします)、がまだ小さいベンチャー企業などのトップになると、どうしても次の構図が生まれているように感じます。

  • 会社のビジョン= Aさんの考え。
  • プロダクトリリース = Aさんの力が必要。
  • 金がないので、採用に長けていて且つ技術もわかってくれるみたいな超サイヤ人を雇えない。
  • 雇えたとしても、そんなエース級の社員が金もない状況の会社で採用という短期的には利益を生み出さないポジションに専属で置かせるわけにはいかない。
  • 予算の見通しが立たない中で、採用というものにどれくらいどう注力して良いのかわからないので、とりあえず後回しになる。

こんなシチュエーションがほかでもあるかもしれませんが、とにかく僕が感じてるので書きました(笑)。この状況で、大きな分かれ目になるのが以下のポイントかと思います。

  • Aさんは採用というものに重要性を感じているか。
  • Aさんはどれくらいマネジメントとかに興味があるか、出来るか。

技術トップあるあるですが、このあたりにどうしてもモチベーションを感じきれないみたいな人はやっぱりいると、なんかわかりませんが感じています(笑)。

IT企業みたいな特に固形のサービスを持たなかったり、「人材」というところで大きくサービスの成長スピードやサービスの質が左右されたりする企業では、「人の優秀さ及び企業のカルチャーへのフィットの度合い」というのが、会社やサービスの成長に関して最重要な案件かと思います。

ここで、上の2つのAさんに関する要件のところで、次の2つのシチュエーションが考えられます。

  • Aさんは採用や人材育成とかに興味もないし、特に取り組もうともしない。しかし、自由に色々させてくれない。
  • Aさんは興味があるないにかかわらず、採用や人材育成という観点において何かしらアクションを取る or 部下に取ってもらう or 部下がやることに寛容。

一つ目の方に関しては、もう会社として大きくなることは、よほどサービスがでかくなってその人の影響範囲が少なくなったり、仕事が分離できたりしないと無理なので、割りと諦めゾーンに入ると思います(笑)

二つ目の方はまだ希望はありますが、ここで重要なのは「採用に中心的に関わる人(ここではAさん or 任された部下)が、社内の技術についてある程度万遍なく理解でき、会社の成長戦略を踏まえた上で、サービスの成長に寄与できる形で採用広報などの戦略を打ち出せる強者かどうか」、というところかと思います。

ベンチャー企業の最初の採用戦略

ここで、最近僕が追えている範囲での、比較的小規模なベンチャー企業での採用戦略のパターンを2つあげたいと思います。

  • リファラル採用中心型:少数精鋭を基軸に、圧倒的玄人達で会社をまずは成長させる。
  • 新卒・インターンフル活用型:主に若い大学生などが利用ユーザーの中心になる企業が、サービスの広報と採用広報を混ぜ合わせて行う。

BtoBの企業は、ある程度の規模になるまでは、リファラルや中途採用を行っている企業の方が多い様に感じます(ってか絶対こっちのが良い)。

また、一般的な観点として、資金や労働力も少ないベンチャー企業では出来る限りサービスの広報と採用広報をミックスさせて行い、採用活動も広報として活動させるのが良いと思います。

ので、BtoCなどに準ずる形で若い大学生等もユーザー対象者に含めたサービスを行っている会社であれば、インターンなどを積極的に受け入れることで利用者の増加と採用の両方を行えるので、新卒採用やインターンなどを中心にして採用を設計するのが良いと思います。

これは、学生が比較的採用期間が短い(長くても1年とか)ことや、短期インターンなど学生ならではの特殊な接触機会があるから、学生相手には特に有効です(僕は学生ですが、インターンとかで会社を見れるのは普通に楽しいので、こういう意図があったとしても楽しいのでオッケーです笑。他の学生の方は知りませんが、、、汗)。

しかし、これがBtoB企業の場合だと、「技術優位性がある等の形で求職者の母集団にアプローチ出来るかどうか」が、もしリファラルなどの採用方法における力が弱い場合には、勝負の分かれ目になってくると思います。

これができるかどうかは正直会社の戦略にもよりますが、大抵は「採用にどれくらい重要性を感じているか」というところで問題が起きるような気がしています。

つまり、先程のAさんがどれくらい重要視しているかという点です。

正直言って、創業間もないベンチャー企業が求人サイトに普通に大企業と同じ立ち位置で投下して勝てるはずもありません。勝てるとしたら、どれくらい差別化を出来るかという点ですが、これについてはAさんがどれくらい頑張るかで変わってくるように感じています。

それを踏まえて、リファラルはするとして、「この状況下でどう良い人材をリファラル以外で採用するか」という点を考えたいと思います(ある程度まではリファラルでもイケルと思いますが、最後は求職者が応募してくる形にもっていかないと会社としてはスケールしないと思いますし)。

◯Aさんが中心にならないパターン

まず、Aさんが採用の中心にならないパターンを考えると、この場合「ぜったいに採用の中心は技術が分かる人」じゃないとダメだと思います。

しかし、ここで出てくるのは、以下の様な社内の状況だと思います。

  • 技術職やデザイナーは人事に興味が無い。コードが書きたい。デザインがしたい。
  • そういうポジションにあてがわれるのは大抵技術がわからない人事や総務などの人。

エンジニアやデザイナーがその業務をしたいorせざるを得ないというのは間違いなく、そして採用などの業務をしたいorするんじゃねという雰囲気が漂うのが人事や総務担当の人、という構図が普通かと思います。

でも、個人的に思っているのは、これがヤバイということです。理由はいくつかありますが、以下のところかと。

  • 採用する人が技術よくわからないので「人柄だけ」で採用するということ。
  • 採用した人の面倒を見る時間なんて無いので技術とか無いと技術職側等が文句を垂れる→雰囲気が悪くなる。
  • とはいえ、人事担当が技術を勉強する時間もない(一部ならまだしも、全体を把握しようとすると学習コストが高すぎて禿げる)。
  • 一次面接とかで採用の可否を判断するのが難しいため、技術者をあとで登場させるとかしても結局トータルでは時間がかかり、コストがかかる。

ここでの話は、インターンなどの短期でもないので、何日かしたらっていうことでもなく、普通に何ヶ月かを目安に採用していると考えてください。そうすると、小さいベンチャー企業などでは「育てる」という観点よりも「ある程度自分でできて勝手に育ってくれるか」が重要なので、カルチャーへのフィット感や人柄も大事ですが、スキルがあってからの議論にある程度なると思います。

そう考えると、この状況は「人柄のみで且つ良くもわからん状況でなんとなく採用している」状況なので、うわァァァあぁァァァァ!!!!!!って感じですよね(笑)

◯結論:もうAさんが頑張る or Aさんが「技術のわかる人事担当」を全面的にバックアップする姿勢を示すしか無い

最近の僕の結論は、Aさんが頑張るか、「技術のわかる人事担当」をAさんが全面的にバックアップする姿勢を示すしか、もう道が無いのではないかということです。

Aさんは立場的にCTOということになりますが、CTOが「技術のわかる奴が出ていかないと、採用は絶対失敗する。全員でやろう。」と言うのと、雰囲気が「人事って人事がやるんじゃないの?」的なのになっているところで、技術わからない人事担当が「全員でやらないといけないと思うんですけど、、、どうですかね、、、」というのでは、おそらくこの規模感の会社では、技術者たちに与える影響としては、全然威力が違うと思うからです(ちなみに、別に技術がわからない人事さんのことを悪く言っているのではなく、スキルのある人材を取ろうとするとどうしても技術者じゃないと難しいと言っているだけです)。

ただし、このAさんには前述の通り問題点がありました。そう、人事ばっかりやっているわけにもいかないということです。

なので、どうするのがいいかというのを考えていくと、以下のような感じが良いのではないか、というのが最近の僕の結論です。

  • 採用や組織の中心機能は、Aさん+人事や総務などのバックオフィス系の人(以下、Bさんとする)でダッグを組んで考える。
  • Aさんはとにかく何でも良いので、ベンチャー企業の採用に関するベースラインの知識を早急に獲得し、Bさんと議論が出来るようにし、技術的な立ち位置で会社をどうアピールするかや採用計画について「根っこから考えられなくてもいいので、とにかく意見を出せる」レベルになる。
  • 最終的な戦略の意思決定や説明の場には全員を参加させ、納得してもらう。
  • 実行は全社員で行い、この作業の負担に偏りが出ないようにする。
  • 振り返りやフィードバックをしあえる場を必ず用意する。

正直言っては何ですが、ベンチャー企業の採用なんて、中身ズタズタだと思います(笑)。

人物要件の設定、ペルソナの決定、それを基にした母集団形成の構築、選考の流れ、選考の記録の付け方、選考現場(面接など)に出る人たちへの教育、内定後フォロー、これら全てを会社の成長戦略と合わせて考え、広報と絡めて行う、そんなのを全部できる人たちがいたらもうマジすげぇと思います。

質問としてどんなことをやったらいいのか、メールでどんなことを伝えたら良いのか、求職者に提供する情報は何か、こういう小さいところでまず戸惑いは出てくると思いますし、設定した人物要件をどうやって見極めるんだとか、もう上げだすと霧が無いと思います。

その上、採用を専属で行う人とかもいないですし、採用の客観性を高めるために全員でやろうというをすると余計、この問題は表面化すると思います。

なので、もう求職者の人には本当に申し訳ないですが、精一杯努力はしますが、もうごめんなさいして、全員で面接でした質問や見極め方などをフィードバックしあって、しっかりPDCA回して徐々に改善していくしか方法はないと思います。

最初は色々あると思いますが、このあたりを最初からやっておくと自然と全員で採用に関わろうという雰囲気が出てきますし、そうすると「求職者に魅力的な会社になるにはまず会社の中身を変えるべきなんじゃないか」とかいう観点で建設的な意見が出てくるとかも起こってくるようになると思います。

こうなれば、会社全体の労働環境の質もあがりますし、例えばですが「会社情報とかを発信しよう」とかまぁそういう小さいですが中長期的に見れば確実に威力を発揮してくることとかにも意義をもって取り組んでくれると思うわけなんです。

非常にとりとめもない感じになってしまいましたが、「人事機能の中心機能の権限を技術者の最高責任者+人事で握ることと、人事機能の分権化の必要性」みたいなのを感じたので、まとめました(似たようなテーマでまた書くかも)。

それでは。

マーケット感覚を身につけよう---「これから何が売れるのか?」わかる人になる5つの方法を読んだ

こんにちは。

最近、本を貪っているのですが、今日は以下の本を読んだので、そのことについて書きます。

◯読んだ本

読んだ本は、以下の「マーケット感覚を身につけよう---「これから何が売れるのか?」わかる人になる5つの方法」という本。

別にこの本は関係ないんですが、最近「読書メーター」というサービスを使い始めました。これすっごく良いです。僕は同時に何個も読んでるので、たまに何を読んでたっけってなるんですが、これで解消されました(笑)。

他の人のコメントとかも見れるので良いです。この本のコメントは以下より見れます。

bookmeter.com

◯本の内容メモとか感想とか

この本では、「マーケット感覚=市場で取引される価値が何なのか理解できる能力」の重要性とその能力をどうやって身につけるかが様々な事例を基に紹介されていました。

重要性はいろんな例えもあり、「ふむふむ」と思って読んでいたのですが、その能力を結局どうやって身につけるかについては少し物足りなかったというのが読んだ後の感想でした(自分で考えろということかもしれませんが笑)

その中で、いくつか面白かったことがあったので、書いておこうと思います。

■インセンティブシステム

日本に限った話なのかは知りませんが、「Aという人がミスなどをした」場合に、「罰則やルール」で縛ることが多いと思います。

しかしこういったことが起きると、特定の個人がミスをしたものだが、大して全体には影響がでないものなのに余計な縛りができたりとか、個人の自由度が減ってやる気も損なわれたりとか、そういうデメリットが多く発生すると思います。

このあたりは、「嫌だなx」とか思いながら「でも仕方ないか」と片付けることが多いと思います。

しかし、こういったことが置きて、そのアクションを禁止したいときに、罰則で対応するのではなく、「あるアクションを取らないインセンティブを誘引する」ことをするというアプローチが事例とともに紹介されていました。

負のイベントが起きると、負のもので対処したくなと思うのですが、これを正の力で対処するというのは、凄く腑に落ちたので、自分も意識したいなと思った。

■プライシング能力を身につけるということ

最近某サービスの価格を考えるということがあったんですが、その際に「これは高いのか安いのかよくわからん」というのがありました。

その際に、「コスト」という観点から値段を考えるということをしてしまった部分があったんですが、これは間違いなのだそう。

コストから考えることよりも、「市場でどのように価値が認識されているか」が重要で、市場での価値が必ずしもコストと一致するとは限らないからです。次のような流れで考えていくと良いと有りました。

  1. 自分にとって、このサービスの価値はいくらか
  2. 他の誰かにとって、このサービスの価値はいくらか
  3. そのまた別の誰かにとってこのサービスの価値はいくらか
  4. このサービスを最もt高く評価する人はどのような人たちか
  5. このサービスを誰に向けて売れば価格は一番高く出来るか

ここであげている「誰」という部分が一番大事で、価値はユーザーによって変わるということです。この件に関してはクーポンの例えが分かりやすかったです。

僕はクーポンをよっぽどでなければ、めんどくさがって受取もしないし使いもしないんですが、クーポンを意識的に探したり、使ったりしている人も多いと思います。何が違うかと考えると、クーポンを使うユーザー層と、これを使わないユーザー層では明らかに価値観が違うということです。

こういった価値観の違うユーザーを取り込むには、違う価値を提供すれば良くて、その意味でクーポンとかは同じ商品で違う価値を提供できるということで、ユーザー層の幅を広く取れるということなんだな、と。

これは凄い勉強になりました。

■速くプロダクトを出して、反応を見ながら修正する

失敗をより多く経験するには、いち早く世に出す事、そして市場からの評価を受けることが大事だと書いてありました。

■成長するためには、失敗を出来る限りする

上のプロダクトを速く出すというところにもつながるのですが、速く成長するためには市場にアウトプットを出してその中で勉強していくということが大事だと書かれていました。

僕は情報系の学生ですが、たしかに企業とかで実際にプロダクトのコードを書いた人のほうが、学校でしか勉強していない学生よりも圧倒的にコードも書ける人多いですし、これはそういうことかもしれません(実際見ている観点もやっていることも全然レベル感違ってきますし)。

色々失敗できて、フィードバックももらえた方が、より速く成長できるとあって、これはたしかにそうだなぁと思いました。

こんな感じで。あっ、ちなみに自分なりに落とし込んだ過程で変えたので、ちょっと使っている言葉が本と違うかもしれませんが、意味的には同じだと思いますので、ご勘弁を(笑)。

それでは。

Ubuntu 16.04でDocker CEをインストールしてNVIDIA DriverとNVIDIA Dockerを入れるまでやった作業メモ

こんにちは。

今日は研究でGPUを使うことになったので、Dockerでやるかと思い、この記事を作業メモとして残す意味を込めて書こうと思います。

○なぜDockerでGPUを動かすのか

  • ガチでやると設定が面倒な記憶しかない。
  • ミスって時間を潰している人生の余裕がない。

○環境

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"

Docker CEのインストール

○公式ドキュメント

最新情報をやるためにうも、公式ドキュメントを読んだほうがいいです。

docs.docker.com

○Prerequisites

Ubuntuの要件はかわっているかもしれませんが、Ubuntuの16を使っている人は、以下の要件を満たす必要があります。

64bitじゃないと行けないンゴです。

○Dockerのインストール

■Update the apt package index
sudo apt-get update
■Install packages to allow apt to use a repository over HTTPS:
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
■Add Docker’s official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

key fingerprintが「9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88」であることを確認します。

sudo apt-key fingerprint 0EBFCD88
■install stable docker ce

今回は、「x86_64」の環境なので、以下のコマンドを使用して、まずはstableなレポジトリをセットアップします。他の環境を使用する場合は公式ドキュメントを参照すること。

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

正直にいうと上のコマンドでは僕はなんかうまくいかなかったので、「$(lsb_release -cs)」を普通にターミナル上から動かして、その出力結果を代わりに入れました。そしたら動きました。

その後、Docker CEをインストールします。

sudo apt-get update
sudo apt-get install docker-ce

○Dockerがインストールされたかどうかの確認

sudo docker run hello-world

NVIDIAのDriverインストール

○手動でドライバをインストール

以下のページから手動でダウンロードして、インストールしていく。

Download Drivers | NVIDIA

これは、もしかしたらいらないかもしれないが、僕はこれをインストールしてやったので、一応書いておきます。

# lightdmを止める
sudo systemctl stop lightdm

これで、ディスプレイが消えるので、仮想コンソールから実行するために「Ctrl + Alt + F1」を入力する。

入力したあとに、もしnvidia-dockerを先にインストールしていた人は、こちらも実行します。ちなみに、僕はこれで若干はまりました(笑)

sudo systemctl stop nvidia-docker

ダウンロードしたnvidiaのドライバを実行する。

cd /path/to/download/directory
chmod +x NVIDIA-Linux-x86_64-384.69.run
sudo ./NVIDIA-Linux-x86_64-384.69.run

実行したら、画面に出てくる質問に適当に答えてインストールをしていきます。インストール後、再起動します。

sudo reboot

"Proprietary GPU Drivers" PPAに存在するドライバをapt-getでインストール

こちらを参考にさせていただきました。

# リポジトリを追加、アップデート
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

# インストール可能なドライバ一覧を取得
sudo apt-cache search nvidia-\d+

# ドライバをインストール。今回は手動でインストールしたドライバと同じものをいれた。
sudo apt-get install nvidia-384

# reboot
sudo reboot

NVIDIA Docker

○公式ドキュメント

公式ドキュメントを読みましょう。

github.com

○Install

以下のコマンドを実行するのみ。

wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb

ちゃんとNVIDIA Dockerがenableになっているかの確認は以下の通り。

systemctl is-enabled nvidia-docker

○動作確認

以下のコマンドから、動作確認を行います。

nvidia-docker run --rm nvidia/cuda nvidia-smi

nvidia-modprobeがインストールされてないっぽい。

本来であれば動作確認コマンドを実行して、「はい、これでおわり」となるのですが、僕の場合は、以下のようなエラーがでました。

Error: Could not load UVM kernel module. Is nvidia-modprobe installed?

なので、以下のコマンドでインストールします。

sudo apt-get install nvidia-modprobe

その後、テスト実行をしてみます。

nvidia-docker run --rm nvidia/cuda nvidia-smi


これでうまく行けば実行できているはずです。

これで環境が整いました。まぁ、結構はまりましたね、、、。

「DIET NETWORKS: THIN PARAMETERS FOR FAT GENOMICS」の論文を読んだ

こんにちは。

今日は別の研究室とうちの研究室で合同でやっているDeepLearning勉強会があり、そこで「DIET NETWORKS: THIN PARAMETERS FOR FAT GENOMICS」の論文について発表したので、その際に作った発表資料とかメモとかを投稿しようと思います。

概要とか途中はしょった部分とかもあるので、詳細を知りたい人とかはきちんと論文を読むことをおすすめします。

本論文を読む前に

読む前に知っておきたい情報はいくつかあるので、それについて書きました。

◯DeepLearningの基本的な知識

まぁ、この論文を読もうとしている人がCNNやRNNについて知らなかったり、Autoencoderについて知らないとかは無いと思いますが、普通にある前提で話が進みます。

Webpackを使う関係で勉強しましたのでまとめる[随時更新]

こんにちは。

Webpackをガリガリ使うようなプロジェクトにかかわる事になったので、勉強しました。そのメモです。

〇環境

  • Centos7, 64bit

〇本家のサイト

正直、こういうの勉強するときに英語さえ読めれば本家のサイトをめんどくさいけど読んだ方が最終的には早いような気がしている(笑)。

以下のサイトがたぶん一番最初に読むとよさげなものとして本系のサイトでも紹介されていた。わかりやすかったけど、僕は最初日本語の記事をとりあえず20本くらい流し読みしていたので、それもあるのかもしれない笑。

〇Webpackとは

僕なんかが改めて説明する必要がないくらいにはいろんなサイトで先人たちが圧倒的解説を繰り広げているので、そちらを参照されたし(逃げ)。

〇Basic Setup

とりあえず適当な開発環境のディレクトリ下で以下のコマンドをうちます。

mkdir some-development-dir
cd some-development-dir
npm init -y
npm install --save-dev webpack

グローバルでwebpackをインストールしたい時は以下のコマンドを入力します。

npm install -g webpack


プロジェクトのルートディレクトリから、以下のコマンドを打ち込むことで、bundle.jsファイルを作ることができます。

./node_modules/.bin/webpack src/index.js dist/bundle.js

〇Configuration file

大体のプロジェクトでは少し複雑になりますし、これを設定ファイルとして効率的にしておきたいです。これを実現するのがconfiguration fileです。

これを実現するために、プロジェクトのルートに、webpack.config.jsファイルを作成します。例えば以下のような感じ。この例は本家のこちらのサイトから引用した。

const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  }
};

これについては参考文献の方に詳しい説明があるので、そちらを参照されたし。

〇NPM Scripts

たぶん、全人類が「そんなローカルのwebpackのコマンドを毎回ブチ込みたくない」という気持ちでいっぱいだと思います。これは、簡単に実行できるようにすることができます。

まず、package.jsonファイルを以下のようにいじります。

{
  ...
  "scripts": {
    "webpack-build": "webpack"
  },
  ...
}

こうすると、以下のコマンドを入れることによって、前に実行していた長いwebpackのコマンドを実行することができるようになります。

npm run webpack-build

また何かあれば追記します。それでは。