はじめに
初めまして!新卒2年目エンジニアのA.Kと申します。
この度、晴れてSES→自社開発のフルスタックエンジニアへの転職が決まりました。
繁忙期は日によって1日12時間労働、また11月にボディメイクの大会に出場することを決めたため週5トレーニング+減量生活でしたが、なんとか両立しながら達成しました。
これまでやってきたことを全てまとめたので、長文ですがお役に立てれば幸いです。
前提
・ジュニアレベルの駆け出しエンジニアが対象
・今回の転職は開発の実務経験がない・かつ第二新卒に値するのでポテンシャル採用の色合いが強い
・「自分にとって必要な実務経験が積めるかどうか」を最重要視したため、転職後の年収はほぼ横ばい
→ 経験が浅いため採用いただけるだけでありがたいというスタンスで臨みました。
これまでの経緯
文系学部卒でSESに新卒入社
ーなぜSESのエンジニアを選んだのか?
実のところ、もともとエンジニア志望ではなく、就職活動中に流れに身を任せていた結果、システムエンジニアとしての道を選ぶことになりました。就職活動時には特に「これがやりたい!」という明確な目標がなく、業界や業種を問わず幅広く面接を受けていたのです。その結果、複数の企業から内定をいただきましたが、そのほとんどが営業職でした。その中で、唯一のSE職であったのが、現在のSES企業です。
エンジニアを選んだ決め手は、「どうせやりたいことがないなら、成長著しいIT技術を使って社会に貢献できたら良いな」という漠然とした考えと、何かを学び続けることが苦ではない自分なら、エンジニアの道も続けられそうだと思ったからです。また、現職を選んだ理由としては、私の「勉強家で好奇心旺盛な性格」を非常に評価していただいたこと、さらに未経験者を育成する体制が整っていたことが大きかったです。ITの基礎からしっかりとしたカリキュラム形式の研修が用意されており、必ず社内の先輩SEと一緒に現場に参画できるという点が、未経験の私にとって魅力的でした。
入社当時、SESという業態自体に詳しくなかったのですが、「どうやらエンジニアになれるらしい」「現場で経験が積めるらしい」という気持ちで入社しました。無知ゆえに、自分が想像もできない世界に飛び込むことにワクワクしていたのを覚えています。(若いですね~。。どうか当時の私を責めないでください。。)
ちなみに今のところ、この選択にあまり後悔はないです。
ー入社後は?
入社後は、Javaをメインとしたチーム開発研修を受けました。これが私のプログラミングデビューとなりましたが、全く理解が追いつかず、焦るあまり更に自分の首を絞め、研修中は泣きながら取り組んでいました。研修担当者からは「プログラミングに脳筋プレーは通じねえよ」と言われ、精神的にもどん底の状態でした。そのため、個人学習にまで手が回らないほど追い込まれていました。
そんな中、同期のサポートと、筋トレによるストレス解消のおかげで、何とか研修を乗り越えることができました。今振り返ると、現場に入る際の心構えや、セキュリティの観点から厳しく指導を受けたことは、今でも感謝しています。
研修を終えた後、私は既存システムの運用保守プロジェクトに配属されることになりました。当時の私は、「現場に入れるだけでありがたい」と感じており、どんな仕事でも請け負う覚悟ができていました。また、社内の先輩SEと一緒に参画できたため、非常に心強かったです。
実際の業務では、コードを書く機会はほとんどなく、主にExcelやPowerPointを使って報告資料の作成や、アラート対応としてログを確認し、原因を調査する業務が中心でした。運用保守といっても、当時の私にとっては未知の領域ばかりで、しかもフルリモートでの勤務だったこともあり、孤独感や無力感に押しつぶされそうになりながら、泣きながら仕事をすることもありました。
しかし、環境自体は非常にホワイトで、上司が常に気にかけてくれたおかげで、メンタル面では支えられ、何とか乗り越えることができました。
危機感を持ち個人学習を始めるも挫折
新卒1年目の冬、徐々に運用保守の業務にも慣れ、仕事自体には一定の自信がついてきた頃、ふと「このままでいいのか?」という危機感が芽生えました。というのも、実務ではほとんどコードを書く機会がなく、プログラミングスキルが一切向上していないことに気づいたからです。「このままじゃやばい」と感じ、個人学習を始める決意をしました。
当時の自分のスキルレベルとしては、「JavaとSQLがなんとなく読めるけど、それ以外の言語はさっぱり」といった状態でした。そんな中、「何かWebアプリが作れたらいいな」と思い、色々調べてみると、頻繁に出てきたのが「React」というキーワード。「じゃあReactをやってみよう!」という、今振り返れば少し安易な発想で、手を動かすことにしました。
早速、ググって見つけた「ReactでNetflixクローンを作る」というチュートリアルに挑戦しましたが、内容がさっぱり理解できず、あえなく挫折(当然といえば当然です。)当時の私はJavaScriptに触れたことすらなかったので、今振り返るとかなり無謀な挑戦だったと言えます。プログラミングに対するアプローチが、相変わらず脳筋だったのです。
それに加えて、何をどこから学べば良いかさえ分からない状態で、頼れる人もいませんでした。必死に調べても、正しい学習方法が見えず、情報が多すぎてどれを信じればいいのか混乱するばかりでした。やるべきことが多すぎて手のつけ方がわからず、完全に迷子の状態。そして、学習方法を教えてくれるような存在もおらず、ひたすら孤独な学習の日々が続きました。当時は「もう詰んだ…」とさえ思っていました。
(今考えると、突っ込みどころが多すぎますが、当時の私を温かく見守っていただければと思います。)
ちなみに、私が参画していた運用保守のプロジェクトは、1年目の冬で契約終了予定だったものの、クライアントとの調整で2年目の夏まで契約が延長されました。私はその間に、社内の営業さんや上司に「開発案件に参画したい」という希望を伝え、案件を探してもらえることになっていました。この時自分の意見を主張したつもりでいましたが、もっと強く押し通してもよかったなあ。
JISOUに加入
このまま独力で突っ走っても、さらに迷宮入りするのは目に見えていました。やはり、わかっている人に聞くのが一番速いと考え、何とかして道を見つけようと藁にもすがる思いで、いくつかのエンジニア交流会に顔を出しました。そこで、「何から勉強したらいいんですかね…」といった感じで聞き回っていたところ、たまたま@Sicut_studyさんから声をかけていただきました。
やる気だけはあったので(大切)、プログラミング学習をサポートしていただけることになり、腹を括って本格的に学習を再スタートすることに。こうして私はJISOUの一人目のメンバーとして、プログラミング学習に本格的に取り組むこととなりました。
この頃から、エンジニア関連のイベントにも積極的に参加するようになりました。さまざまな方々と交流を持つことで、自分にとって大きな活力になり、元気をもらえたことを今でも感謝しています。
JISOU加入~転職までの軌跡
JISOUの全学習カリキュラムは下記で公開されています!
こちらを通常業務と並行しながら全てやり切る+Next.jsのキャッチアップを開始し簡単なアプリを作成し終わった段階で転職活動を始め、内定をいただきました。
なお、この期間が約8カ月になります。
学習1カ月目
~やったこと~
・JavaScript基礎&React基礎のインプット(Udemy)
・JavaScript×Reactで学習記録アプリ作成
→Github AcitionsでCICDも実装
・React応用インプット(Udemy)
・作成した学習記録アプリの機能追加
~振り返ってみて~
JavaScriptすら触ったことがなかった私にとって、完全にゼロからのスタートでした。最初の1カ月は、わからないことだらけだけど、とにかく気合で手を動かすという精神で取り組みました。特に学習記録アプリを作成し始めたときは、全然手が動かず、Udemyの講座を見返しながら進めました。AIの自動補完に頼らず、Udemyの復習がてらできる限り自分の力でコードを書くことを意識しました。
最初の目標は、とりあえず動くものを作ること!この時期は不思議なほど焦りがあり、スタイルの適用は後回し&エラーが出るたびにGoogleで一番上に表示された記事を片っ端から参考にしていました。。
また、この時期から自分がつまずいた箇所をQiitaでアウトプットすることを意識していました。今回の採用面接において、日頃からアウトプットを行っていたことは高く評価されました。
余談ですが、学習初日になぜかPCが壊れてしまい、急遽新しいPCを購入する羽目に。。環境構築で負荷がかかってしまったのか、まあ初動の段階で良かった。。
また、外部イベントでLT登壇デビューもしていました。
技術的な内容ではなく、自分がゼロから学習を始めて感じたことをベースにお話ししています。
20代のSEが集まる交流会だったので、反響をいただきました!
LTの内容
学習2カ月目
~やったこと~
・TypeScript基礎のインプット(Udemy)
・TypeScript×Reactで学習記録アプリ作成
(先月JavaScriptで作成したものを再度作成)
~振り返ってみて~
まだ「わからないことを言語化するのが難しい」という状況が続いていました。
ChatGPTに何度も質問していたものの、質問内容が悪くてエラーを引き起こすことが多かったのを覚えています。
このタイミングでメインの使用言語をJavaScriptからTypeScriptに切り替えましたが、理解の深さとしては「型定義が必要なのと、エラーを出してくれるのがありがたい」くらいのレベルでした。それでも、亀のようにゆっくりとですが、少しずつできることを増やしていきました。
例えば、この時期から公式ドキュメントを参照しながら、Reactライブラリ(react-hook-formやReact Testing Library)を使い始めました。
また、学習過程においてSNSで活躍しているエンジニアたちと自分を比較してしまうこともありました。
生成AIの普及もあって、みなさんポートフォリオのレベルがすごく高い。。
しかし「他人は他人、自分は自分」という気持ちで、歯を食いしばって学習を続けました。
学習3カ月目
~やったこと~
・TypeScript×Reactでデジタル名刺アプリ作成
~振り返ってみて~
相変わらず手を動かしながら学習し、インプットは必要になったタイミングで行うというスタイルで学習を進めていました。インプットを続けていると「わかったつもり」になってしまい、実際に手を動かそうとすると全然進まないことがまだまだ多かったのです。
この頃はあまり学習の楽しさを感じることはなく、日々「道のりはまだまだ長い。。甘くない。。」と実感していました。それでも、先月と同様できることを少しずつ増やすべく、今回はバッチ処理の追加や、DBでのデータ管理に中間テーブルを作成するなど、新しいことに挑戦できました。
しかし、この時期になると学習開始からアクセルを踏み続けた反動で疲れが見え始め、タイプミスなどに気づかなくなることが増えていました。そこで、意識的に休息を取ることの重要性にも気づき、学習と休息のバランスを取るよう心がけていました。
(とはいえ結局ほぼ毎日何かしらやっていた記憶も。。)
学習4カ月目
~やったこと~
・TypeScript×React×Yamada UIで一言日記アプリ作成
・JISOUの自由課題としてTypeScript×Reactでフィットネス系のアプリ作成開始
~振り返ってみて~
4カ月目は、「やってみたい!」と思えることに取り掛かれた月です。これまで作成したアプリはJISOUのカリキュラムに沿ったもので、用意されたTODOリストに従って進めるスタイルでしたが、今回の2つのアプリは自分でゼロから仕様を決めて開発しました。(技術スタックはこれまでと全く同じですが)
「自由に何かを作れるのってちょっと楽しいかも」と感じる一方で、初期段階で仕様を固めないと、予定していたものとは違う何かが出来上がってしまうことも学びました。
また、運用保守の現場が忙しく、日によっては12時間稼働することもあったため、学習時間の確保が難しくなりました。ですが、一日10分でも良いから手を動かすことを意識して継続していました。ちなみに、筋トレは精神安定のために週5ペースで続けていました。
もちろん疲れてはいました。が、どれも一旦辞めるという選択肢はありませんでした。
学習5カ月目
~やったこと~
・TypeScript×Reactでフィットネス系のアプリ完成
・Next.jsのインプット(Udemy)
~振り返ってみて~
先月から引き続きアプリの作成に取り組んでいましたが「結局私は何が作りたいんだ?」という迷いが生じ、手は動かしつつも気持ちがついていかない状態でした。正直なところ、「こんな機能を作りたい!」「こんなサービスが欲しい!」という強い思いもなかったんですよね。。また、次第にプログラミング学習に対する解像度の低さを課題として強く認識するようになりました。
具体的には、これまで学んできた内容を応用できなかったり、コンポーネントの切り分けがうまくできず、最終的に管理が難しいコードになってしまうなどの問題がありました。そんなこんなで、最終的には「フィットネス要素ゼロのTwitter風アプリ」が完成してしまいました。
(ダラダラ時間をかけて作ってもしょうがないので、「この月には最終形を出す」とあらかじめ納期を決めていました。)
反省点としては、うまくいっていないときほど一人で籠りがちになっていたことです。(現場の稼働が高かったり、減量中だったことも影響していますが。)もっと開発中のアプリに対してJISOUのメンバーにフィードバックをもらったり、他のエンジニアさんにアドバイスを求めるなど、周りに頼ることをすればよかったと思います。
学習6カ月目
~やったこと~
・TypeScript×React×Next.jsで技術ブログアプリ完成
~振り返ってみて~
心機一転し、Next.jsのキャッチアップに集中した学習月でした。初心に戻って、Udemyでインプットし、復習がてら簡単なアプリを作成するという流れを実践しました。
先月の落ち込みから「本当にSEとしてやっていけるのか?」と不安を抱いていたものの、新しい技術を学ぶ楽しさを久々に感じている自分に少し安心しました。
一方で、当時勤務していたSESでは、希望していた開発案件に参画できず、テスター案件に配属されてしまいました。これには正直心が折れました。(企業側のサポートは十分で、タイミングが合わなかっただけとのことでしたが。)それでも、学習をやめる理由にはならないと考え、ひたすら手を動かし続けました。
また、先月の反省を踏まえ、まだ開発案件に参画できる技術力が足りないという自覚があったため、公式ドキュメントを読み込む時間を増やし、処理内容をしっかり理解することに努めました。
さらに、転職を視野に入れ始めたのもこの頃です。
学習7カ月目
~やったこと~
・個人開発としてリリースするサービスの発案(市場調査、ToDoリスト作成)
・転職準備(職務履歴書作成、面接練習)
~振り返ってみて~
この月は、学習5カ月目で作成したフィットネス系サービスのリメイクと、転職を見据えた自己分析と言語化に取り組みました。前回の反省を生かし、サービス開発の初期段階で詰めが甘かった点を改善するべく、フィットネス市場の調査を行い、ユーザーが欲しがっているサービスや既存のサービスを分析し、さらに「どんな価値をユーザーに提供したいか」をしっかり洗い出してから開発に着手しました。(後日記事にします。)
また、転職活動も並行して進めました。初めての転職活動だったため、JISOUのサポートを借りながら、これまでの経験を深掘りし、自己分析を進めました。(詳しくは後述します。)転職活動では、むやみに多くの企業にエントリーするのではなく、自分が本当に積みたい経験を得られると感じた一社に絞って応募しました。
この時期からQiitaの投稿が少なくなりましたが、これは学習を手を動かすフェーズではなく、自己分析や市場調査に集中していたためです。振り返ってみると、考えていたことなどはTwitterなんかで逐一発信しておけば良かったなと思います。(今回みたいな記事書く時にも役立つし。。)
学習8カ月目
~やったこと~
・個人開発としてリリースするサービスの開発
・転職活動(一次面接、二次面接、内定承諾🎉)
~振り返ってみて~
この月は転職活動に注力していました。初めての転職活動であり、さらに一社に絞って応募していたこともあって、常に緊張感が絶えず、自分に余裕がない状態でした。個人開発に取り組む余裕はなく、毎日ひたすら業務経歴書の深掘りや言語化の練習を繰り返していました。(この部分についても後述します。)
内定をいただいたときは本当にほっとして、これまで努力してきたことが報われたかのような感覚がありました。内定を承諾した後、再び個人開発のコーディングを再開しました。
これまでの学習と大きな変化があったのは、これまで感じていた「早くカリキュラムをこなさないと!」という焦りや、何かに追われている感覚が大きかったのに対して、今では自分のペースで理解を深めながら学習を進められているという点です。学習を始めて8カ月目にして、やっと純粋に楽しんで学べるようになったのだと感じています。
何度もSEをやめたいと思う瞬間がありましたが、続けていてよかったと思えた初めての月でした。
転職に向けてやったこと
・自分の価値観や過去の経験の洗い出し
最初から文章にまとめようとすると手が止まってしまうので、とにかく思いつくままに書き出しました。エピソードの大小を問わず、絞り出していきました。
~リスト~
- 志望動機
- なぜ転職するのか
- 入社したらどんなことがしたいか
- 入社したらどんなことを提供できるか
- 目指したいエンジニア像
- エンジニアとして1・3・5年後の将来どうなっていたいか
- 過去参画したPJの説明
- 自分の長所
※上記全項目に対してChat GPTに想定質問をいくつか出してもらい、回答をまとめていました。(私は最終的にPDF19ページくらいになりました。巻物みたいでした。)
・自分のアピールポイントや強みを明確にする
輝かしい経歴がなくても、自分にしかない強みは必ずあるはずですから、「これだけは面接官に伝えたい!」というポイントを2~3つ準備しました。私の場合、学習意欲の高さや継続力をアピールポイントに設定しました。
・自分の弱み、不安、懸念点について改善策やリカバリー案を考えておく
いきなり聞かれて答えに詰まることがないよう、自分の弱みや不安な点についてあらかじめ回答を用意しておきました。懸念点はなるべく事前に潰しておくと、本番も安心して臨むことができます。例えば、私の場合、実務経験で開発工程を担当したことがなかったため、その点を個人学習で補う努力をしていることを伝えられるようにしました。
・転職先で自分がどうコミットできるかを考えておく。
実務経験が少ないながらも、これまでの自分の経験と結びつけて「ポテンシャルを感じられる」答えを準備しました。面接官に「この人が現場で活躍している姿」が想像できるような解像度の高い話ができれば、より良い印象を与えられます。
・面接練習
これは一番やって良かったことです。
元々私は面接にものすごく苦手意識があったので、本番は自信をもって自分の魅力を届けたい!と思い着手しました。
具体的には、職務経歴書の内容に沿って、自分が伝えたいことをすべて言語化し、ひたすら一人で話す練習をしました。毎日継続していたことで、面接中は言葉に詰まることがなくなりました。
また、すでに話すべき内容が決まっているので気持ち的にも楽でした。
経験が浅い場合、面接でポテンシャルや熱意をアピールすることが重要なので、言語化に力を入れました。
最初はズタボロでも、数こなせば本当に慣れてきます。
~方法~
1.前述した・自分の価値観や過去の経験の洗い出しの内容を2~3分程度のスピーチ形式にまとめる(Chat GPTに手伝ってもらってもいいと思います。)
2.原稿ができたら、絶対に伝えておきたいキーワードにいくつか印をつけておく
3.最初は原稿を読みながら練習し、慣れてきたらだんだん目を離していく。面接までには原稿がなくても話せるようにしておく(丸暗記ではなく、2で抑えたポイントはしっかり伝えられるように)
4.上記の手順をひたすらやりこむ(余力があれば録音しておくと振り返れる)
・会社訪問(できれば)
選考先の企業にお邪魔し、現場のSEさんと直接お話をしました。
実際に足を運ぶことで、自分が持っていた企業のイメージとのギャップを埋めやすくなりました。
伝えたいこと
・印象や人柄は超大事らしい
私の脳筋ぶりがいい感じに発揮され、転職時にプラスに働いてくれました。
面接時にいただいたフィードバックで「いい意味で日本のエンジニアらしくない、職場が明るくなりそう」と言われました。カジュアル面談時から笑顔でハキハキ答えることを意識していたので、自分が思っていた以上に良い印象を与えたのかもしれません。経験や技術力ももちろん大切ですが、結局人ですから「この人と一緒に働きたい」と思ってもらえるとかなり加点になるのではないでしょうか。また、熱意があるなら前面に出すべきであり、実際に面接官から「学べる環境を渇望しているのがよく伝わる」と好意的な評価をいただきました。
・「自分が何をギブ出来るか」の視点で面接に挑む
経験が浅いエンジニアにありがちですが、自分が求める環境や待遇を強調しがちです(もちろんそれも大切ですが)。しかし、採用する側にとってのメリットも欲しいところではあります。技術力がなくとも、絶対に何かしらのギブできる要素はあるはずです。例えば、自分が学び続ける姿勢を社内メンバーに共有することで、周囲に良い影響を与えられるかもしれません。この視点を日常から意識できると強いですね。
・自分の弱みを謙虚に受け止め、改善に向けて少しでも動いておくこと
自分の弱みを隠すのではなく、むしろ自ら開示して、それに対して改善に向けて行動している姿勢を示すことで、好印象を与えることができます。例えばですが、実務経験が足りない場合は個人開発で補うなど。採用側に安心感を与えるためにも、自分から弱みをオープンにして、信頼関係を築くことを意識していました。
弱みだって武器になりますからね~。
おわりに
この8カ月間、何度も挫折しかけましたが、とにかく踏ん張って行動し続けました。
お世辞にもつよつよエンジニアと言えない私が、諦めの悪さと脳筋プレーで欲しかった環境を手に入れました。励まされた方もいるのではないでしょうか。
SNSを覗くとたくさんの声がありますが、ぜひ自分がやるべきことから目をそらさず歩みを進めていってください。
そして改めてにはなりますが、新卒入社時からお世話になったSES企業(本当に良い人ばかりでした)、そして学習をサポートいただいたエンジニアの皆さんには大変感謝しています。
転職がゴールではなく、むしろここからがスタートです。
自分の理想に向かって、今後も精力的に活動を続けてまいります。
JISOUのメンバー募集中!
プログラミングコーチングJISOUでは、新たなメンバーを募集しています。
日本一のアウトプットコミュニティでキャリアアップしませんか?
興味のある方は、ぜひホームページをのぞいてみてください!
▼▼▼
参考
転職準備でお世話になった記事