元SIerのCOBOLerがWebエンジニアに転職して半年経過しました

はじめまして。

超絶久しぶりにブログを書いてみます。(Railsの学習記録は消しちゃった笑)

私は2019年の2月に転職を思い立ち、2019年12月に新卒入社から3年8ヶ月勤めた銀行系SIerから、 SaaS企業のサーバーサイドエンジニアへと転職しました。

転職してから気づけば半年経過してしまったので、振り返りも兼ねて、色々と書いてこうと思います。

スペック(当時)

今何やっている?

会社名や業務内容は伏せますが、 SaaS企業のサーバーサイドエンジニアとしてバリバリ業務で開発してます!(フロントも結構書くけど)

個人学習ではReact-Reduxを勉強していて、 re-ducksパターンを用いてなにかアプリを作ろうかなと試行中です。

転職しようと思ったきっかけ

色々あるのですが、「新卒時と価値観が変わったこと」が大きな理由かと思います。 新卒時の私は以下のような軸で会社を選びました。

  • 大手で社会的信用があること
  • 給料の良さ
  • 安定していること
  • 残業があまり多くないこと(これはそんなことなかった)

しかし、実際に社会人として経験を積んでいく中で、 本当に自分が会社に求めていることは「スキルアップできること」ではないかと思うようになりました。

そして、今いる環境は自分にとって「スキルアップできる」場所ではなかったため、 転職活動を行いました。

転職活動について

2019年の2月に転職を思い立ち、8月半ばに内定をもらい、2019年11月末で退社しました。 5月から6月は社内異動や出向の線を探っていて、中断していたので4〜5ヶ月ぐらいの活動でした。

就活面と勉強面で分けて書きます。 こうしてみると、意外と少ないですね...笑

ポートフォリオは転職活動で上手くいかなかったら作ろうと思っていましたが、 転職できたので結果的に作りませんでした。

やったこと(就活面)

  • 自己分析
    • 友人に相談
    • はてブに経歴や転職に対する思いなどを書く
  • Wantedlyに登録
  • カジュアル面談に行く
  • 社内転職の相談(メインフレームから先端技術系の部署へ)→断念
  • 面接&コーディングテスト

やったこと(勉強面)

転職活動について振り返り

転職活動については情報収集→行動を繰り返すのみという感じですが、 会社を決める際に1個だけこれやんなくて正解だったなと思ったことがあります。

それは「この人と働きたい!」と思って決めることです。

働きたい人がいるに越したことはないのですが、 ベンチャーやWebエンジニア界隈は人の流れが早いため、 いざ転職してみたらその人辞めてた・・・ということは十分ありえます。

カジュアル面談をしてくださった企業のエンジニアの方々はTwitterで定期的に見ていますが、 結構いなくなってる人多いなという印象です。

実際、今の会社で私のカジュアル面談をしてくれたEMは別のスタートアップに行ってしまいましたし、 面接官を担当してくれたリードエンジニアの方はチャレンジを求めて他プロダクトの担当に異動してしまいました。

転職時のプログラミング学習振り返り

当時は必死こいて手当たりしだいにやっていたのですが、 強いて言えば、「技術を学ぶ順序」をもっと意識したほうが良かったと思います。

技術を学ぶ順序は【保存版】Web系エンジニアにジョブチェンジするための学習順序と教材一覧【随時更新】がいいと思います。

プラスして、Developer Roadmapsを見ておくのが良いでしょう。

学習を始めると知らない言葉がたくさん出てくると思うので、これらに照らし合わせ、どこの技術のことを言っているのか把握すると良いと思います。

言語についてはとりあえずRubyをやっていましたが、以下の強みはあるかと思います。

  • 転職のしやすさ
    • RubyRails)を導入している案件(企業)の多さ
      • PHPも多いが、Rubyの方が若干モダン気味
  • 挫折のしにくさ
    • Rubyの直感的な言語仕様
    • Rubyコンパイルエラーとかないので間違っていてもとりあえず実行できる
    • 日本語ドキュメントの豊富さ
    • エントリーポイントとなるRails Tutorialのわかりやすさ

自分の中で戦略があるなら、pythonやGoでもいいかと思います。 また、Rubyで学習をしていても、pythonやGoを扱う企業に入社することは可能です。

これは未経験を雇う余裕がある企業であれば、成長曲線の描き方やマインドセット、カルチャーフィットを重視して採用するためです。

ただサーバーサイド言語としてのRubyの市場価値は低下していると思うので、GoやTypeScriptがメインの技術スタックの会社に行ったほうがキャリア的には有利だったかなという思いはあります。

よくある話題と、それに関する私見

Twitterなど話題になって、当時「実際どうなん?」と気になってた点について見えてきた部分、今思う部分について、書いていこうと思います。

未経験がオファーされる年収はどのくらいか?

何十社もの企業からオファーを提示して頂いたわけではないのですが、「20代半ば・未経験」が提示してもらえる金額は、肌感として「400万もらえれば良い方」ぐらいかなと思います。

会社の資本力にもよるところがあり、私が転職した会社はそれなりの規模、かつ前職年収を結構考慮する会社だったため、 現状維持の年収で転職できました。もっと資本の少ない会社に転職していたらダウンしていたと思います。

スクールを使うのはダメなのか?

たびたびエンジニア界隈ではスクールに関する論争が起こります。

私はスクールという選択肢は全く頭になかったのですが、通うのは全然いいと思います。 実際自分の同僚にスクール卒の人がいるのですが、皆さん優秀です。

通うことによって一部の思想が強いエンジニアに毛嫌いされ、選考で問答無用に落とされる可能性があるのかな?と思いますが、言わなければいいだけですし、気にしなくていいと思います。

ただ、良質な教材が欲しければ、書籍を始め、udemy、progate、ドットインストール、youtubeを探せば良いです。 メンターが欲しければ、mentaやオンラインサロンなどを利用すれば良いです。刺激が欲しければ、Twitterでそれっぽいハッシュタグを検索して、爆速で成長している人を見つければ良いです。

価値を感じる点があるとすれば、チーム開発はなかなかできないと思うので、スクールでその経験ができる点については貴重かと思います。(ただし、Gitをつかわないとあまり意味はないかと思います。)

SIerでの経験は役に立たないのか?

SIerでの経験は「コンビニのバイト」程度に考えておくのが賢明です。という動画を見て思ったことです。(この方の信者ではないです)

この動画については以下の趣旨で、SIerでの経験を「コンビニのバイト」程度に考えようね。としています。

  • SIerでの経験を活かそうとし過ぎている

JVM系言語の経験を活かして転職しようとしても、結局環境があまり変わらずコスパが悪くなる可能性が高いので、モダンな技術を学んで転職したほうが良い。

→ 不確定要素が強いので時間を無駄にする可能性が高い。

そうですねって感じです。

web系企業でJVM系言語が選ばれる場合は、OSSを使って大規模な業務システムの開発してきた経験のあるベテランエンジニアが集まって、堅牢で高品質、高可用性が求められるプロダクト(マイクロサービス)を作りたいケースなどが考えられるので、未経験レベルの人はお呼びではない場合が多いんじゃないかなーと思います。

社内で別の案件に参画して〜、は実際に自分がダメでした笑

ただ、自分はメインフレーム担当のCOBOLerでしたが、SIerで習得して現在でも役立っているスキルとしては、以下のようなものがあるので、「コンビニのバイト」よりは役立つかなという所感です。

  • 人月など工数の概念を理解している
  • シーケンス図やE-R図などの設計成果物が読める
  • PMBOKなどをベースにプロジェクトマネジメントに関するコントロールができる

また、今の30代後半〜40代のCTOやマネジメントクラスの、 採用に対して裁量権を持っているエンジニアは大抵SIerを経由して来ています。

そういう人たちは「SIer出身だったら最低限ここはわかるだろう」みたいな期待をしてくれることもあります。 (これ自体が結構バイアスかかってる意見ですが)

エンジニアに転職してから最初の3ヶ月は辛い?

未経験からハイレベルな会社にエンジニアとして入社すると最初の3ヶ月は心理的負担は避けられない件について

【仕事辛い】未経験エンジニアが採用された入社3ヶ月後の仕事事情と対処法

など、エンジニアに転職してからの最初の3か月はしんどい説があるかと思います。

確かに、入社したらすぐコード書けるはずもなく、以下のような難所が待っています。

  • 環境構築
  • 担当プロダクトの業務要件、機能の理解
  • プロダクションコードの仕様理解
  • 使用ライブラリの把握
  • マイクロサービスの関連性をはじめとした、全体アーキテクチャの把握
  • GitフローやGitHubフローに則った開発
  • DB、テーブル構造の理解
  • SQLでのデータ抽出
  • SwaggerなどAPIドキュメントを読んでやり取りされるデータ、リソースの理解

自分は幸いにも未経験が多い部署でオンボーディング資料が充実していた&周りに恵まれたので辛くなかったです。

ただ、多かれ少なかれしんどい部分はあるかと思いますので、ストレスを下げるTipsを記載してみます。

ストレスを下げる方法

その1. エンジニアの仕事の流れを理解する

最初はエンジニアの仕事の仕方がわからないと思いますが、細部は違えど、以下のような流れがあるはずです。 これらを抑えておけば大やけどはしないはずです。(これは実際に自社のSlackに書いてあった内容で、すごくいいなと思ったので書きます)

  • 要件把握
    • どんな背景・課題があるか
    • 何を実現する必要があるか
  • 見積もり
    • 期限はいつか
    • どのぐらいかかりそうか
  • 修正箇所把握、修正方針決定
    • この時点で必ず先輩からレビューをもらう
    • 見積もった内容から変更があれば報告する
  • 実装
    • 大幅な手戻りがないようにWIPとして最初にPRを作ってこまめにレビューしてもらう
  • テスト
  • リリース
その2. 質問力を上げる

質問力を上げると「質問の意味がわからない」「質問が下手」などのご指導をされることなく、回答をもらいやすくなります。

esakibelaなどのドキュメンテーションツールがある場合は、そこに質問内容をまとめてから聞くといいでしょう。ラバーダッキングにもなり、話しながら自己解決することを防ぐことができます。

また、やっちゃいけない質問をしないという対策も有用です。アンチパターンとしては以下のようなものがあります。

【エンジニア向け】質問の仕方ワースト5【質問テンプレート付き】

その3. Gitを理解する

やはり初心者にとってGitは大きなつらみポイントかと思います。

もし未経験でWeb系に転職して、有給消化中に何を勉強するか?となったら私はGit(GitHub)と答えるでしょう。

なぜなら、Gitはチーム開発において重要なものであり、 扱いが下手だとチームに迷惑がかかるからです。

現場に入る前にはなにか技術書的なやつは1つぐらいはやっておくべきでしょう。 以下をおすすめします。

www.udemy.com

ただ私の場合ですが、これは勉強も大事ですが、結局慣れが一番でした。

Gitは毎日使うので、いつの間にかできるようになっています。(アドバイスになってない)

tipsとしては、エディタの機能を使うのもオススメです。 自分はdiffはVScodeやRubyMineの機能で確認するほうがわかりやすいので、そちらで確認し、そのままadd→commit→pushまで行います。

一方、ブランチ操作やコミットログの編集などはターミナルがやりやすいので、そっちから行います。

おわりに

転職してよかったか?

良かったです。:waiwai:

もし似たようなキャリアパスで悩んでいる方がいれば、TwitterでDMくれれば相談にのりますよ。(忙しくて見れない可能性もあるけど)

もし最後まで読んでくださった方がいたら、ありがとうございました。 またたまーにブログを書いてこうと思うので、よろしくおねがいします。

よければTwitterフォローしてください。

https://twitter.com/_MoneyForest