かめあるき

プログラミング駄文。

【転職エントリ】SEを退職し、SWEになります。

新卒から2年半ほどお世話になったSIerを退社し、とあるスタートアップでソフトウェアエンジニアになります。

この度自分がSWEとして転職できたのは、恵まれた環境とすごい幸運の連続によるものです。

それでも何もしていなかったわけではないので、もしかしたら運気を上げる行動があったかもしれないと思い、書き残すことにしました(あと退職&転職エントリを書くというやつをやってみたかった)。

私自身、異職種のSEからSWEになろうと思ったとき、そっくり同じキャリアを歩まれた方の体験談等があまり見つからず、正直とても不安でした。

それでもSWEやその他異職種の方の就職・転職エントリは大変参考にさせていただきました。

私が公開する内容もどなたかの参考になれば幸いです。

略歴ときっかけ

私大文系卒、IT未経験でSIerに入社しました。

パソコンを触ること自体に拒否感は無い方でしたが、プログラミング経験やCS知識は皆無でした。社会・人文科学系だけど研究の一環でプログラミングに触れていた、ということも全くありませんでした。なんなら入社当初はブラインドタッチもできませんでした。

実はプログラミングをやろうとしたことはあるのですが、Webサイト作成で文字色を変えて飽きたり、変数・関数のような概念の理解ができなかったりですぐに挫折しました。また、お金を掛けて本を買ったり学習サービスを購読したりするほど熱意はありませんでした。

そのため、入社当初は開発部署でシステムエンジニアとしてIT知識をつけてから、給与が高そうなIT営業やコンサルタントの道に進もうと考えていました。

ところがいざ新卒研修でプログラミングに触れると、とても楽しくて夢中になりました。自分が思っていたより真剣に研修に臨み、業務時間外も次の日の研修の予習や自主学習をして過ごしました。

このときからすでに、周囲との技術に対する熱意の差異や期待されているキャリアとやりたいこととのギャップを感じていました。もとは自分も技術力だけで食っていくつもりではなかったので、当然といえば当然の状況でした。

技術力を高めることでキャリアアップしていく道はないかと調べたところ、「ソフトウェアエンジニア」という職種があることを知りました。また、なぜかインターネットにGoogleSWEの方を始めとして、多くのエンジニアの方々の転職エントリが気前よくごろごろ転がっているのを見つけました。

転職エントリを読み漁っていたところ、自分も例に漏れずLillianさんの転職エントリにぶち当たり、強く感銘を受けました。

note.com

ちゃらんぽらんな自分とLillianさんでは人生で積み上げてきたものからすでに大きく差があり、あの短期間でのあの勉強量も決して真似できるものでは無かったのですが、数年掛けて勉強すれば自分もソフトウェアエンジニアの肩書を得るくらいはできるのではないか?と思うようになりました。

こうして「ソフトウェアエンジニア」になるために、「CSを勉強する」という目標と行動指針ができました。漠然と30代に入る前にSWEになりたい、新卒3年目で一度就活に挑戦しよう、などと考えていました。

やったこと

勉強

いわゆるコーディングテスト対策もやったのですが、あまり強くないのと強い転職エントリがたくさんあるので割愛します。

どちらかというと非CS非ソフトウェアエンジニアとしてどんなことをしたかに焦点を当てて書いています。

資格取得

前職では資格手当が充実していたこともあって、勉強するのに資格取得をよく利用しました。ベンダー資格も含めて半期で1個以上、多いときは3個くらい取得していました。

資格取得には賛否両論ありますが、自分の状況には合っている勉強方法だと考えていました。

自分にとってのメリットは以下のとおりです。

  1. 申し込みさえすれば勉強に締切が設けられ、受験費用も安くないため、だらだら勉強することを避けられやすい。
  2. 体系的な勉強が必要になるので、自分の好みや経験で学習範囲が偏ることを防ぎやすい。
  3. 勉強した成果が資格として形に残るため、履歴書に記載するなどしてアピールしやすい(特に、学位や職歴がない自分でもCS分野を勉強したことが説明しやすかった)。
  4. 正直コードを書いているほうが楽しいので、避けがちな座学をきちんと勉強するいい機会になる。
  5. 勉強の練習になる。

有名所でいうと基本情報・応用情報がありますが、履歴書に書いておけば勝手に手に職ついたり、評価が上がったりするというのは幻想です。

しかしいくつか転職エントリなど読んでいたところ、CS学位がない方が基本情報・応用情報を通じてCSの基礎固めをした経験が綴られているのをいくつか見かけました。

実際自分もそのようにして面接に挑んだところ、面接官には一定の安心感を与えたようでしたし、自分の周囲では「起床試験」などとネットで揶揄されるほど評価が低い資格ではないようでした(意外でした)。

受験後、普段使わない知識はほとんど忘れてしまうのですが、一度勉強した経験があるだけでもハードルがかなり下がるので、時間の無駄だとも考えていません。

学習サービスの利用

はじめは教材にお金をかけることに抵抗があったのですが、ソフトウェアエンジニアになろうとおもってからは惜しまずバンバンお金を使うことにしました。

ぶっちゃけお金を払ったのにほとんど使わなかったものもあるのですが、出し惜しみせず学習環境を充実させることができたのはとても良かったです。職に就いていて実家暮らしで他の娯楽にお金をあまり使わずに済んだことも幸いしました。同じノリで技術書も山のように積んでいます。なんとかしたいです。

下記は思いつく限りの登録したサービス一覧です。

  • Progate
  • paiza ラーニング
  • PyQ
  • DataCamp
  • Recursion
  • educative
  • LeetCode
  • アルゴ式(無料)
  • AOJ(無料)
  • Ping-t
  • Udemy

あまり利用していないものもあるため各々の良し悪しには触れませんが、勉強するまでのリーチが短くて取り組みやすく続けやすいのが一番の利点でした。ただ楽すぎて自分で作った環境での勉強を怠ってきてしまったのが今の若干の課題です。

学習サービスではありませんが、ソフトウェアエンジニア面接対策のサイトもたくさん見ました。SEやいわゆるWeb系エンジニアなどとは面接形式が異なるため、経験や知識がなく聞ける人もいない状況でとても助かりました。コーディングテストはまだまだ苦手ですが、今後のためにも勉強を続けたいです。

github.com

github.com

AtCoderももちろん取り組みました。まだ茶色コーダーなので今後も続けていきたいです。

各サービス内でコミュニティ機能があったり、自分でもTwitterをやっているのですが、エンジニアになりたくて勉強している人と繋がったりは結局あまりしませんでした。自分が消極的な性格であることもあると思うのですが、雰囲気が苦手であまり馴染めませんでした。一人ぼっちでもソフトウェアエンジニアになりたいことに変わりなかったので、特に困ったことはありませんでした。

ただ、実際にソフトウェアエンジニアとして働いている人が周りにおらず、客観的に自分がどう映るのか、どういった勉強が足りていないのか相談できる機会がなかったので、後述するBuild@Mercariのような機会でめちゃくちゃ自分語りしてアドバイスもらったり、MENTAでお金を払って相談してみたりしました。

転職サイト登録

あまり知識がなかった頃、ソフトウェアエンジニアという職は外資のイメージが強かったので、LinkedInは登録しました。実際に使っていると、国内のスタートアップやメガベンチャーがソフトウェアエンジニアの求人を出していることも多かったので、国内外問わずソフトウェアエンジニアを目指すのであればとりあえず登録しておくのが良いかもしれません。

資格を取得したときなど、こまめにプロフィールを更新していました。LinkedInのプロフィール項目は履歴書に似ているので、自分の履歴書の状態を確認したり、実際に履歴書を書くとき参考にしたりできました。学歴・職歴がどうしても弱くなるのがわかっていたので、履歴書を意識しながら数年かけて行動できたのはとても良かったと思います。投稿や他の人との交流はまったくしていませんでした。

またpaiza ラーニングを利用していたので、paizaのスカウトも受け取るようにしていました。paizaランクはAランクでした。

LinkedInのDMやpaizaのスカウトなどを受け取っていると、自分の履歴書だとどの程度のポジション・年収になるのか、楽に身の程を知ることができるのが良かったです。やはりCSなし・新卒SE数年程度だと、外資系ならサポートエンジニアやコンサルタント、国内だとSEやWeb系エンジニアのポジションで、年収はほぼ現状維持かそれ以下(外資は上がるポジションもあった)といった感じでした。

もちろんスカウトがこないから選考を受けられない・内定をもらえないというわけでは無いのですが、企業から自分がどういう人材に見えるのかの一つの指標にはなりました。

ちなみに転職先企業はLinkedInからお声がけいただきました。ソフトウェアエンジニアのポジションで給料もとてもあがるので、秒で内定承諾しました。

Build@Mercari

mercan.mercari.com

Webアプリケーション開発やハッカソンなどを通じた学習兼交流プログラムとメルカリでの就業型インターンシップの2階建てになっているプログラムです。メルカリが提供しているプログラムでインターン選考もあるというと気が引けてしまいそうですが、これは非エンジニアや非CSでも参加できる設計になっています。

似たようなプログラムにGoogle STEPプログラムがあるのですが、これは学生限定です。Build@Mercariは珍しく社会人でも参加可能で、まさに自分にピッタリのプログラムでした(実際には社会人の参加者はかなり少ないらしいのですが、特に困ったことはありませんでしたし、働きながら参加してると感心されることが多くとてもいい気分になりました)。非CS社会人が参加可能で、インターンシップのチャンスもあるというのはほぼ他にない機会と言えます。

毎年内容には変動があるようなのと、守秘義務があるので公開されている内容以上のことは言及できないのですが、他の参加者やメルカリ社員に質疑応答や交流ができる上、学習リソースも惜しまず提供していただけました。

自分は後半のインターンシップの選考は不合格で参加できなかったのですが、前半のトレーニングプログラムだけでもかなりためになりました。自分の周りにCSの人やソフトウェアエンジニアとして働いている人、エンジニアを目指している人がいなかったので、同じ課題に取り組んで刺激を受けたり、自分のキャリアを相談できたりして、繋がりができたのはとても良かったです。

やらなかったこと

社会人入学・プログラミングスクール

大学や大学院、プログラミングスクールに入ることはかなりギリギリまで迷っていたというか、大学(院)については今でも機会があれば…と考えています。

検討していた理由は、やはり学歴が欲しかったから、自分の能力だとひとりで勉強するのは限界があるのではと考えたからです。

大学(院)・プログラミングスクール共通で踏み切れなかった理由として、「無給かつ業務経験のない空白期間というリスクを許容できなかった」というのがあります。

自分でも意外だったのですが、自分は強い感情や過酷な環境に弱く、闘志が湧いてくるどころか、プレッシャーに押しつぶされてパフォーマンスが下がるタイプだとわかりました。まだ「やる気ないな」って思っているときのほうが手が動かせるのでマシです。また、「絶対なんとかなる」と思えるような才能も根拠も、根拠のない自信もなかったので、ついに踏み切れませんでした。

その意味で「最悪現職を維持しておけば路頭に迷うことはないな」と思いながら転職に挑戦するのは、精神衛生上とてもよく、落ち込んだときも復帰しやすかったです。

加えて大学(院)は現段階だと研究したり論文書いたりしたい!と思えるほどCSに対する解像度が高くなく、また一度大学を出てみてあまり研究が得意そうでもなかったのでなかなか決断できませんでした。ただ面接のフィードバックで「CS学位がないのはそんなに気にしなくていい」と言われてしまうくらい非CSコンプレックスを滲ませているらしいので、いつか…と思っています。

検討していたものの例として、大学は国内外の情報学部に加えてUoPeopleやCS50の有料受講、プログラミングスクールだと42Tokyoやコードクリサリスあたりが良さそうだと思っていました。

アプリ作成

これは正直「やらなきゃと思いつつ間に合わなかった」というのが実情です。

一応なくても問題ない(あるならないよりはいい?)と聞いていたことや、資格などで勉強量はアピールしようと思っていたこともあって、焦って作るということもしませんでした。

ただ、業務では触れなかった技術で履歴書に書きたいものについては、競プロのコードをGitHubに上げたりペラッペラのアプリを作ったりして形あるものを残したりはしました。

例えば「アプリをデプロイしたことはありますか?」「AWSを触ったことはありますか?」と聞かれたら「業務で扱わなかったのでないです!」とは言いたくなかったので、3の倍数と3がつく数字でアホになるだけのアプリをEC2でデプロイしたりしました。

おわり

自分としては一旦目標達成できたのですが、普通に未経験異職種0歳児なので、まだそもそもソフトウェアエンジニアとしてやっていけるのかどうかはわかりません。

最初は全然何もできないと思うのですが、これからも勉強を続けてはやく役に立てるようになりたいです。どうぞ今後もよろしくお願いします。