📝

未経験でエンジニアとして就職して3年が経って思うこと

2024/11/24に公開

結論

今から未経験でエンジニアになろうとするのはオススメはしない

ざっくりプロフィール

  • 2020年くらいから本格的に独学しながら就職活動開始(就職まではフリーターかつこの時点で限りなく30近いアラサー)
  • 2021年にAWSに出会う
  • 同年7月にAWS SAA合格
    • Qiita Jobs経由で現職(自社開発)に元マネージャーからスカウトを受ける
  • 同年12月、現職にバックエンドエンジニアとして契約社員としてJOIN
  • 2022年3月、正社員へ同時にコアに開発に携わり始める
  • 2022年10月、元マネージャーのマネージャー兼務によって代わりにチームリーダーに、開発の傍らタスク管理や進捗リード、新規JOIN者のメンター、別チームとの折衝等々を行っていく
  • 2023年11月、現職マネージャー退職に伴い、新マネージャーが参画するがチーム内外から苦情が相次いだため、チームメンバー2人ともに人事権を除くマネージャー業務も代行(某MAGIシステム)
  • 2024年5月、新マネージャー異動かつ残るチームメンバー2人の退職に伴い、別チームから来たマネージャー代理の代わりに引き続き実務的なマネージャー業務・チームリードを担当
  • 2024年11月 現職退職、2社目へ

なぜ未経験からオススメできないのか?

A. 以下の要因からかなり分の悪い運ゲーであり、その後もある程度適応するところがないと続かないからです

  • 大学で情報学や統計、アルゴリズム……等々と数学的な教養を修めていたとかでない限り、現職の人材あるいはこれからの未来の人材との競争力において絶大なハンデがある
    • 数学ができなくてもプログラムは書けますが(私がそうです)、数学的教養があってプログラムを書ける人に比べてマンパワーは明確に劣ります
  • エンジニア業界は人手は確かに足りないが、足りないのはある一定ラインをクリアしている戦力になるエンジニアであるから
  • 仮にエンジニアとして採用されたとしても、既にキャリアがある人たちと一緒に仕事をする上でリスペクトしてもらえるようなValueを示し続けないといけない
  • エンジニアになってゴールなのではなく、エンジニアになって初めてスタートラインでありずっと学び続ける必要があるため
    • つまり次から次へと知らないことが出てくるが、それらをある程度知っていることが仕事をする上で当たり前である状態で仕事をし続けないといけないということです
    • 最低限、相手の言っていることがマクロレベルで理解でき、わからないときは臆することなく質問する能力が必要です

はっきり言って、エンジニアのスクールにいけば問題ないだろうみたいなことを考えていたらそれはかなり甘い考えだと思ったほうがいいと思います。
あとSNS等々によく現れる未経験でエンジニアになれるみたいなことを言っている無責任な人たちの話も騙されていると思ったほうがよいです。
それだけシビアだと思っています(僕が独学していた頃よりChatGPTが出てきてしまった今のが尚の事キツイと思います)。

なんならこれを書いてる僕自身、単純なエンジニアとしてのスキルレベルではやっと中級者を名乗ってもいいのか? 悪いのか? くらいだと思います。
それくらいエンジニアとしてキャリアがある、またはキャリアは浅くともパワーがある人たちから見ると僕はチーズのように穴だらけなエンジニアです。

未経験でエンジニアになるには?

それでもどうしても未経験からエンジニアになりたい人はいると思います。
ではどういう人だったら可能性があるかを考えてみます。

一応、僕自身そして現職にBiz側から僕同様に独学でプログラミングを勉強し、エンジニアとして異動してきて僕がメンターしてその後大手企業のエンジニアチーム立ち上げのリーダーとして転職された方がいるので2人分の
動向を鑑みるとまず

プログラミングが好きである

これは必須だと思います。
プログラミング言語には絶対に公式からチュートリアルが用意されていますがそれを完走でき、かつこれからこれで何ができるんだろうとワクワクできないのであれば別の道を探したほうが良いと思います。
それ以外だと在り来りですが以下の通り。

  • 自走する力がある(≠自力で解決する力)
    • 自分で課題を見つけ、それを解決していく力
    • 与えられた課題に対して、解決していく力
  • 学び続けられる力・エンジニアと言う仕事にモチベーションを保ち続けられるか
    • プログラミングやエンジニアという仕事に対してある程度の知的好奇心・探究心を保てるか
      • 参考までに前述のBiz職からの転任者は未就学児2児の子育てと並行して、業務外に業務と関係のない分野含めて今も勉強し続けていたりします
        • 当人いわく、「楽しくて仕方がない」とのこと
    • 僕の場合はこの力に関してはやや欠損していて、業務に関係のないことを新しくキャッチアップするのが非常に苦手です
      • その代わりモチベーションを難しい実装への達成感というところに持っています
  • やり抜く力
    • わからないことをわからないままにするのではなく、聞く

また以下のような力もあるとなお良いと思います。

  • 自分でボールを持つ力
    • 例えば社内の問い合わせや障害の対応に対して積極的に初動を担い、問題の切り分けや連携を行うとか
  • ドメイン知識またはビジネス知識を開発に活かせる力
    • どうやったら売れるプロダクトを作れるのか? またはお客さんにとって使いやすい、Valueのあるプロダクトになるかというのをエンジニアとしての視点だけに偏らないというのは大きな価値があります
  • 生成AIに対する自分のスタンス、またはどう使っていくのかという考え方

未経験でエンジニアになるための具体的なアクションは?

以下の通りです。

  1. バックエンドとフロントエンドのフレームワークのチュートリアルを後に連携させることを前提にそれぞれ1つずつ完走する
  2. 1に際し、なんで自分がそれらを選定したのかを言語化しておく
  3. 自分でアプリのテーマを設定し、そのテーマに沿って要件定義、設計を行い、1で学習したバックエンドとフロントエンドのフレームワークを連携させる
  4. 3も同様になぜそう要件定義・設計したのか説明できるようにする
  5. 1~4を今度はDockerを使ってコンテナ化し、Githubで管理できるようにする
  6. ここまでで出来上がったものをどこかのクラウドにデプロイし、ローカル環境の外で動かせるようにしてみる
  7. (できれば)自分で小規模なサービスを考えてみて、それをアプリケーションとして運用する前提で1~6を実行する

1が難しかったらフレームワークにされる言語についてある程度勉強すると良いでしょう。
(例えばDjangoならPython、ReactならTypeScript)
もっとプリミティブな知識(例えばフロントエンドはどうやって動いているのか、DOMとはなにか?みたいな)も必要ですが、それはモノを作ったあとに追って勉強するほうが体に入ってくると思います。
何よりプリミティブな知識って勉強するのにハードルがあり、挫折の原因でもあると思うのでファーストアクションにするのはおすすめできないと個人的には思います。
まず、楽しいところを知りその後補完していくのが良いでしょう。
余談ですが、トレーダーをやっていてその過程で省力化等々をしたく独学でプログラミングを始め、そのまま趣味でエンジニアとして就職しているなんて人もいます。

あと重要なのはここまでの過程でなるべくAIには頼らないでやるということです。
はっきり言って、このレベルならAIにこういう感じにしてくれといえばさらっとコードが出てきます。
しかし、それでは力になりません。
なので、AIを使用する場合は以下の利用用途に絞るほうが良いと思います。

  • チュートリアルやドキュメントで理解が難しい部分に対して、実例を交えて解説をしてほしいとき
    • できればAIの解答に違和感や間違いがないか、再度検証するとベストです
  • 自分の書いたコードに対してのレビュー
  • 自分の設計やアイディアに対してのレビュー
  • アイディアの頭出し

また、7まで実践できたらそれまでの過程を対外的にアウトプットすることをおすすめします。
エンジニアの世界ではアウトプットする機会が多い人はより評価される傾向にあります。
自分のアウトプットの質が良いか悪いかは気にせず、まずはどんどんやっていきましょう。

エンジニアとして採用されるためのアクションは?

これは正直かなりの運ゲーです。
以下が挙げられると思います。

  • 自分の会社にエンジニアや開発部門みたいなのがあるのであればそこに自分から掛け合う
    • 前述のBiz職からの転任者は元開発マネージャーよりスカウトを受けていました
  • エンジニアの知り合いを作って紹介してもらう
    • 僕は就職先の斡旋は難しくても、職務経歴書の書き方とかレビューとかアドバイスをしてもらったりしました
    • エンジニアのコミュニティとかカンファレンス、イベントとかに足を運んでみるのも良いでしょう
  • 転職サイト等に登録して自分から売り込む
    • 大手エージェントは結構難しいと思います
    • LAPRASとかエンジニアに特化し、エンジニアが見るようなサイトが良いかと思います
    • 僕の場合はQiita Jobs経由でオファーがあった形ですがサービス終了とのことです

結構自分から動いていかないと難しいと思います。
ただ、前段についてある程度頑張っていれば割と見てくれる人は見てくれます。

余談: どの業態に就職するべきか

エンジニアの業態としては大きく分けて4つあります。
だいぶざっくり書くので詳細は調べていただければと思います。

  • SES
    • エンジニアを派遣する組織に所属し、案件に応じて色んな会社に配属され仕事をする
  • 受託開発
    • 色んな会社からこういうアプリケーション等々を作ってほしいと予算に基づいた発注を受け、それを作成して納品する
      • 発注に基づいて、社内のエンジニアをアサインしてチームを作る
      • 会社やモノによっては運用や保守も行う
  • 自社開発
    • 自分の会社のミッションやセールスに必要な業務改善ツールやプロダクトを作成・運用・保守したりするスタイル
      • ちょっと語弊がありますが、GoogleがYoutubeを作ったりとか任天堂がNintendo Musicを作ったりするようなものと思っていただければ
  • フリーランス
    • エンジニアが独立して、自ら案件を請け負っていくスタイル
    • 自社開発の企業が業務委託として契約して、エンジニアの不足を補うみたいなこともあります

まず、最初に言っておかないといけないのはエンジニアになって早々にフリーランスになって稼げるようにはなりませんということです。
こういうことを言っているの99%は詐欺師か残りの1%の天才です、真に受けてはいけません。
実際僕の元同僚に2年でフリーランスになって月3桁万円以上稼いでる人はいますが

  • 税金関係のアレコレが全部1人でできる
  • ある程度会社勤めの際にコネクションを作っておいている
  • 中規模なアプリケーション開発においても1人で要件定義・設計・開発・テスト・保守すべて一貫してできる
  • ある程度経験のない言語でもキャッチアップまでが早い

……とざっくり書いても普通に仕事ができていた人なので。
現に僕はエンジニアになって3年経ちますが、冗談交じりにフリーランスでも大丈夫だよと言われてたりしますが、自分では全然無理だと思っています。
また、上記のような人でも最初の1年は案件あたりの単価が低く見積もられてしまうため、結果的に一時的に収入が落ちてしまうという状態があったそうです。
(色々頑張って、実力を見せ、単価交渉を重ねて言った結果フリーランスになって大体1年くらいで会社勤め時代以上の給与水準になったそうです)

まあなので、エンジニアとしてある程度やって色々メリット・デメリット考えたうえでフリーランスという選択を取るのは良いと思いますが、フリーランスになることをゴールにエンジニアを目指している方はゴールが間違っているので考えを改めるべきだと思います。

次に、SESについてですが僕は経験がないのであまりモノをいうべきではないですが色々経験のある人たちから聞く限りだと相当な覚悟はやっぱり必要だとは感じています。
要は「キツイ」確率が高く、かつ成長しやすい環境であるかというのもかなり運ゲーということです。
ただし、会社をよーく選べば色んな案件を請け負う関係上スキルは否応なしに広く浅くは身につくのでファーストステップとしては必ずしも悪というわけではありません。

受託か自社かについては自分がどういうエンジニアでありたいかで志望が変わると思います。
色んな技術に触れて、色んなものをとにかく開発していきたいというのであれば受託のが向くと思います。
自社はその会社の看板となるようなプロダクトの開発・運用・保守をしていくので、会社のミッションや風土等々と合わないときつくなってくることがあります。
(自社開発企業はスタートアップやベンチャーが多いですが、エンジニアを大切にしていくみたいな組織感であるところは少なかったりするので)

まとめると

  • SES
    • 配属・会社ガチャ
      • ちゃんと評判はリサーチしたほうがよい
        • ネットだけでなく、エンジニアの生の意見を聞きにいきましょう
    • 就職へのハードルは低いが逃げるときに穏当に逃げれるようにしておかないとエンジニアとして成長しないまま年数だけがすぎる
  • 受託
    • 色んな技術に触れて、色んなものをとにかく開発していきたいというところは満たしやすい
    • 納期が厳格にあるので、会社やチームによってはブラックになり得る要因は大きい
    • エンジニアとしてのパワーは多角的に求められる
  • 自社
    • 開発することに対して納期が厳密に設定されることが少ないので、開発スケジュールは余裕があることが多い
    • 使用する技術はすでに導入されているものから動くことが少ない
    • 新プロダクトの発足は起こりにくいので開発としては小規模な改善系が多い
    • 運用・保守が発生する
    • エンジニアとしてのパワーはマンパワーの高さを求められる
      • なかなか採用の優先度が上がらないことがしばしばなので少数精鋭でやっていく感じ

という感じです。
僕はSESだけは絶対無理や……と思ってたクチで運良く自社開発の企業からオファーがあり、ある程度最初は面倒を見てもらいながら半年くらいで戦力になれるように自分でも頑張る……みたいな感じでした。

最後に

未経験エンジニアというのは一時期、妙な情報商材等々の影響で色々悪例が発生したり、そもそもエンジニアは専門職であり、プロフェッショナルな分野である以上

そもそも工学部を出た新卒でもないのに未経験からIT業界って、ITエンジニアという仕事自体が未経験者からすごく舐められてない?
これがメーカーの電気やメカのエンジニアだったら工学部出てても院卒じゃないと厳しいくらいだよ?
引用: https://x.com/Arquata_Alice/status/1844680299965460832

という考え方の人も少なくなく結構風当たりが強い状態です。
(上記の発言主ないし発言内容やそれを肯定する意見について否定する意図はありません、僕も否定されていると感じる50%のエゴを除くと、もっともだと思っています)

幸い、僕の同僚のエンジニアの方々は僕がいることでかなりタフな場面や対応を迫られることもあり、実際僕もそれに際して結構厳しいことを言われたりもしましたが、それでも辛抱強くFlatに見続けてくれた人たちでしたので実体験として風当たり強いなーと感じたことはないのですが、それでも「マウント」を取られたことは実際にはあったことにはあったので色んな意味でハンデがあることは確かです。
(マウントを取ってきた人は対外評価的には僕より仕事ができない人だったのは余談)

なので、積極的には未経験からエンジニアを始めるのはおすすめしません。
特に当時の僕と同じような27歳~くらいの人は特に。
(単純にそのくらいの年代なら管理職を見込んでの採用を検討されるのでより厳しくなる)

ただし、それでもプログラミングと出会ってどうしてもそれを生業にしたいという人は少なからずいるでしょう。
そういった人たちのガイドにでもなったら幸いです。

Discussion