転職活動 Advent Calendar 2024 の記事です。
こんにちは、とまだです。
突然ですが、未経験からのエンジニア転職に一番大事なことは何でしょうか?
私は、プログラミング未経験から学習し、自社開発企業の Web アプリケーションエンジニアとして転職しました。
ただ、当時はプログラミング未経験からの学習が大変で、何から始めればいいのかわからずに苦労した経験があります。
結果的に転職した経験から気づいたのは、「他との差別化」が転職成功のカギだったということです。
今回は私の体験談を交えながら、学習のポイントや転職成功のためのコツをお伝えしていきたいと思います!
はじめに
対象となる読者
- 未経験からエンジニア転職を目指す方
- プログラミング学習を始めたばかりの方
- エンジニア転職で悩んでいる方
この記事で得られること
- プログラミング学習の効率的な進め方
- 他にも必要なスキルや知識
- 未経験からエンジニア転職を成功させるためのポイント
- ポートフォリオ開発のコツ
1. まず考えるべきは「学習の大きな方針」
さて、エンジニアになるなら何かしらのプログラミング言語を学ぶ必要があります。
人気どころであれば、Ruby や Python、JavaScript など、多くの候補がありますよね。
そんな中、私が技術選定において重視したポイントを紹介します。
1-1. 市場価値と学習効率のバランス
せっかくエンジニアになるなら、市場価値の高い技術を学びたいと考える方も多いでしょう。
ただし、未経験からの転職では、学習効率も重要です。
私の場合、以下の 2 点を重視して、Ruby on Railsを選択しました。
-
学習のしやすさ
- 直感的に理解しやすい文法
- 日本語の情報が豊富
- 無料の教材が充実
-
市場価値
- 実務で広く使用されている
- 未経験でも採用実績が多い
- フルスタック開発が可能
私はプログラミング学習者のメンターをすることもありますが、学習しながら 「これは役に立つのか?」 と疑問を抱く方も多いです。
自分が学んでいるものが本当に役立つのか疑ってしまうと、モチベーションの維持も大変になりますよね。
(気持ちはよくわかります)
そういった不安を抱かないようにも、最初に「学習の大きな方針」を決めておくことが重要だと感じました。
1-2. なぜ Ruby on Rails だったのか
未経験からエンジニア転職を目指すにあたり、他にも選択肢はありました。
- Python + 機械学習 → 将来性は高そう
- JavaScript + React → フロントエンド需要は伸びそう
- Java + Spring → 大企業で使われている
しかし、「未経験からの転職」という目標に照らして考えると、Ruby on Rails には以下のような優位性があったと感じました。
-
Web アプリケーションの全体像が掴みやすい
- MVC モデルが理解しやすい
- データベースの扱いが直感的
- 設定より規約(Convention over Configuration)の思想
-
実務で必要なスキルが自然と身につく
- データベースの設計を学べる
- 実際の Web アプリケーションの開発ができる
- フロントエンドからバックエンドまで幅広く学べる
-
教材や学習環境が整っている
- 日本語の情報が豊富
- スクールでの採用実績が多い
- 質問しやすい環境がある
この選択は結果的に正解だったと思っており、今からフルスタックエンジニアを目指す方にもおすすめできる選択だと感じています。
特に、いろいろな手段で学習できる環境が整っていることは、未経験者にとっては大きなメリットですね!
また、ポートフォリオを作るにあたっても、データ操作を簡単に扱える分、アプリケーションの開発がスムーズに進みました。
2. 具体的な学習ロードマップ
では、実際の学習の流れを見ていきましょう。
同じように、未経験からエンジニア転職を目指す方にとっても参考になるかもしれません。
Phase 1:プログラミング言語の基礎
最初は以下のような学習リソースを使い、しっかりと Ruby の基礎を固めることに集中しました。
ここで 2 ヶ月ぐらいかかっています。
-
Progate(無料)
- プログラミングの概念を掴む
- 簡単な文法を習得
- 基本的な Web の仕組みを理解
-
プログラミング関連の書籍
- より詳しい文法の理解
- プログラミングの考え方の習得
- 実践的なコードの書き方
-
Udemy
- 動画で視覚的に学習
- 実践的な例題を解く
- 応用的な使い方を知る
この段階で特に意識したのは、基礎をしっかり固めることです。
よくある失敗として「とりあえずフレームワークを使ってみる」というアプローチがありますが、以下の理由から避けた方がいいと感じました。
- 基礎が弱いとエラーの原因が分からない
- フレームワークの仕組みが理解できない
- 応用が効かない
もちろん、楽しく開発することが目的であれば、フレームワークを使ってみるのもいいと思います。
ただ、最短でエンジニア転職を目指すのであれば、まずは基礎をしっかり固めることが重要だと感じました。
Phase 2:フレームワーク学習
Ruby の基礎を身につけた後は、次は Ruby on Rails の学習に移りました。
(約 4 ヶ月)
ありきたりではあるものの、以下の 2 つの方法を組み合わせて学習しました。
-
書籍と Udemy の併用
- 自分のペースで学習
- 分からないところを繰り返し
- 複数の視点からの理解
-
プログラミングスクールへの通学
- 体系的なカリキュラム
- プロからのフィードバック
- 限られたスケジュール内での集中学習
特にプログラミングスクールは、当初は「お金がもったいないかも」と悩みましたが、結果的に以下の点で非常に効果的だったと思います。
-
実践的な開発手法が学べる
- Git/GitHub の使い方
- チーム開発の進め方
- コードレビューの経験
-
プロの目線でフィードバックがもらえる
- コードの書き方の指導
- 設計の考え方
- 現場での常識
-
体系的な学習ができる
- 順序立てた学習
- 抜けのない基礎固め
- 目標に向けた計画的な進行
2 ヶ月程度のスクールでしたが、ここで体系的に学習することで、後の学習が非常にスムーズに進むことができました。
また、実際にエンジニアとして働いている声を聞くことで、**「エンジニアとしてのイメージ」**が具体的になり、モチベーションも上がりました。
Ruby on Rails の学習についてはここには書ききれないので、興味があれば以下の記事も読んでみてください。
Phase 3:差別化のためのインフラ学習
プログラミングスクールに通ったり、他にも未経験からエンジニア転職を目指す方と情報交換する中で、気づいたことがあります。
- 「プログラミングだけができても、他の未経験転職者との差別化は難しいのでは?」
なぜなら全くの未学習からでも、スクールに通ったり教材を使えば、誰でもプログラミングは学べるからです。
(もちろん簡単ではないですが...)
しかし、実際の開発現場ではそれだけでは通用しないので、転職に有利になるスキルも他に身に付けることにしました。
正直、転職するだけならここまでの学習は必要なかったかもしれません。
ただ、せっかくならレベルの高い現場&好条件で転職したかったので一歩先のスキルを身につけることにしました。
3-1. インフラ周りの知識
特に力を入れたのがAWS 認定資格の取得です。
Ruby on Rails を学びながら本や Udemy をフル活用し、1 年間で以下の資格を取得しました。
- AWS Solutions Architect Associate
- AWS Developer Associate
- AWS SysOps Administrator Associate
- AWS Solutions Architect Professional
- AWS DevOps Engineer Professional
- AWS Security Specialty
特に、プロフェッショナルレベルの 2 つは、未経験から取得するのはひじょーーーに大変で、何度も挫折しそうになりましたが、どちらも 一発合格 できたときは感動しました。
AWS のスキルが身についたのはもちろんメリットですが、それ以上に以下のような効果がありました。
-
実務で必要な考え方が身につく
- アプリケーションのデプロイ戦略
- セキュリティの考え方
- スケーラビリティの設計
- コスト管理の視点
-
現代の Web 開発の全体像が見えてくる
- マイクロサービスアーキテクチャの理解
- コンテナ技術の位置づけ
- CI/CD の重要性
- 監視・ロギングの必要性
-
チーム開発・運用の視点が身につく
- 開発環境の統一(Docker)
- 自動テスト・デプロイの仕組み
- コードの品質管理
- デプロイ後の運用
これらの知識は、後のポートフォリオ開発で大きく活きることになりました。
また、資格取得はわかりやすく「実力の証明」としても使え、面接の度に「すごいね!」と言われることが多かったです。
実際、面接担当だった方と後に飲んだ際、「これだけの AWS 資格を持っているのが最後の決め手だった」と言われたことがあります。
資格取得は大変ですが、その分だけ評価されることもあるので、頑張って取得する価値はあると感じました。
この経験があるので、未経験からエンジニア転職を目指す方には、個人的には AWS の資格取得を強くおすすめ しています。
興味がある方は、以下の記事を参考にしてみてください!
3-2. 開発プロセスの理解
さて、AWS を学習している中で、開発プロセスだったり、実際の現場での運用知識の必要性を痛感したところです。
そこで、AWS の学習と並行して、以下のような開発プロセスも学びました。
-
Docker/コンテナ技術
- 開発環境の統一
- 本番環境との整合性
- マイクロサービスへの対応
-
CI/CD
- 自動テストの実行
- 継続的なデプロイ
- コードの静的解析
-
モニタリング/ロギング
- エラーの早期発見
- パフォーマンス監視
- Slack との連携
これらの知識は、ポートフォリオ開発だけでなく、実際の現場でも大いに活かされたので、大変でも取り組んでよかったと思っています。
また、ちゃんと学習することで、なぜこの技術が必要なのか という理由が明確になり、面接でも自信を持って語ることができました。
Phase 4:ポートフォリオ開発
ここまでの学習を活かし、現場を意識したポートフォリオの開発に取り組みました。
私が作ったのは 「筋トレ記録アプリ」 です。
コロナ禍でジムに行けない方が増えた中、自分を含めて筋トレを始める方が増えていると感じたので、このアプリを作ることにしました。
機能自体はシンプルにデータ 登録・閲覧・編集・削除 (CRUD) のみですが、それよりも以下の点に注力しています。
-
コードの品質管理
- Lint ツールの導入 (RuboCop)
- テストコードの実装 (RSpec)
-
本番環境の構築
- AWS 環境構築(ECS/Fargate)
- コンテナ化(Docker)
- ドメイン取得・SSL 対応
-
CI/CD パイプライン
- CircleCI の導入
- 自動テスト
- 自動デプロイ
-
運用面の考慮
- Slack への通知機能
- エラー監視
- ロギング
こうして振り返ってみると、どれも「現場で必要なスキル」を意識して取り組んでいたことに気づきますね。
当時はエラーだらけで大変でしたが、今思えばその経験が今の自分を作ってくれたと感じています。
5. 意外と評価されたポイント
ここからさらに履歴書や職務経歴書、面接対策を行い、数社を受けて無事に内定をいただくことができました。
(詳しいことはここでは割愛しますが、今回が好評だったら別途記事にするかもしれません)
ここでは、自己評価を含めて良かったと感じたポイントを挙げてみます。
5-1. プログラミングスクールでの学習
当初は「独学の方が評価されるのでは?」と考えていましたが、先述の通り意外とスクールでの学習も評価されていたそうです。
中途半端に学習しているよりも、しっかりと学び切って卒業した人の方が、確かに採用したいですよね。
ただ、個人的には 「あくまで自習もした上で」 というスタンスが大事だったと感じています。
なぜならば、現場に入ってからはイチから自分で学ぶことが多いため、自己学習のスキルも重要だからです。
5-2. 現場を意識した逆算的な学習
AWS をはじめ、インフラ周りの知識や開発プロセスの理解は、実際の現場で活かされることが多かったです。
言い換えると、それは 「現場を意識した逆算的な学習」 だったと言えるかもしれません。
実際、面接でも 「なぜその技術を学んだのか」 という質問が多かったので、その理由を明確に説明できたことが評価されたのかもしれません。
また、現場でいま活きているということは、**まさに「求められるスキル」**だったということですね。
もちろん、求められるスキルは企業によって異なりますが、今回挙げたようなスキルは学んでおいて損はないと感じています。
6. これから始める方へのアドバイス
ここまで順風満帆のように見えるかもしれませんが、実際には現場に入ってから何度もつまずきました。
そこで、「こうしておけばよかった」という反省点を挙げてみます。
6-1. もっとちゃんと学んでおけばよかったスキル
Git の使い方
今更言うまでもありませんが、Git はエンジニアにとって必須のスキルです。
私は学習中にも Git を使い add
、commit
、push
などの基本的な操作は覚えていましたが、ブランチの切り方やマージの仕方など、実際の現場で使うとなるとまだまだ不慣れでした。
また、特に 「コンフリクトの解消」 は、実際の現場でよくある問題なので、しっかりと練習しておくとよいでしょう。
(実際、ミスると迷惑をかけるので注意が必要です)
学習中の方で、より現場レベルに近づきたい方は、以下の記事が参考になるかもしれません!
サーバ/インフラの基礎知識
これは私が AWS を学んでいる中でも感じたことですが、「サーバやインフラの基礎知識」 はエンジニアとして必須だと感じました。
実際、現場に出てからはサーバのログを見たり、インフラの設定を変更したりすることが多いので、基本的な知識は身につけておいた方がよいでしょう。
入社してすぐ、本番環境でのトラブルシューティングの際にサーバ・インフラの知識が足りず、泥沼にハマったことがあります...。
ちょっと苦い思い出の一つです。
特に、Linux の基本操作やネットワークの基礎知識はどこに行っても役立つ上、他との差別化にもなるので学んでおきたいところです。
「今から学び直すなら」という視点でまとめた記事もあるので、興味がある方は参考にしてみてください。
6-2. アウトプットの重要性
学習とは少し離れますが、アウトプットの重要性についても触れておきたいと思います。
私は学習期間中から、Qiita や Zenn で少しでも学んだことをアウトプットするようにしていました。
また、機会があったので LT 会 にも参加させていただき、技術的な発表も行っていました。
一見、転職には直接関係ないように見えるかもしれませんが、以下のようなメリットがあったと思っています。
- 学習内容を整理して知識を定着させる
- 自分のスキルをアピールできる
- 人となりを採用担当者に知ってもらえる
アウトプットから直接採用に繋がることは少ないかもしれませんが、やはり自分のことを知ってもらう機会は多いほうがよいですよね。
ちなみに私は職務経歴書の備考欄に必ず Qiita / Zenn の URL を載せ、予め自分のスキルや考え方を知ってもらえる機会を作っていました。
全員が読んでくれていたのかは分かりませんが、少なくとも 面接時間外にも自分のことを知ってもらえるチャンス は作れたと思います。
また、アウトプットを通じて 「説明する力」 も養えるので、面接でも自信を持って話すことができるようになります。
まとめ
私と同じく、未経験からエンジニア転職を目指す方は、学習や進め方に迷うことも多いかと思います。
プログラミング学習は確かに大変ですが、他との差別化するスキルを身につけることで、転職成功への近道になることもあります。
この記事が、皆さんの効率的な学習の一助となれば幸いです。
長文になりましたが、最後まで読んでいただき、ありがとうございました!
最後に学習教材の補足
ここまでに紹介したスキルを身に付けるためのリソースについて、ここまでで紹介しきれなかった分を補足しておきます。
自分で既に教材を持っているなら必要ないですが、これから学習を始める方なら参考になるはずです。
バックエンドエンジニアを目指すなら
とにかくロードマップを知りたい! という方には、以下の記事がおすすめです。
ごちゃごちゃと寄り道せず、バックエンドエンジニアになるための教材ロードマップをまとめています。
フロントエンドエンジニアを目指すなら
今回の記事では Ruby on Rails を中心に話を進めましたが、フロントエンドエンジニアを目指す方にもおすすめの教材ロードマップを作ってあります!
React や TypeScript、Next.js など、モダンなフロントエンド技術を学んで 好条件で転職 したい方は、ぜひ参考にしてみてください。
AWS の学習をスタートするなら
資格に関係なく、ポートフォリオに AWS を使いたいという方には、以下の記事で紹介している Udemy で学んでみるのがおすすめです。
レベル別に紹介しているので、自分の学習状況に合わせて選ぶことができます。
また、とにかく資格を取得したいという方には、以下の記事が参考になるかもしれません。
まずは AWS SAA (Solutions Architect Associate) から取得することをおすすめしています。