seri::diary

日常

今回の転職活動の雑感

はじめに

2021年10月から2022年2月にかけて転職活動をしていた.

今回の転職ではいつもと違い10社近くのカジュアル面談を受け6社に応募した. また,珍しく採用に関するwebサービスを使用したり,初めてCoding test対策を行ったりもした.その雑感をまとめておく.

転職活動の結果

10社ぐらいカジュアル面談という形でお話を聞かせていただき,6社選考に進んで4社からオファーをいただいた.

どれもいいポジションだったので非常に悩んだのだが,以下の2軸に基づいて判断した.

  • 今後5年後ぐらいに自分がなっていたい姿から逆算して最適なポジションであるかどうか
  • オファー内容のポジションに納得できるかどうか

転職活動中に関わったみなさまにはお礼申し上げます.

希望したポジション

今回自分は以下のようなポジションを探していた.

  • Softwareでのビジネスをメインとしている企業での勤務
  • ICとして主にBackendに関わる
  • People managementは入社後も行わない
  • 大規模なBackendシステムに関われる
  • 大量ユーザ,データ,トラフィックのいずれかの要素を持つサービスに関われる
  • Microservice architectureを採用しているもしくは移行の予定がある

キャリアパスとして今後5年間はICでいたかった.5年という期間に深い意味はないが,単純に今やりたいことと技術的に伸ばしたいことを全てやり終えるには少なくとも5年間は必要だろうという見積だったのでそのように区切った*1.その後はもしかしたらPeople managementをしているかも知れないし,Backend以外の分野で引き続きICとして働き続けるかも知れない.その時になったらその時点の状況を考慮して考えればいいと思っている.

ともかく「入社したら5年間はこいつに何らかのManagement roleではなくICをやらせておいても良い」と判断してくれる企業を求めていた.そのため「最初はICでもいいが,いずれは必ずPeople managementを伴うEngineering managerへの転向を求める」という方針の企業は一切選考に進まなかった.

転職のために使用した採用媒体

いつもは採用媒体は使わず直接応募するのだが,今回は広く可能性を探ってみようと思い転職ドラフトYOUTRUST を使ってみた.

ただ,結論から言うと結果的にはこれらのサービスで得たオファーはすべて辞退してしまい,結局いつものように直接応募した企業からもらったオファーにサインする結果となった.とはいえ,せっかくなのでそれぞれのサービスを使ってみた感想を以下にまとめてみる.

転職ドラフト

感想としては一番最初のカジュアル面談の段階で企業側と報酬の話ができるのがとても良かった.

転職活動ではある程度選考が進んでから条件面の話をするのが日本だと一般的だと思うのだが,過去に最終面接直前で条件面のミスマッチが発覚したことが何度かあった.そういう経緯もあって,今回は最初から条件面を合意した上で選考に進められる転職ドラフトを使ってみたのだが,これが思った以上に良かった.選考に進むかどうかの判断をする上でも条件面は重要なのでその点を最初にクリアにできるのはとても安心感があった *2

また,「企業側はスカウトする段階で報酬を提示しなければならない」という制約により企業側は必然的に候補者のレジュメを精読することになると思われるが,そのおかげか転職ドラフト経由でのカジュアル面談はとてもスムーズだった.もしこれが狙い通りならば,企業側と候補者の双方の利益につながる良く出来た仕組みだと感じた.

あと,最後に転職ドラフトに登録してみたのはもうかなり前,6年近く前だと記憶しているが,その頃はオファー金額が500-600万円程度の案件が多いように記憶していた.しかい今回は普通に1000万円超えの案件があり,候補者のランキングを見てもそれぐらいのオファーをもらってる候補者は少なからず存在しているようだったので全体的に相場が上がっているようだった.なので今の転職ドラフトはjunior classだけでなくsenior classのSWEの転職活動にも使えるレベルになってきていると感じた.

結果的には転職ドラフト経由で選考を受けた企業は全て選考を途中辞退するかオファーを断ってしまったのだが,報酬が重要な要素になる転職では使ってみると良いのではないかと思った.

YOURTRUST

日本版LinkedInといった感じで,転職意向のステータスを変更するとそれが企業の採用担当者に通知され,プロフィールを見た企業からスカウトがやってくるという感じである.YOURTRUSTを利用しているユーザ層が主にスタートアップに関心が強いユーザが多いのか,もらったスカウトメールも多くがスタートアップからのものだった.

自分が知らなかったスタートアップから多くスカウトメールをもらったので「こんなサービスがあったのね」と勉強にはなったが,今回希望していたポジションに近いものが無かったため選考へは至らなかった.今回はガチガチのearly stageのスタートアップは転職先としてはあまり想定していなかったのでそもそもミスマッチだったかという事情もある.

今回の転職活動での気付き

Coding testは対策が必須である

選考を受けた6社中3社で事前にオンラインでのCoding testがあった.難易度は初見で解ける簡単なものから,ある程度競プロをやってないと解けないだろうなというのものまで様々だった.自分はオンラインですぐ採点結果が明らかになるものについてはすべて満点だった*3.満点じゃないと選考をパスできないのかどうかはわからないが,点数を取れるのなら取れるにこしたことはない.

自分の過去の転職ではCoding testには苦い思い出しかなかった.例えば,設問について質問した結果,面接官から「そんなことも知らないのか」「そんなこと聞いて良い訳がないだろ」みたいな反応をされて険悪な空気になったり,うーむうーむと悩んでいる自分と苦々しい顔をしてその様子を眺める面接官という何とも言えない空気に逃げ出したくなったりした.当然ながらほとんどCoding testに受かったことがない.恥ずかしながら,過去に内定をもらった企業はすべて選考にCoding testを課さない企業ばかりであった *4

そういったこともあってCoding testには軽くトラウマがあり,今回ばかりは何としても突破するために選考を受ける前に2ヶ月ぐらいかけて対策した. 対策といっても基本的にLeetCodeの問題を解いただけである *5.以前も趣味で少し解いていたが,今回はまずEasyを100問ぐらい解いて問題に慣れてから実戦用としてMediumを100問ぐらい解いた.解いた,といってもMediumになると初見で完答できない問題の方が多かったので,そういった問題についてはDiscussionを読んで考察した上で自分で回答を書いたり解けなかった理由をまとめたりする作業がメインだった.Discussionを読んでもすぐには理解できず数時間をかけた問題もあったりした.なので1日に1問しか進められない日もあった.

また,競プロの基礎的な定番問題の復習としてアルゴ式の問題も解いた.特にDPは苦手だったので改めて勉強することで理解が深まり実装の自信もついた.

algo-method.com

あとは解法を丸暗記しないと無理だと判断した難問については実装をゼロから書く練習を繰り返したりもした *6.ちなみにHardレベルの問題は出題されたら諦めることにしてMediumレベル以下の問題で点を稼ぐ作戦とした *7

解けなかった問題は自分なりに考察を書いてesaにまとめていた

他の対策として,今回はCoding testに使う言語をこれまで競プロで使っていたC++からPythonに変更した.Pythonはそこまで得意な言語という訳でもなかったが,C++に比べると記述量が少なく済むため補完が一切効かない上に独自キーバインドのオンラインエディタ上でも書きやすいのと,最近はPythonで競プロの問題を解説してくれるブログも増えて勉強しやすくなっていた為である.

これらの対策をした結果Coding testで落ちることは無かったので,対策した成果は出たと思う.以前は雰囲気で書いていたPythonもLeetCodeやHackerrankなどのオンラインエディタ上でも何も見ずにかなり書けるようになったし,普段業務で書くコードの時間および空間計算量に以前よりも敏感になった気がする.

また,先人達の以下の記事も参考にさせてもらった.

qiita.com 1kohei1.com en9.hatenablog.com en9.hatenablog.com zenn.dev ichi.pro

System design interviewも準備しておいた方がいいが業務経験があればそこまでビビる必要はない

System design interview(もしくはそれに類する試験)が3社で行われた.だが,これについては大した対策はしていなかった.以下の本を一通り読んで問題の傾向や気をつけるべき点を確認した程度で,あとはぶっつけ本番で何とかなった.

この本で繰り返し強調されていた候補者向けのアドバイスは,「System design interviewは候補者がリードしなければならない」という点だった.候補者が議論をリードして面接官に積極的に質問をしながらすすめる事が重要であると書かれており,この辺は実際に意識して行った.時間配分も,普通の面接なら面接官がやってくれるところをSystem design interviewの場合は候補者に委ねられるケースがある書かれていたので,自分もその記述に従って最初に試験時間を尋ねて時間の使い方を決めて宣言するところから始めた.

他にもBack of the Envelope Calculation *8をやれとか色々と面接テクニックが書かれていたが,基本的には自分が普段業務でやっているdiscussionをやれば良いのだと判断して特に気負わずにいつもどおりにやった *9

6社同時に受けると毎日のように面接がある

一番忙しかった時は1日に面接を2回ハシゴした日もあり,かなり多忙になってしまったため受ける社数を減らすか面接の時期をずらした方が良かったと反省している *10

ただ,オファーレターの期限は一般にそこまで長く無いので日程をずらしすぎると泣く泣くオファーを断らなければならなくなる可能性もあり難しい所である.無職になっていれば無理が効いたのだろうが,無職になってから転職活動をするほど度胸がなかったため,急いで業務を片付けて早めに仕事を切り上げたり朝の9:00から面接を入れてもらったりして何とか調整した.現在は自宅でリモートワークなので仕事を終えた5分後に面接を受けたりすることも出来たので助かったが,これが普通にオフィスに通勤してたらこういう受け方は無理だっただろうなと思う.

希望年収は自分に嘘をつかずに伝えた方が良い

今回受けた企業はどれも選考の早い段階で希望年収について質問された.これまでの転職ではなかったことだったので少し驚いたが,素直に現職での金額と自分が欲しい金額を伝えた.その結果として,一社を除き希望年収よりも高い金額でオファーを出してくれた.多少年収が下がっても仕事にやりがいがあれば良いと考える人もいるかも知れないが,過去に未練を残したくなかったので前職の給与以下のオファーは一切受けないつもりだった.それで条件に合うオファーが出なければ自分の実力不足と割り切るつもりだった.

マネージャーやリーダーの経験がないと判断されるとマイナス評価につながる会社が存在する

自分は過去にtech leadやteam leaderといった肩書がついたことは一度もない.それでも,過去には設計をまるっと全部やったり,project manager達とスケジュールについて調整したりといった仕事は必要に応じて(つまり他にやる人がいない状態なら)自然とやっていたし,自分が主導して社内の複数の部署の人にかけあってプロジェクトを手伝ってもらったことは過去に数回ある.これらの振る舞いはベンチャーに勤務するSWEとしては当然やるべきことだと思っていたし,特にアピールすることもないかなと思ってこちらからは聞かれない限り言わなかったりした.

しかし,それがマイナスに働き,他社のオファーの中で一番低い金額となった企業があった.事前に伝えいてた希望給与よりも低かったので,オファー面談時にそうなった理由を尋ねた所,上述のようなリード経験がないと判断したためだったと回答があった.リード経験の有無なんて面接中に一度も質問されていないのだが,職務経歴書に明示的に書かなかった自分が悪いということで今後の反省としたい *11

自分の評価は企業によって差が大きい

前述のような結果となった企業があった一方で,オファーをもらった他の3社からはProjectのリードや技術面でTeamのリードが出来るICのSWEとして評価していただいたようだった.前述の一社の評価の件で若干凹んでいたのだが,割合で言えば高く評価してもらった企業の方が多かったので救われた気持ちであった.ちなみにオファー金額は最低金額と最高金額とで400万円ぐらいの差があった.

オファー内容は,面接官のスキル,面接官との相性,面接時の会話の流れ,自分の自己PRスキル,その会社の人事評価制度などの多くの要素が関係してくるため,数をこなしてみないとうまくいくかどうか全く分からないなと感じた.オファーが出るかどうか,自分にとって良いオファーが得られるかどうかは上述のような自分で制御できない要素にも依存しているため,自分が制御できる要素を使って最善を尽くすしかない.そう考えるのが精神衛生上良さそうだという結論になった.

過去には同時に1社か2社しか選考を受けずに転職していたが,実際にはかなり危ない橋を渡ってきたのだなと今にして思う. 今までは自分の自己評価はかなり低く,オファーが出ると熟慮せずに快諾してしまう傾向があった.今回複数の企業を同時に受けてみたことで,この行動はかなりリスクが高いものだったと実感した.

いずれにせよ,今回の転職で『自分はそれなりに評価してもらえるSWEなのだ』という自信が得られた.この事実だけでも苦労して複数社を同時に受けただけの価値はあったと思う.自分は馬鹿だからやってみなければ何事もわからないのだ.生涯勉強である.

おわりに

今回の転職活動はポツポツとカジュアル面談を受け始めた頃から数えると約5ヶ月に及ぶ長期戦となった.

この5ヶ月間誰にも打ち明けずに1人の力だけで乗り切らなければならなかったため,精神的に厳しい時もあったが,結果的には納得できるオファーを得られたので苦労の甲斐があったのではないかと考える.

転職ドラフトは思っていた以上に体験が良かったので,最初に条件面でのマッチングをクリアしておきたい人にはぜひともおすすめしておきたい.Juniorクラス向けの500万-600万円ぐらいのポジションが多い印象だったが1,000万円超えのポジションも普通に来たのでSeniorクラス以上の転職でも使えるのではないかと思う.YOURTRUSTはEarly stageのスタートアップの採用担当者から直接お声がけをいただけたのでEarly stageのスタートアップへの転職を強く検討している人に向いてそうである.

この記事が誰かの転職活動の参考になれば幸いである.

*1:People managementをしたくない理由は単純に今やりたくないからと,仮に今People mangementをやり始めたら自分で手を動かす時間が減ってストレスになるのは目に見えていたため.

*2:普通にカジュアル面談に申し込んでいきなり報酬の話をするのって結構ハードル高い気がしてるんだけど自分だけだろうか

*3:すぐに結果が分からないものについてはサンプルケースと自分で考えたテストケースが全て通ることを確認して提出した

*4:全然関係ないけど新卒の面接のグループディスカッションでも候補者にガチ議論をしかけた結果落ちまくって,結局グループディスカッションがない企業から内定をもらってそこに入社した思い出がある

*5:LeetCodeを使ったCoding test対策の是非についてはここでは議論しない.なお今回の転職活動中に「これまんまLeetCodeで見たやつだ!」という問題には1問も遭遇しなかった.

*6:Linked Listのmerge sortの実装とかを繰り返し練習したがちょっとやりすぎた感もあった.GAFAレベルの外資を受けるんなら必要だったんだろうけど.

*7:もちろんHardクラスの問題が解けないせいで一発アウトという事態もあり得たが,Hardまで完璧に対策しようと思ったら働きながらだと半年コースになりそうだったので諦めた.

*8:ストレージのサイズとかネットワークのトラフィックなどのちょっと計算すれば分かる非機能要件を手計算で求めること

*9:この本自体はSWEとしての業務経験がない人がSystem design interviewを突破するための対策本という位置づけなんだろうなという気がした.普通にSWEとして業務してれば「そんなの普段からやってるじゃん」みたいなことが面接用のテクニックとして色々書かれていた.

*10:面接を受けた翌日に自社の面接官をしている時もあって不思議な気持ちになった.

*11:ただ「tech leadやteam leaderの肩書じゃなかったけどそういうmoveを自然とやってました」みたいなのが選考する側にリード経験として認められるかどうかは不明.こういうの,どうせ選考する側のさじ加減なのであまり真面目に考えない方が精神衛生上いいかも知れない.単に受ける企業の評価制度と自分のキャリアの相性の問題のような気もする.