未経験からエンジニアへの転職の現実

はじめに

悩む未経験エンジニア

リモートワークで出勤不要!
需要も多く独立できる!
年収1000万など高年収が可能!

などなど広告やインフルエンサーが発進しておりますが、
実際に未経験からエンジニアに転職したら現実どんな感じなのか
気になる方は多いと思います。

この記事は未経験からエンジニアを目指している方、もしくは既にエンジニアになった方向けの記事です。
(併せてこちらの記事もどうぞ)

未経験からエンジニアに転職された方が、実際にエンジニアになられて「ぶちあたる壁」「困ったこと」などの本音を記載して、経験者の立場から見てのアドバイス等を記載していきます。

エンジニアになること自体が目的ではなく、
その先の高年収、自由な働き方等を実現させるための転職、キャリアチェンジだと思いますので、
ぜひ、対策を立ててチャレンジしていただきたいなと思っております。

私自身は、学生の頃からプログラムやコンピュータサイエンスの勉強をしてきたのですが、
新卒・中途採用を問わず、未経験から入社してきた方を見てきましたので、
その際に聞いた話や育成計画を立ててきたので、そのへんの経験を元に記事を書いております。

ですので、面接対策などの選考よりも「エンジニアになってからの対策をメイン」にした記事になります。

未経験からITエンジニアを目指す方法

目指す方法については、私自身が経験したわけではないので、
中途で入社してきた未経験のエンジニア職の方から聞いた話になります。

私が聞いた中では、以下の2パターンです。

  • スクールでプログラミングを学習して、スクールの紹介で入社
  • スクールでプログラミングを学習して、転職活動は自分で実施

どちらにしろ、スクールに通うのが近道かと思われます。

私自身の経験からしても、全くの未経験から本などで自力で学習するのはかなりハードルが高いと思われます。

私自身、プログラミングなどは慣れてますが、初めてクラウドに触るときは「どこから始めたらいいの?」「急に高額なお金をとられそう」みたいな感じだったのでネットで検索した動画からスタートしました。

また、前職ではパッケージ製品の追加機能でプログラミングやってましたという方で中途で入社してこられた方でも、正直最初は使い物にならず1ヶ月くらいスクールに通ってもらいました。

ある程度、エンジニア、もしくはそれに近い経験、知識がある場合でもそういう状態なので、
未経験からのスタートはかなり難易度はかなり高いと言えるでしょう。

未経験からエンジニアに転職して聞いた本音

未経験から見事エンジニアへの転職を達成された方から聞いた話で、
以下のような話をよく聞きます。

  • スクールで習ったことと、現場のプログラミングコードはレベルが違う
  • 勉強することの範囲が広い
  • 何から勉強して良いかわからない(もしくは何を勉強して良いかわからない)
  • 正解がない

それぞれ、細かく見ていきましょう!

スクールで習ったことと、現場のプログラミングコードはレベルが違う

こちらはスクールで学習後に入社された方の意見になります。

未経験な状態からJava、PHPなどのプログラミング言語をスクールで学習してみたが
いざ、現場に配属されてみると依頼された作業ができないといったことはよくあります。
なぜ、こんなことが発生するのでしょうか?

学習時間不足

まず、一つ目にあげられるのがこれです。

スクールで学習する期間はコースやスクールにもよるとは思いますが、
2週間〜数ヶ月のスクールが多いと思います。

その中でできるカリキュラムといえば、簡単なホームページを作ってみるとか、
簡単な演算処理をやってみるとか、そういったレベルしかできないと思います。

実際にプログラミングの本を見るとわかると思いますが、
非常に分厚く、かつ1つのプログラミング言語をとっても様々な書籍が出版されており、
4〜5年エンジニアとして現場に出ているメンバーでも全てを理解している人は少ないです。

というかベテランでもいないと思います。
それくらい学習すべき技術の範囲は広いですし、一つ一つ深堀すれば果てしなく深かったりします。

英語でいうと「This is a pen.」などの簡単な文法をいくつか習って、
いきなりアメリカ人と仕事してねみたいな状態かなと思います。
(つっこみは受け付けますw)

ましてや、未経験からエンジニアになられた方であれば、他のメンバーより一層の学習が求められます。
プライベートを犠牲にするなどすると、継続的な学習は不可能なので現実的な学習計画を転職後も継続する必要があることを理解しておきましょう。

学習計画などに関しては、先輩社員などに相談するといいと思います。

人の書いたコードを読めない

プログラミング初心者あるあるです。

調べながらある程度、自身でプログラミングが進められるようになっても
他人が書いたプログラミングを読んで理解するというのは意外とできなかったりします。

ましてや現場で動いているコードは、長年いろんな人が修正を加えてきたものであり、
すべて理路整然と書かれている場合が非常に稀です。

エンジニアとして現場に配属後に、未経験だからと簡単な新規機能のプログラミングを任せてくれる現場などであれば、段階を踏めるのかもしれませんが、余裕のない現場で未経験の方に合わせたタスクを生み出すのは大変です。

タイミングや現場の状況によっては(先輩エンジニアの感覚で)「簡単な修正だから」と既存のコードの修正をお願いするケースも多いです。

その場合、修正する箇所自体は確かに簡単なのですが、その前後を理解するには既存のソースコードを読まねばならず、その理解はかなり大変です。(たとえ経験者であっても)

ここもいくつかの現場を経験するうちにコツを掴んでいきますが、
最初は難易度がかなり高いので、未経験エンジニアが折れそうになる第一段階かと思われます。

英語でいうとw
「This is a pen.」レベルで、英語の論文を「〇〇っていう結論になってるけど、△△という理由で□□になったから、そんな感じで修正しておいて」っていう感じなのかな?w

これは、自分でコードを読む前に、先輩にある程度プログラミングを説明してもらった方がいいと思います。(お願いしなくてもするとは思いますが、結構わからないと思いますw)

私の場合の例ですが、以下の内容を意識して聞くと良いのかなと思います。

  • 機能の目的
    • このプログラミングはなんのために存在するのか。
  • 対応前後の状態
    • 現在、どういう動作をしていて、どういう動作になればいいのか。
  • システム全体・プログラミングの構造
    • いきなりシステム全体は難しいかもしれませんが、プログラミングの構造はわかっておいた方が良いです。
    • ディレクトリ(フォルダ)の構造はどうなっているのか。
    • 今回の修正する上で、どのあたりから見ていけばよいのか。
    • プログラムの動かし方、過去の動かした結果の一覧など(ドキュメントがない場合もあります)

学習することの範囲が広い

これもよく聞きます。

スクールでJavaの学習をしてきました!

という未経験エンジニアが通用しないのは↑に記載済みですが、
それ以外にも学習することは多いです。

以下、最低限っぽいところを抜粋した例になります。

  • データベース
    • 組み込みシステムなどであればわからないですが、Webサービス、業務システムなどであれば、基本的にデータベースに接続しないシステムはあり得ません。
    • データベース自体の設定までは、最初知らなくてもいいと思いますが、
      データベースに登録されているデータを操作するためのSQLの基本的な知識は必要な場合が多いです。
  • OS・インフラなどの知識
    • これもどこまで必要なのかは現場によるのですが、以下のようなことはできた方がいいと思います。
      • Linux環境であれば、Linuxコマンドを使える。
        • ls、pwd、mkdirなどのファイル、フォルダ関連の操作
        • pingなどのネットワークの確認などの操作などなど
      • メモリ、CPU、ディスクなどの概要と確認方法
        • トラブルが発生するのは、このへんかデータベース周りが多いです。

2冊ずつくらい、それっぽい書籍へのリンクを貼っておきます。

このように、プログラミング以外にも学習することが多く、
一つ一つがかなり重いです。(それぞれ細分化されて専門分野がいます。)

未経験エンジニアに限らず、エンジニアとして生きてくためには幅広い技術を
現場で必要なものなどから優先順位をつけてバランスを見ながら徐々に理解していくことが重要なので、
学習計画はこれが正解といったものがなく難しいです。

一人でやってると、先輩エンジニアが状況を理解しておらず「そんなこともわからないのか」ってなっちゃったりするので、
積極的に周りに相談したりして、自分は「これがわかっている」「これがわからない」「今学習してるのはこれだ」と理解してもらえるようにした方がいいのかなと思います。

正解がない

これもよく言われます。

未経験から転職されてきたエンジニアからよく言われるのが、
「◯◯さんに聞いたが、『たぶん』『〜だと思う』『調べておく』という表現で正確にわかってなさそうだった」という内容です。

これ、結構、未経験の方で理解されて転職される方少ないんじゃないかなと思います。

↑に書いたように、対応している範囲が広いために、
すべてを理解してる人が現場にいないのが普通です。

かつ、技術はどんどんアップデートされていき状況は変わっていきます。
Java一つとってもバージョンがどんどん上がっていき、
詳しい人でも日々学習していかないとキャッチアップできません。

ある程度、キャリアのある先輩エンジニアたちでも「持っている知識から原因、対策のあたりをつける」(仮説を立てる)、「サンプルプログラムを作って簡単に検証してみたり、ドキュメントを調べてみたり仮説があたってるか確認する」(検証)をして現場で仕事をしています。

そのため、未経験エンジニアでも以下のような姿勢・行動が重要になります。

  • タスクで出てきた不明点は、とりあえず調べる
    • ネット等でまずは検索してみて、解消されそうな糸口を見つける。
    • 簡単なコードなどを書いて自分で検証する。
      • 更新が追いついていないのか公式ドキュメントでさえ誤りの場合があります。(Googleなどでも日本語ドキュメントと英語ドキュメントで内容が違う場合などもあります)
    • セキュリティなどリスクがある場合は、調べた結果をリーダーなどに問題ないか確認する。
  • 空き時間に深堀する
    • タスクの対応としては、そこまで深堀しなくても「とりあえず」対応できる場合も多いですが、
      それだけだと理解が不十分な場合も多い。
    • 体系的にまとまった書籍、あるいは公式ドキュメントなどを確認して理解度を深めておく。

特に空き時間に深堀してるかどうかで、その後の成長度合いは大きく変わります。

その場しのぎでタスクの対応はできても、
理解不足であるためにトラブル発生時に対応できなかったり、
ちょっと違う技術になったときに応用がきかなかったりするためです。

まとめ

今回、未経験からエンジニアに転職された方々から伺った話、
あるいは育成等を通した経験から記事を書いてみました。

今後、各々の項目について深堀して記事のリンクをつけて、
ロードマップ等にできたらいいなと考えております。

ちなみに、入社後に年収を上げるための方法の記事も書いております。
よかったらどうぞ!

ご意見等も歓迎ですので、お気軽にコメントいただければと思います。

最後まで読んでいただいてありがとうございました。

コメントする