BlueVancouver- アラサー エンジニア転職@カナダ

現在アラサーの駆け出しエンジニア。[文系学部卒]にも関わらず26歳の時にSoftware Engineerになる事を決意。東京の外資系コンサル会社を26歳で退職し、カナダでのコンピュータサイエンスの大学に理転しました。(業務未経験) & (アラサーからの理転) & (いきなりカナダ) ですが、日本人としてもっと多様なキャリアがあってもいいと思い、情報共有しております。Youtube: https://www.youtube.com/channel/UCpa0EIrdETaR2gunXDEz-7A

2021年のバンクーバー、トロントでのサマーインターンを終えて

2021年夏までの振り返りエントリーです。アラサー元社会人がカナダ移住を目指して行動してきた記録です。

2020年の9月から2021年4月まではバンクーバーCo-opを8ヶ月、5-8月にsummer internを別の会社で4ヶ月、Total一年間をfull timeで働き、2021年の9月から学業に戻りました。

 

各社インターンでは守秘義務契約を結んでいる為、技術/業務内容や給与形態については話せませんが、感じたことなど整理していこうと思います。

学び(1): 一度カナダでソフトウェアエンジニア経験を積むと、その後はインタビューを得るフェーズは比較的スムーズにいく。

当たり前のように聞こえますが、Resumeに一度ある程度の規模や名の知れた会社で経験を積むと、2社目のインターンではApplyした後の返答率は1回目よりも高かったです。自分は日本での経歴はありましたが、カナダでは皆無だったので、1度目はそもそもインタビューに読んでいただいたのが50社applyして、2社程度でした。2社目では50社中10~15社程何らかの返事をいただいていました。

最初はカナダに残れるのか不安でしたが、Total一年働いたことで、技術的にも自信がついてきましたし、経歴的にもとりあえずインタビューは受けさせてもらえるレベルにはなってきたと思います。ただ、その後の技術面接では何度も落ちてきたので、まだまだalgorithm&data structureと、設計の知識は学ぶ必要があると痛感しました。就職後も、次の転職を見据えて、これからも勉強を続けていこうと思います。

 

学び(2):シニアエンジニアにあって、今の自分にはないもの

インターン中は全ての会社で、メンターをつけていただきました。彼らはシニアエンジニアで、ボランティアでインターンの面倒を見てくれる方々です。ただ、一から教えてもらえるわけではなく、技術選定や、設計のレベルで答えのない選択をするときに第三者意見をもらう際にサポートしてくれます。あくまでも、調べて出てくるような内容は自分で調べて、詰まった時にslackする程度です。 彼らシニアエンジニアを見てきて、自分が感じた差は、経験ももちろんですが、他のチームやcomponentを理解した上での決断ができる、そしてcross functionalな仕様を他チームと連携する能力が高いことでした。一言で言えばcommunication力ですが、ただ話が上手いのとは違い、今の自チームと他チームのリソースを理解し、仕様も理解した上で、技術選択ができます。

逆に言えば、新しい技術内容については彼らも調べながら手探りで時間をゆっくりかけるので、自分もある程度正しい努力をすれば自分の分野の技術力という観点ではシニアになれる技術力は身につくと感じました。働く中で他チームと連携することも増えてくると思うので、日本で学んだプロジェクトマネジメントを活かしていこうと思います。

 

学び(3):バーンアウトはいつ起きるかわからない。

メンタルケアは本当に大事だと感じました。自分はおそらくHSPで、日本、カナダ関係なく会議をした後はどっと疲れます。カナダに来てなくなると思っていた、マネージャーからの評価に対する気疲れは、なくなることはなかったですし、大きい企業では関係者が増えるため、meetingが多く、meetingの前はcodingや設計に100%意識を注ぐことは本当に難しいと感じました。あまり考えすぎないようにするため、毎日筋トレやtrail runというDaiGoさんオススメの森の中を散歩したり、走ることで気を落ち着かせてきました。ただ、日本のコンサル時代に感じていたほどの重圧はないので、これからもメンタルケアをしっかりして、バーンアウトしないように気をつけます。特にSoftware Engineerのバーンアウトは良く聞くので、これからも試行錯誤して自分なりの方法を見つけてはシェアしていこうと思います。

いい意味で、今回分かって良かったのは、日本にいても、カナダにいても、プレッシャーは避けられないですし、自分はそれを感じやすいことがわかって良かったです。

 

 

 

 

 

東京のビジネスコンサルを辞めて北米でソフトウェアエンジニアにキャリアチェンジした理由 前編

今までの記事を読んでる方はご存知かもしれませんが、自分は文系学部卒でBig4系のコンサルとして最初のキャリアをスタートしました。

約4年ほどビジネス側のキャリアを積んできてから、理転でのアカデミックを挟み、エンジニアへのキャリアチェンジ(現在進行中)は簡単ではありませんでした。周りに相談に乗ってもらえるような人もいなかったので、誰かの参考になればと思い、ブログを書いています。半分は自分の思考の整理として使っています。
今日はコンサルからソフトウェアエンジニアへキャリアチェンジした理由を自分の中で整理しようと思います。このキャリアチェンジには2つの理由が主にあって、一つはコンサルを辞めたい理由、そして次がソフトウェアエンジニアとして働きたい理由です。

まずは経営コンサルをやめた理由です。
1.対人の仕事に向いていないから
2.マネージャー職、管理職に興味がないから
3.ある程度経験すると、スキルがあがりにくい
4.北米で働こうとすると言語の壁がある。


1.に関しては働く中で初めて気づきました。自分はアナリストやコンサルとしては何か作業をすることは得意で、エクセルを操ることや、データ分析など、何かルールが与えられた範囲で考えたり、作業をすることは嫌と思ったことはありませんでした。
反対に、クライアントに説明するときや、説得すること、ヒアリングで何に困っているか聞き出すことは本当に苦痛でした。言葉ではうまく言えませんが、自分の思考はロジックが通っているが、それを他の人に伝えることが得意ではないんだと思います。やはり長いキャリアなので、自分が得意なことにもっと時間をさきたいし、伸ばしていきたいと思いました。プログラミングはストレスに感じたことはあまりないです。

2.に関して、コンサル業界はアナリスト、コンサル、と昇進したらその後はマネジャーとしてアナリストやコンサルを育てたり、チームとしてうまく動くようにチームマネジメントやクライアントへの営業が主な仕事になります。いつまでもエクセルや、データ分析、リサーチをやらせてもらえません。自分は他人のマネジメントには残念ながらあまり興味がわかないので、どのみちコンサル業界にいるのはアナリストとコンサルタントの間までだと薄々わかっていました。

1. 2.共に自分の内向的な性格や内向的思考が顕著に表れていますが、コンサル業界で働いて3年ほど経ったある日心理学で修士号を持っている当時のマネジャーにMBTI 16 personalityテストというのを聞き、試しに受けたら、やはり超内向的なINTJという分類であることがわかりました。
説明を読んでみると確かに当たっていて、努力とは別の自分の好き嫌いがこのテストで確信することができ、自分はその3ヶ月後に退職することになりました。テストに興味がある人はmbti 16 personality testで調べると色々出ると思います。

3.については、コンサル業界はプロジェクトベースで色々な業界のクライアントを相手にしますが、根本的にやる仕事は自分の場合は同じで、クライアントのヒアリングをして、ビジネスフローやオペレーションを現状のものから、システムを導入することで簡単にするなどの要件定義をして、設計書を書き、システムに関係する部分はプログラマーに説明し、システム完成後はユーザーにトレーニングし、文書化するなどの工程でした。
ある程度経験を重ねると、技術者として学ぶことはそこまで増えず、対人スキルという数字では測れない何かが伸びる気はしますが、1.,2.でも言った通り、技術者としてスキルを伸ばしたい自分にとっては、これ以上いてもスキルが伸びることはなかったと思います。

4.については、自分はどうしても北米でのキャリアを歩みたかったので、その場合、現地のネイティブスピーカーとポジションを争うことになります。英語の面で彼らと議論することにコンサルだとなります。
自分はそこでの勝負は望まなかったので、アメリカ、カナダで勝負するなら英語の壁がないプログラマーならまだ可能性が高いと見切りました。
実際働いていて、slackやdaily stand upで使う英語はエンジニア英語なので、英語で苦労したことは今のところはないです。

総じて、自分はコンサル業界を選んど事は全く後悔していません。この後悔のはなしはまた別のエントリで書きたいと思います。
ただ、自分の向き不向きがコンサル業界のマネジャー以降のキャリアには向いていなかったのと、好き嫌いでINTJな自分はコンサルタントとしては向いていなかったと思います。これをしれただけでも良かったなと思います。長い人生の中で、本当に向いている仕事を見つけるのは時間がかかりますし、向いていないことをしれたならそれは次に進めるのでラッキーだと思います。

少し長くなったので前編後編に分けたいと思います。
次はソフトウェアエンジニアにキャリアチェンジした理由です。

カナダ1社目でソフトウェアエンジニアとして学んだこと

カナダ1社目のSoftware Developer(Co-op)の仕事を終えようとしているため、このエントリーで学んだ事を記録に残しておこうと思います。

 

<業務を通じて使用した技術と学んだ事>

Backend Development:

Javaを使ってサーバーサイドの開発。オブジェクト思考をしっかり学べた。使い回すBase classを決め、それをExtendして個々のサービスを作っていくこと。いくつかのfunctionを作る中で、共通しているactionを途中でhelper functionとして別に作って、他のfunctionからcallするみたいなのを経験して、今後は途中からではなく、設計の段階で長期的な視点を持っていずれ他のfunctionもcallするだろうから最初からhelperを作ろうとか、wrapperを用意しておこうとかそういう勘所が身につくといいな。

 

テスト自動化:

JUnitでBackend, SeleniumでFront-endのテストを自動化した。Sleniumではpage objectとtestファイルを分け、maintainしやすいファイル構成を学べた。

Backend側のテストでは、最初はjson fileでmock dataを作って、それをテストファイルで呼び出す2ファイル スタイルでやっていたが、後でmock dataをテストファイルに書くninja_squadを知ったので、1ファイルの方がmaintenanceしやすいし、読みやすいのでこういうスタイルもあるんだなという事を知った。今後は1ファイルでスマートに書いていこう。

 

DB:

Postgresを使ってSchemaの構築や、View, Functionを作成し、RDBの基礎を学んだ。DB MigrationではFlywayというDB用のversion controlツールを使用し、一発でDBをmigrateできることも学べたし、移行時にif notや、if existsなど環境差を鑑みたUPDATEの書き方を学んだ。 COMMITとROLLBACKなどのコンセプトも理解した上で、まとめてデータをupdateするときはtransactionにして失敗したらrollbackしないとdataのconsistencyが崩れるので、callする前にauto commitはfalseにするなど細かい所まで実装に気を使える様になった。

 

ビルド:

Bash scriptを書いてdocker-composeをcallして、local環境構築 >buildでjava fileをbinary fileに>DB migrate反映 までbashで自動化させることを学んだ。Backendよりもこういう効率性をあげるコード(=DevOps)をもっと深めていきたい。Docker-composeでwebとPostgresを繋げるなども学べてよかった。

 

CI/CD Pipeline:

Jenkinsを使用して、build > test > migrateをステージごとに実行する書き方を学んだ。これはこれで奥が深いし、どういうポイントでlogを残すかとか一つとっても重要なことがわかった。あとは、一回のJenkins buildで20分ほどかかるのをどうやって早くするのか、今後はperformanceを早くする方法を調べていきたい。

 

チーム開発Tool:

GitではとりあえずGit rebase -i HEAD~5などでsquashとかeditとかして一個一個のcommitを綺麗にして、editで過去に遡れて、最後にgit pull --rebase origin masterでmasterブランチにcatch upしてからpushするとかの基本を学べればとりあえずは生きていける事がわかった。 あとは、git reset --soft HEAD^で誤ったremoteへのpushを取り消すとか。慣れてよかった。

 

 

今後より深めたい技術

働きながら、仕事とは別に個人開発をGo + Postgres + Redis+EKS(AWS) +Terraformでサービスをlaunchsする経験を積めた。本業と同じかそれ以上の学びが個人開発であった。

個人開発で触れた中でもっと深めたい技術としては、kubernetesを使ったコンテナ技術と、AWSなどのクラウドサービスをより深く理解したい。Terraformでconfig管理し、自動化する所もサクッとできるくらいまで。

Terraformで買って良かった参考書はこの本かな。やっぱり自分は日本語でできれば勉強したいので、現状日本語の書籍でTerraformを学ぶなら個人的にはこれ一択かと思います。

実践Terraform AWSにおけるシステム設計とベストプラクティス (技術の泉シリーズ(NextPublishing)) | 野村 友規 | 工学 | Kindleストア | Amazon

 

Kubernetesは現在CKA試験絶賛勉強中です。個人開発ではkubernetesの完成品を使ってアプリをdeployしますが、trouble shootingや自分でパーツを組み立てるより深い知識を補うためにCKA試験を受けます。個人的に勉強用に買った本としてはこれになります。kubernetesも、コンセプトは日本語で頭に入れたいので、現状はこの本が良いかなと思い購入しました。

Kubernetes実践ガイド クラウドネイティブアプリケーションを支える技術 impress top gearシリーズ | 北山 晋吾, 早川 博 | 工学 | Kindleストア | Amazon

 

Goは個人開発では認証機能、Session&Cookieスクレイピング、DB連携など実装できたけど、並列処理に触れなかったので、BackendエンジニアとしてはGoの並列処理をもっと学びたい。あとはKafkaなどのmessaging queもロジックを理解したい所ですね。

 

まだまだ学ぶ事が多そう。エンジニアとしては浅く広くよりも、深く深くが大事だと思うけど、BackendやDevOpsのどの分野を深めるかを決めるために今は色々hands-onでサーチしているという段階です。 なんとなくコンテナ技術が面白いと感じてきたので、Goとコンテナが今は極めたいと思っております。

 

 

カナダの大手tech企業で働くのに有名校も大学院も必要なかった話(個人的感想)

 

自分はこのブログを自分の思考の整理としても書いているため、今回もあくまでも個人的な感想になります。

北米でsoftware Engineerとして働き出すには、主に二段階あります。

1.面接をゲットするステージ(=Resume Screening)

2.面接で良い結果をだし、内定をもらうステージ(=Passing the Interview)

 

今まで自分は北米でSoftware Engineerとして働くなら、大企業のresume screenが難しいことは知っていました。1つのpositionに対し何百人のapplyがあることをlinked in を通じて知りました。自分はカナダではJunior positionで就職を考えているため、同じpositionには学部卒、大学院卒、博士、社会人1~2年の色々な人の中でresumeを見てもらうには有名校の学部を出るか、マスター or PhDに行っている必要があると当時は考えていました。

これは、個人的感想ですが、確率をあげるならやはりそれは正しいと思いました。job descriptionにはマスター卒の場合、尚望ましい。というような記述をちらほら見かけたからです。ですが、自分はまだマスターには進んでおらず、一旦は就職を考えていたので、持っているカードで戦うことを決めました

大学も本音を言えばやはり米国かカナダの有名校に通いたかったところですが、高い学費を払う余裕がなく(全て自分の貯金で学費、生活費等賄っていた為)、有名校にも自分は行っておりませんでした。

本音としては有名校、または修士というステータスで北米就職を戦いたかったところですが、ないものを願っても仕方ないので、自分の持っているカードで戦うことにしました。

結果として、大企業のインターンに選んでいただいたので、今となってはSoftware Engineerとして働くのなら、有名校も大学院も必要なかったのか。と感じました。

もちろん、研究よりのSoftware Developerの仕事は高学歴が求められると思うので、自分はこういう土俵では勝負せず、BackendやDevOps系の土俵を選びました。実際、上司やjunior engineerの経歴を知ると、意外と聞いたことのない大学やロシア、ウクライナ、インドなどからそのままカナダ企業に働き出す人もいたので、自信のスキルに自信を持って仕事を頑張ればいいだけの話でした。

resume screenで感じたことはまたどこかで記録しようと思います。

 

あとは、学歴を気にしていた過去の自分に言えるとしたら次の2つです。

1. 北米のエンジニアは現場経験を積めば積むほど評価され面接にも呼ばれやすいと感じたので、もし仮に卒業後すぐに大企業で働けないとしても、1社、2社ほど経験を挟んでから大企業に挑戦すればいいと思います。自分はカナダで1社、start upで8ヶ月間の経験を積んでから、面接してもらう機会が大分増えました。

2.卒業後時間が経てば立つほど、学歴の価値が自分のresumeで占める割合は減っていくこと。大学卒業して5,6年も経てばおそらく人事が見るのは直近の1,2社でどのような経験を積んできたのかと、どのskillがあるかです。自分の学歴がresume screenで見られる割合は転職のたびに減っていくと思います。

 

総じて、自分は学歴や経歴で弱腰になるところがよくないので、やっぱり気にしすぎだと思いました。もちろん今でもCSでマスターを取るところまでは考えていますが、別にマスターを取る前に大企業に挑戦すればいいと思います。面接をもらったらあとはどれだけalgorithm & data stuructureやsystem designの練習を積んできたかなので、面接のチャンスをもらってはそういう些細なことは考えないようにしてきました。働くうちに自分のこういう悪い思考も治れば良いな。。。

 

最後に、関連した話で元陸上オリンピック選手の為末 選手が今の自分の価値観を大きく作ってくれたこの動画に感謝したいと思います。

この動画内で、為末さんは「100mを日本人が10秒きれない壁が以前ありましたが、限界という壁は実はなくて、その壁は2進数の世界だと存在しないものになります。」という発言にはっとしました。「僕たちは実はほとんどの時間を幻を行きているのではないか。」これが今の自分を支えてくれます。自分も、自分の勝手な限界を設定せずに、思い切ってこれからも頑張っていきたいと思います。

 

www.youtube.com

 

 

未経験からカナダでエンジニア転職する際に不安は感じなかったのか

未経験からエンジニアに転職、しかもそれを異国の地でする際に自分は最初はものすごい不安を感じました。今でこそ、少しづつ自信がついて来たのですが、正直やはりメンタル的に辛いものがありました。少し整理していきたいと思います。

 

結論からいうと、俯瞰的に見れば不安は頭の中のBugだと今では思えるようになりましたし、前頭葉が勝手に興奮してるだけで、実際には何も物体のないものだと(今は)自分に言い聞かせています。

 

当時の自分はyoutubeやブログからとにかく集められるだけの情報を集めると、未経験からのエンジニア転職は国内だと自社開発企業は難しいとか、北米のエンジニア就職はTwitterで海外で働いている人を見ると、皆Berkerey, Stanfordあたりの有名校を卒業していらっしゃったので、そのような大学に通ってない人の情報が当時はほぼなく、本当にカナダでエンジニア就職できるのかは不安でした。

不安と行っても色々あり、

  1. Computer Scienceの授業についていけるか
  2. 就職に必要な技術を身につけられるか。
  3. 学歴フィルタ、年齢フィルタは本当にないのか。
  4. visaの心配
  5. 昨今のソフトウェアエンジニアの人気による競争率が上がっていること

などなど。

自分の考えの整理という意味でもそれぞれ考えていこうと思います。

1.Computer Scienceの授業についていけるか 

-> 授業は最低Failしたところで、学生visaには影響が出ないので、卒業が半年遅れるだけと割り切ったところから気が楽になりました。ちゃんと課題をこなせば大抵の場合、Bから上の成績はもらえるはずです。

また、私は書きましたが、ResumeにGPAを書く必要はないですし、書いたところで面接時に聞かれることもなかったので、やはり成績を気にしすぎる必要はなかったです。

 

2.就職に必要な技術を身につけられるか。

-> 当時はやはりわからなかったですが、北米の会社はjob descriptionに必要なskillを載せていて、それらを先に見てからUdemyやyoutubeから独学するスタイルで十分面接で聞かれる内容には答えられることがわかりました。

3.学歴フィルタ、年齢フィルタは本当にないのか

-> 個人的な感想ですが、個人的にはないと思いました。履歴書に年齢を書く必要もないし、聞かれたこともないですし、年齢は気にしな来ても良いと思います。

学歴については、表向きにはないと思います。自分はマスターに行ってる訳でもないし、トップスクールにも通ってないですが、それでも有難いことに誰もが知っている大企業でインターンさせていただいております。job descriptionにはマスターの学位があれば尚良いとは書いていますが、自分はマスターの学位は持っていないので、そういう意味では学歴は関係ないし、自分のskillがあれば学歴は関係ない証明ができたと思います。

あとは、気にしたところでapplyする分にはただですし、挑戦すればいいと自分の中で割り切れたのも良かったかと思います。ある頃からこれはnumber gameだと割り切ってapplyボタンを押せるようになりました。

4.visaの心配

-> 今の所カナダでは2~4年の学位が終わるとpost graduate work permit(PGWP)が3年間もらえるので、(しばらくは)心配しなくてもいいと思えるようになりました。

5.昨今のソフトウェアエンジニアの人気による競争率が上がっていること

-> これは正しいと思います。日本はIT人材が不足していると言われてますが、北米は1つのpositionに対し、100人以上applyしている状況です。ただ、これは自分がコントロールできることではないので、心配したところで自分のスキルが上がる訳でもないので、気にしないように意識しました。一つ言えるとしたら、平均して1つのpositionが1/100の確率で内定が出るとしたら、100社(100 position) applyしたら、どこかの会社から1つ内定が出るので、行動とapplyの数を増やすことを意識して、それ以外は心配しないように意識しました。

 

共通して自分が感じたことは、特に北米のエンジニア就職では自分がコントロールできない要素があったので、それを気にしていたら今の自分はなかったと思います。

当時の自分は不安でなかなか集中できなかった時もありましたが、「嫌われる勇気」のアドラー心理学を読んで、自分のコントロールできることだけに集中することで徐々に結果が出るようになってきました。

 

国内で先にエンジニア転職するか、とりあえず北米に来てCSの学位を取るか

私は2017年の社会人2年目の頃に真剣にSoftware Engineerに転職することを考え始めました。

北米でSoftware Engineerに転職するにはいくつかの選択肢が自分にはありました。文系卒の社会人がおそらく多くの人がこのような選択肢になるのではないでしょうか。

1.日本でスクールに通い、まずは国内でSoftware Engineerに転職する。

2.まずはアメリカ or カナダに行き、大学でCSを学び、2年ほどかけてSoftware Engineerになる。

 

2017年当時の自分は選択肢(1)を考えていました。

当時はテックキャンプや、Dive into codeなどのスクールがちらほら有名になってきた頃で、実際に仕事の関係でSQLを学ぶ必要があったので、Linux Academyというスクールに3ヶ月ほど毎週土曜日だけ通って、PostgreSQLを学んだ。

でも、以下に記述しているメリットデメリットを考えて、結局はまずはカナダに行くという選択をしました。

今の自分が過去の自分に言えるとしたらこういうと思います。

選択肢(1)のメリット

  • コストは選択肢(2)より安い。高いスクールでも80万程
  • 自分の努力次第ではSESではなく、自社開発企業にいける。
  • 正しい努力をすれば、とりあえずどこかの企業には転職できるはず

選択肢(1)のデメリット

  • 将来北米でエンジニアとして働くのであれば、ビザ申請の時に結局CSの学位が必要になる。
  • 日本国内で転職 →CSの学位を取得→北米でエンジニアとして就職だと、選択肢(2)より2,3年ほど時間がかかる。

選択肢(2)のメリット (=選択肢1の逆)

  • ちゃんと就職できれば、国内で転職しようとしていた時間の短縮になる。
  • 就職時に年齢がみられないこと
  • ビザ申請時の「関連した学位を取得している」問題はクリアできる。
  • CSの知識をちゃんと学べるので、今後エンジニアとして働くならCSの知識はマスト
  • インターン/Co-opをしっかりやればどこかの会社には入れる可能性は高い。

選択肢(2)のデメリット (=選択肢1の逆)

  • 学費半端ない (学費だけでも500万以上)
  • 努力以外の要素もある(コネ、ビザ、世界経済など)

色々悩みましたが、自分の場合は、最終的に北米でエンジニア就職することが目標だったため、CSの学位を取ることを優先度として考え、とりあえずカナダに行って学位をとることにしました。今振り返るとこれで良かったと思えます。

万が一なにがあってもCSで学位を取ったことと体系的な知識は誰にも奪われないし、国内でも海外でも評価されることだからこそとりあえず学位を取りに来れたんだと思います。

 

 

文系卒のアラサーがカナダでComputer Scienceに理転し、エンジニアの第一歩を踏み出した まとめ

 

ほとんど読者もいないようなこのブログですが、気になっている人の為に文系卒で日本人のアラサーfor loopから学び始め、ようやくカナダの企業でCo-opプログラムのエンジニアとして8ヶ月経とうとしてるので諸々書き残しておこうと思います。

 

軽く自分のバックグラウンドです

2015年 文系卒、新卒で外資系のコンサル企業に入社。(Big4系コンサルなのでかっこいい仕事は一切してきませんでした。)

2016~2018年: 主に会計系システムの要件定義、設計、テストをこなす日々。一時期、PMO(project management)系の役割でプロジェクトを回していた時期があり、激務の割にTechnicalなスキルはほぼ身につかず、今後の人生このままでは終わってしまうと思いました。どうしようかと悩んだ末に、手に職をつけたいと思い、ソフトウェアエンジニアを志す。同時期にGoogleに転職したリリアンさんの記事を見つけ、自分もエンジニアに転職したいと思うように。

note.com

2019年春: 新卒で入った企業を退職し、カナダの大学にsecond bachelorとして、学部3,4年のクラスを受講し始める。

2019夏〜2020年春:引き続きクラスをとる。

2020年5~8月: 成績優秀者になり、奨学金をいただく。Computer Scienceで大学院のことも将来的に考えているので、研究実績を作る為リサーチアシスタントとして夏の間教授の元で指導してもらう。のちにこの経験が実は就活にも大きなプラスを生む。

2020年8月: カナダのCo-opプログラムという、在学しながら長期インターンをできる制度を利用し、企業と面接するが、60社ほどapplyするも、面接に辿りついたのは2社のみ。そのうちの一つが研究開発に力をいれており、自分のリサーチの経験がプラスでおそらく面接に呼んでいただく。無事コーディング面接を通り、オファーいただく。

2020年9月:初めてエンジニアというTitleでfull-timeで働く。お給料は日本の新卒より少し多い程度

2021年1月: 2社目のCo-opプログラムを目指し、今度はコーディング面接の準備をちゃんとし、2社目のオファーをもらう。2社目ということもあり、今回は大企業でのCo-opとなる。お給料は内緒です(個別に連絡があれば)。

2021年2月: どんどんスキルも身につけ、クラウドソーシングなどでリモートでお仕事もいただけるようになる。(単価は低いので、今後はもうやらない予定)

現在: 一社目の企業との契約がもうすぐ終わりに近づいている。コンテナ技術やCI/CD pipelineに興味が出てきたので、kubernetesを中心に勉強しており、kubernetesの資格試験を4月に受験予定です。

それ以外の時間は毎日コーディング面接で使う頻出アルゴリズムyoutubeにもpostしてます。

https://www.youtube.com/channel/UCpa0EIrdETaR2gunXDEz-7A/featured

 

カナダでのComputer Science理転とエンジニア転職を(まだ最中ですが)やっている感想

  • とりあえず手に職はついているので、最悪何があってもこのスキルが取られることはないし、フリーランスエンジニアとしてお仕事も少しいただいていると、なんとか生きていけるという安心感を得られた。
  • カナダのCo-opプログラムが最強。留学生とか関係なくスキルを徐々につければ就労経験が積める。->そして雪だるま式にスキル x 就労経験でお給料が上がっていく。
  • アメリカ、カナダでSoftware Engineerとして働き出すのに、大学院を出る必要はないということを証明できた。面接時に聞かれる内容は学部3年次で学ぶアルゴリズムとデータ構造がメインでした。