fu3ak1's tech days

何事もシンプルに。主にAWS関連の記事を書いています

転職活動の記録〜クラウドと英語〜

2023年8月で新卒から約13年半勤めたSIerを退職します。関係者の方々、本当にお世話になりました。

9月から新しい職場で働くのですが、転職活動が初めてということもあり、色々と試行錯誤しながら進めたのでここにまとめたいと思います。 なお、具体的な企業名やそのプロセス、オファー条件はここには記載しません。企業名、特に前職は色々調べるとわかる情報なのですが、企業名で検索してこの記事が出てくるのもちょっと違う気がするのであえて書いておりません。

転職に向けてどう準備、活動したかにフォーカスして書こうと思うので何かしら参考になれば幸いです。

自己紹介、私の経験値

クラウドアーキテクトとして、お客様のクラウド導入支援を行っていました。AWSがほとんどで、Google Cloudもたまに触るくらいです。Webシステムのインフラ設計、構築をやることが多かったです。IaC書いて構築したり、設計書書いたり、AWSアカウトのセキュリティ・ガバナンス設定やったりとそんな感じです。社内のメンバー育成、採用、アライアンスリードなんかもやっており社内のクラウドに関わるところはひととおりやっていました。幅広くやっていましたが、逆に言うと、1つのプロダクトや技術に責任を持って徹底的に開発、改善するといった機会も無かったと思います。

クラウドを本格的に使用することになったのは2019年以降で、それまではオンプレミスのインフラ構築をメインにやりつつ、たまにバックエンドのコードを書いたりして活動していました。

業務外では、AWS Ambassadorsに選ばれてそこで活動していたり、AWSに関する本もいくつか執筆しています。なおAWS Ambassadorは退職に伴い卒業です。

なぜ転職するのか

好きなクラウドをたくさん使用してそこには満足していたのですが、クラウドを使用しつつ、英語を使ってグローバルに活動したくなり、転職活動を始めました。

業務内は関係者全て日本人でドメスティックなのですが、AWSのコミュニティの中で、海外の方々と交流する機会があり、その中で日本の話をする機会が何度かありました。そこで持った私の感想は、みんな思ったより日本に興味があるというものです。日本は(主にクラウド活用の点で)進んでるねと言われたり、たくさん資格持っててすごいねとか、興味津々に聞いてくれる感じは少し衝撃でした。そんな経験から、日本って素晴らしい技術やカルチャーがあるのに、言語が日本語(=英語情報が無い)って理由であまり世界に知られてない?と思うようになりました。

自分自身の英語力についても、少しずつ自信も付くようになりました。そこまで英語力が高いわけではないのですが、ノンネイティブの方とであれば割と苦労せずにコミュニケーションが取れるくらいの会話力はあります。英語ネイティブな国に行ったら「英語あまり喋れない人」に分類されますが、日本にいるとこれが「英語できる人」に分類されるというのが正直な印象です。技術力が優秀な日本のエンジニアが英会話でタジタジな姿を見て、「あれ俺これなら割としゃべれる方かも・・?」と謎の自信を付けた経験もあります。正直これは自信ではなく過信の可能性もありますが、まぁそれぐらいの強い気持ちで良いのかなとも思ってます。

こんな経験から、クラウド活用は継続しつつ、日本の技術を世界へアピールできるような活動、組織内もグローバルで色々な考えから刺激をもらえる環境、自分の英語力も伸ばせる環境に興味を持ち、転職活動を始めました。

企業探し

クラウド×グローバルという観点で企業探しを始めました。 外の企業をあまり知らない、英語とクラウド知識を幅広く活用といったポジションが少ない、といった理由で候補となる企業は多く見つかりませんでした。

転職動機についても、具体的に行きたい会社や業界は決まっておらず、正直ふわっとしてるよな・・と自覚もしております。同年代でやりたいことはこれだ!と見つけてスタートアップに転職している方を見て羨ましく思ったものです。

また、前職でもそれなりの給料をいただいており、それをそのまま希望年収として出すことでハードルとなってしまうパターンもありました。私自身年収UPにそこまでモチベーションがあるわけではないですが、子供・家庭があることもあり簡単に収入は落とせないという背景もありました。

企業探しに使用したものは以下のとおりです。

結果的にはLinkedinを一番多く使用しました。理由は単純で英語の求人情報やメッセージが一番多かったからです。

Linkedinは、公開設定で転職興味があることを通知できます。私は「採用担当者のみ」に設定していましたが、それだけでもメッセージ量は増えました。

企業を探すという段階では、色々なサービスに登録すると良いかと思います。

色々と調べたり、エージェント面談、カジュアル面談をする中でいくつか応募したいという企業が見つかりました。そんな中でエージェントさんから聞いたのが、「この企業は最初に簡単なアルゴリズムかコーディングの試験がありますね〜」というものでした。

ほほぅ・・・。簡単という言葉が入っていましたが私にとって簡単ではないことはすぐにわかりました。この時点ではどんな感じの試験が想像も付かなかったので時間を取って色々調べてみることにしました。

選考準備

どうやらSoftware Engineerの選考ではライブコーディングをやるというが普通ということがわかってきました。私の希望ポジション的にはガッツリなコーディング試験も無さそうだったのですが、良い機会だと思い色々見てみることにしました。やったことを書いていきます。

読んだ本

いくつか読みました。本の知識をそのまま選考に活かすということは私の場合少なかったのですが、エンジニアとしてとても面白い本ばかりでした。

問題解決力を鍛える!アルゴリズムとデータ構造

アルゴリズムってなんだったっけ?状態だったのでこちらから。代表的なアルゴリズムがわかりやすく紹介されており入門として良かったです。計算量やオーダー記法の説明もあります。

データ指向アプリケーションデザイン

転職活動でこれを読んでいるという方の記事を複数見つけたので読みました。良本でした。複雑化するデータをどう扱うかという観点で色々な技術の仕組みが紹介されています。Twitter(現X)のホーム画面の仕組みや、AWSのAuroraやRedshiftの紹介など、読んでいて面白い内容が多かったです。

ただ、分厚いです。600ページ超。値段と物理的な大きさに少しひよった私は、図書館でこの本を見つけ借りました。2週間という期限があったので業務の空き時間で頑張って読み切りました。正直時間の関係で理解を深めずに読み飛ばしたところも多いので、またどこかでちゃんと読みたいです。こういった良本が図書館で無料で借りれるとは申し訳ないくらい素晴らしい仕組みですね。

時間が無いぜ!って方はまずこちらの動画を見てみるのが良いと思います。監訳された方がわかりやすく30分でまとめて説明してくれています。

www.youtube.com

[試して理解]Linuxのしくみ

後述するTechnical Interview(技術面接)で出てきそうなトピックだったので購入しました。こちらも良本でした。普段からLinuxやコンテナを触っている(≒Dockerfile書くくらい)のですが、なんとなく雰囲気で触っている部分も多いというのを痛感しました。Resumeに書く技術については、中身も含め理解しブラックボックスにしないというのが重要かと思います。

システム設計の面接試験

元々英語版であった本ですが、日本語版が発売されたタイミングで買いました。発売日はすでに選考が始まっていたので、一気読みしました。

自分の業務でもよく使うデータベースやキャッシュ、CDNなどの仕組みの紹介、それらを使用して実際のシステムをどう設計するかの紹介があり、読んでて面白かったです。面接対策として読んでいる感じはあまり無かったです。

世界で闘うプログラミング力を鍛える本 コーディング面接189問とその解法

Kindle版がセールになっていたのでそのタイミングで買いました。こちらも買ったタイミングが選考の後半戦だったので、半分くらいしか読めませんでした。ライブコーディングをたくさん受けるのであれば、こちらの本と後述するLeetCodeを徹底的にやった方が良いかと思います。

LeetCode

コーディング試験対策の定番ですね。私も漏れなく実施しました。正直言うと私はガッツリライブコーディングをやるという面接は無かったのですが、それでも面接中に「このコードのアウトプットは?」とか、Home Assignment(宿題)でコードを書いたりしたので、やっといて良かったなと思ってます。

私はトータルで40問ほど解きました。Backend Engineerなどの方からすると少ないなーというレベルでしょうが、それでも以下のような感覚は得られたのでやって良かったなと思います。

  • 知らない記法を色々と知れた
  • コードを書く瞬発力が上がった(気がする・・)
  • 計算量を意識するようになる

私はPython3で解いていました。

Technical Interview(技術面接)対策

コーディング以外の技術面接についてです。最初は何が聞かれるのかわからなかったのですが、調べるとシステム一般的な知識が問われることも多いということがわかりました。

以下のような想定質問を用意して、英語で答えられるよう準備しておきました。普段一般的に使っている技術領域であっても、それを説明しろとなるとうまく言えない場合も多いですからね。

  • What is the difference between containers and VMs?
  • What will happen when you open "https://example.com" in a browser?
  • What is ACID?
  • What is NoSQL?
  • What is the difference between TCP and UDP?

Behavioral Interview(行動面接)対策

色々なシチュエーションで、どのような行動をしたか、対処をしたか、が問われるインタビューです。HR(人事)担当や、マネージャとインタビューをする場合はこのパターンが多いかと思います。 ここは何か新しい知識を身につけるというより、過去の自分の経験を振り返って想定質問に準備するということをやっていました。

質問はパッと思いつかなかったのでChatGPTに作ってもらいました。以下のような感じです。

  • Can you tell me about a time when you had to handle a difficult team member? How did you approach the situation, and what was the outcome?
  • Describe a situation where you had to learn a new technology or programming language quickly. How did you manage it, and how did it impact your work?
  • Can you share an instance when you had to explain a complex technical concept to a non-technical audience? How did you ensure they understood?

自分が経験してプロジェクトにおいて、何が大変だったのか、大変だったことに対してどういう行動を取ったのかというのを振り返るのが大事だと思います。

あと、回答はSTARメソッドでお願いしますと企業側から言われることも多いです。簡単に言うと「Situation :状況」「Task:課題」「Action:行動」「Result:結果」の順番で話す方法です。ここはYoutubeやChatGPTでもサンプルな回答方法が色々と出てくるので調べてみると良いと思います。一番大事なのは話し方ではなく、自分の経験をしっかり話すというところなのでそこは注意ですね。

企業研究

ここは割と当たり前の話ですが、なぜその企業なのか、なぜそのポジションなのか、今までの経験がそのポジションでどう活かせるのか、あたりはきちんと説明できるよう準備していました。

選考

準備をしながら応募したいと思える企業がいくつか見つかったので選考に進みました。よくある書類選考や面接とは違うパターンの選考もあったので紹介します。転職に慣れている方?には一般的かもしれません。

Home Assignment

呼び方は企業によって様々かと思いますが、1−2週間ほどで技術的な成果物を構築して提出する形式の選考です。私は2社ほどこの形式で受けました。クラウドを使用するポジションだったので、あるお題に対してIaCを使ってGit形式でソースコードを提出してくださいといったものでした。正直業務も忙しい時期だったので、時間を取るのに苦労しました。業務後の夜に頑張って作っていました。自分自身はコードだけでなくドキュメントもたくさん書いてきた人間なので、非機能要件(セキュリティ、拡張性、運用)の説明も含めてたくさん書くようにしました。正直ここはどう評価されたのかはわかりません。説明部分など、書く言語は基本的には英語になります。

時間を取るのに苦労した部分はありますが、採用方式としてはミスマッチも減りそうで良い方式と思っています。コードの書き方、ドキュメントの書き方、Gitコミットの残し方まで、その人の開発手法を幅広く見ることができるので。

プレゼン面接

1対1ではなく、複数名の担当に資料を用いてプレゼンを行うという形式です。この形式も私は2回ほど経験したのですがテーマは基本的に自由で良いという感じでした。幸い私は外部の勉強会などでお話する機会が多かったので過去の資料を流用させてもらいました。ただ一部資料の英語化は行いました。個人的にはエンジニアはプレゼン力も重要だと思っているのでこちらも良い形式の選考だと思っています。資料の書き方や話し方も見れますからね。

英語について

面接やカジュアル面談、採用担当との打ち合わせをたくさん行いましたが、英語を使ったのは全体の30%〜40%くらいだったと思います。グローバル環境を求めたとは言えど、日本企業または海外企業の日本拠点を受けている形だったので、必然的に日本語のコミュニケーションも多かったです。日本語or英語どちらでも良いよって場合は日本語を選ばせてもらいました。それでもまぁ、15〜20時間くらいは英語で会話していたと思います。英会話スクールにお金を使っていた自分としてはお得な気分ですw。

なお、注意していただきたいのは英語力についてです。私の英語力の場合、USやイギリスなど英語ネイティブしかいない環境の場合は普通に英語力で落ちていると思います。日本のポジションということもあり、日本語も使用しつつ、ノンネイティブの人含め海外の方とやり取りできるくらいのレベル感が求められていました。私に気を使ってはっきりしゃべってくださった方もおり、助かりました。英語力に関してはまだまだ伸ばしていきたいスキルです。

オファー受諾まで

最終的に2社からオファーをもらいました。1社は海外の方が多く入っている事業会社、もう1社は3大クラウドではない某クラウドプロバイダーです。

色々と悩んだのですが事業会社に行くことに決めました。転職活動で色々と話を聞く中で、世の中の課題に対して技術で直接解決する、そういった事業会社さんの姿勢が魅力に感じました。SIerクラウドプロバイダーではお客様企業のために自分たちの技術または技術力を提供すると言う側面を感じ、そこはそこで技術をやる上で魅力だったのですが、初転職ということもありこれまでとは違った立場で技術に関わりたくなりました。もう1社のクラウドプロバイダーも、担当の方が超ナイスガイ、みんな良い人でチームメンバーはほぼ全員外国の方という、魅力も多かっただけに悩んだしお断りするのも申し訳なかったです。

ということで9月1日から新しい会社で働きます。ダイバーシティを武器に世の中に貢献するといったミッションの会社なのですごく楽しみです。

オファーに関して2点ほど気にしておくべき点があったので書いておきます。

オファー後はすぐに返事する必要がある

会社にもよると思いますが、大体遅くとも1週間以内にはオファーに返事を出す必要があります。つまり、複数社受ける場合は最終面接やオファーの日程を調整しましょうということです。私の場合はオファーをもらった2社共エージェント経由ではなく直接応募していましたが、それぞれに他社の進捗状況を伝えつつ各種日程を調整してもらいました。

入社までの期間は2~3ヶ月程度

こちらも会社によると思いますが、オファーをもらった場合、その後2ヶ月くらいで入社するつもりで活動した方が良いと思います。私も前職の引き継ぎ業務があり、オファーから入社まで3ヶ月ほどでした。プロジェクトにガッツリ入っている方だとここが難しい場合もあると思いますので、入社先の企業にも確認した方が良いかと思います。

転職活動を振り返って

改めて書いてみると色々やっていたなと思います。本やLeetCodeなどは、転職活動をしないと多分やっていないので新しい知識としてインプットできて良かったです。知らないことを学ぶのは楽しいですね。

ただ、メンタル的に大変なところもあったので気軽にやる活動でもないなというのが正直なところです。普通に選考で落ちることもあったので、落ちるとアレ俺って無力エンジニアなのかな・・となったり、受かったら受かったでお断りするのも申し訳ないです。結果が出るまではドキドキですしね。しばらくは次の企業で頑張りたいなというお気持ちです。自分の足りないスキルも色々と見えたので引き続き働きながら学習していきます。

こういった情報が少なかったのでまとめてみました。以上です!