これからエンジニア就活を目指す学生のはじめの一歩

# はじめに
私はCDLE youthという学生団体に所属しているのですが、同じAI・プログラミングを学んでいても、所属メンバーの就職先は実に様々なんです...

先日CDLE youthのメンバーが [新卒IT就活生たるもの成果物を作れ。](https://qiita.com/ryusei6/items/ee30e17641f4e934209b) という記事を書いてくれていたので、自分も就活系の記事を書こうと思います。

自分もこの前就活を終えたばかりなのですが、本記事では「これからエンジニアを目指したいけど、右も左も分からない」という学生向けにどんなことを知っておくと良いかという、**超入門的**な情報をここに垂れ流しておこうと思います。

:raised_hand:ここでのエンジニア ≒ プログラマーという位置付けで、メカニックなどのハードなエンジニアは除きます

# ターゲットとなる読者
これからソフトウェアエンジニアを目指したい人
プログラミングとかはまだよくわかっていない人
（とりあえずProgateとか始めてみましたみたいな人）
（文系だけど）これから情報系の勉強をはじめてエンジニアを志す人

# そもそもエンジニアとは
これからエンジニアを目指す学生は

「G〇〇gleでキラキラ働くぜ！」
「将来的にはフリーランスで悠々自適な生活を手にしてやるんだ...」

などなど希望に胸を膨らませていることだと思います。いずれにしても素敵な気持ちなので、大事にしておいて欲しいのですが、上記のようなイメージばかりが先行して、実際の業務内容などは実はあまりよく分かっていない...という人もいるのではないでしょうか。

ここを曖昧なままにしてしまうとn年後に

「俺の（私の）人生こんなはずじゃ...」
「なんか、やりたいこと、コレジャナイ...」

という事態にもなりかねないので、まずは実態を探るところから始めてみましょう！

## エンジニア（プログラマー）は何をやる人？
Progateなどを始めたばかりの人は

「そもそもプログラミング言語って色々種類ありすぎじゃね？」

と思った人も多いのではないのでしょうか？ 
機械学習ならPython、WebアプリならRubyやGo、スマホアプリならSwiftやKotlinみたいな感じでしょうか。

ここからも何となく察しがつくように、「何を作るか・何をやるか」に応じてエンジニアが使う言語や担う業務領域も結構変わってきます。`エンジニア 新卒 職種`とかで調べてみると、募集職種だけでも以下のものが出てきたりします。

> モバイルAppエンジニア
> 機械学習エンジニア
> Webフロントエンドエンジニア
> セキュリティエンジニア
> バックエンドエンジニア
> インフラエンジニア
> （データサイエンティスト）
> etc.

「なんか、めっちゃあるやん...」と思った方もいるのではないでしょうか。そうなんです。結構あるんです。
ただ、職種分けや、担う業務領域は企業によって変わってきたりするものですし、またこの辺りを大別しない`フルスタックエンジニア（何でも屋）`みたいな枠での募集もあったりします。

ですが、
「オシャレなWebアプリを作るのが私のイメージしてたエンジニア！」な人が、気が付いたらインフラを担当することになり
「エンジニア、つまんなくね？ もうしんどいんですけど...」と絶望してしまわないように、まずはこういう区分けがなされることを知っておきましょう。


## エンジニアの就職先企業の調べ方
IT人材不足が叫ばれ続けていることからも分かるように、IT化の波を受けほとんどの業種でプログラマーは必要とされています（モチベになりますね！！！）
一方で、実際にどんな企業がエンジニアの就職先候補として存在しているのか、ということも調べにくくなっているのも事実かと思います。
そこで、初動どうするべきかという部分についての簡単なアドバイスをここでは伝授したいと思います。

:::note warn
もし自分が起業する時に、自社のホームページやアプリを全く用意しないでやっていくのはイメージしにくいのではないでしょうか？ 
こんな感じで、プログラミングができる人へのニーズが業種を問わないものになっているのが実態かと思います。
:::

上のセクションで、エンジニア1つ取っても色々職種があることも見てきました。そこで、とりあえずこの職種だとこんな企業が就職先として出てくるみたいなのを調べる方法を考えます。

このようなフワッとした条件下で、色々網羅的に見てみたい時に使える必殺キーワードが ***カオスマップ*** です。
`IT カオスマップ`や`エンジニア カオスマップ`みたいにして検索してみてください。
すると業界や提供サービスごとにどんな企業が存在するのかがまとまった画像がたくさん出てくるかと思います。

こんな風にすると
「ゲーム開発ならこんな企業があるのか」
「この企業ってソフトウェアも開発していたのか」
ということを知る1つのきっかけになると思います！
（希望の業界が既に決まっている人は`HR業界`や`AI開発`みたいなキーワードを組み合わせてみるのも良いかもです）

この辺りを初動にして、実際にどんな職種での募集がされているのかというのを調べてみてはいかがでしょうか？

# エンジニア就活で重視されること
いわゆる文系職などでは「ガクチカ」が重視されますが、エンジニア就活はちょっと毛色が違います。もちろんガクチカを聞かれることもありますが、それ以上に重視される項目があるように思います。

エントリーシートの記入や面談をこれまで色々経験してきましたが、重視される内容には企業の垣根を越えた共通項があります: 多くの企業で重視される項目は以下の3つに大きくまとめられると思います。

（ただ企業によってはいずれかしか重視しないみたいなパターンもあるので、絶対ではないです。が、準備しておいて困るものではないので、時間のある人はそれぞれで力をつけておくと良いとです！！）

1. 実装力
2. チーム開発経験
3. 自走力

これだけ言われても「なんの参考にもならねえよ...！」という気持ちが込み上げてくると思いますが、これからもう少し解像度を高めていくので、ここではグッと堪えて以下に目を移して貰えると嬉しいです。

## 実装力
「実装力」 = 「君はどれくらいコード書けるの？」 です。

「forループならたくさん書けますよ！」と言いたい人もいるかもしれませんが、ここでの`コードが書ける`は`お題に沿った実装がきちんとできる`ということを意味しています。

実装力を示す方法としては
1. コーディングテスト
受験でいうところのセンター試験や大学入学共通テストみたいなイメージ
2. ポートフォリオ
受験でいうところの2次試験や面接みたいなイメージ

の2通りが大きくあります。

コーディングテストはいわゆる競プロっぽい内容です。数学チックなお題に沿って、時間内に目的の挙動をするコードが実装できるかという能力や、メモリや実行時間の制限をクリアしながらよりスマートな実装ができるかといった能力が問われます。
この辺りは対策しておかないと苦しい部分が多分にあるので、`AtCoder`や`LeetCode`などのサービスをうまく使ってみてください。

ポートフォリオは「今まで自分がどんなものを作ってきたか」をまとめたものです。
例えばRuby on Railsを頑張って勉強した人なら、「こんなWebアプリを作りました」を見せることになると思います。

ぶっちゃけコレがあると、新卒では結構強い印象です。
なぜなら「僕はこういうプロダクトを作りたくて〇〇に工夫したんです！！」みたいな熱意を言葉にしやすいからです。


コーディングテストもポートフォリオもどちらも大切なのですが、企業によってはコーディングテストは実施しないみたいなところもあったりするので、どちらにどれくらい力を入れて対策すべきかは企業の選考フローなどをみながら決めると良さそうです。

## チーム開発経験
めちゃくちゃ人数の少ないスタートアップとかに就職しない限り、エンジニアとしての入社後はチーム開発を行うことになることが多いです。そこで注視されるのが「チームの一員として一緒に働けるか」です（歯車として使えるかというブラックな意味ではないです）。

ここでチーム開発の経験とかがあると強いです！時間のある人はぜひ有志を募ってコンテストやハッカソンに出場してみたり、複数人でのプロダクト開発に挑戦してみてください。

（心理的な参加ハードルは高いと思いますが、1ついい感じのエピソードが作れてしまえば就活が楽になるかもと自分を励ましてあげて...！）

**実は [CDLE youth](https://sites.google.com/view/cdleyouthhp/%E3%83%9B%E3%83%BC%E3%83%A0)ではチームでアプリを開発したり、コンペに出ていたりするので興味がある人は問い合わせてみてください！！！**

ここで意識しておくと良いポイントには以下のようなものがあります。
- 分担の仕方：目標を達成するために自分はどんな役割を担ってチームに貢献したのか
- コーディングでの工夫：可読性の高いコードなどを書くために工夫したことなど（コメントや型宣言とか）

チーム開発の経験がないまま就活に突入する場合でも、並行しながらハッカソンとかに出場できるとそれだけで割とエピソードができたりするものなのですが

「そんな時間はない！！ もうESの締切は目の前なんだ！！」

な場合は、コーディングの枠を外れても良いので、チームで何かに取り組んだエピソードを最低限整理しておくと良いかと思います。

## 自走力
エンジニアは職種柄、割と勉強しないといけないことが多いです。新しい業務内容に対応するために新規の言語を学習したり、同じ言語でも新しいライブラリなどが出てきた時にそれをきちんと使いこなすために勉強したり、エラーが起きたときの解決方法を調べたり...みたいな感じです。

つまり「誰かに教えられなくとも、うまく検索したりしながら切り抜けられる力があるか」という観点が大事になってきます。これが自走力に当たります。
新卒の場合は、上述の[実装力](##実装力)や[チーム開発経験](##チーム開発経験)がなくても最悪自走力をうまく示せれば内定がもらえる場合があります。これは自走力 = ポテンシャルとみなされるので、

「この子、現時点だとあんまり経験ないけど、これだけ自走力があればきっと入社後にキャッチアップして活躍してくれるだろう」という気持ちで内定を出すというロジックです。

自走力の示し方は色々あるかと思いますが、一番手っ取り早いのは
「今どんな言語を（どんな目的で）学んでいるのか」
「その勉強の過程でこんな困りごと（エラー等）に遭遇したが、〇〇して解決した」
みたいなプログラミング絡みのエピソードを作ってしまうことです。

「じゃあちょこっと勉強して、上のエピソードだけ作れちゃばOKってことじゃん！」という邪なことは考えずに、コーディングは続けることをお勧めします！
（当時の自分はこのエラーめちゃむず...と思っていたことが、実は客観的にはあるあるなエラーで、エピソードとしてはかなり弱いみたいな悲しいパターンになりかねない！）

# 最後に
この記事では、超初心者向けに「エンジニア就活の意識付け」を目的に色々書いてみました。

既に就活を終えた人や社会人の方は「ここは違うんじゃね？」「こんなポイントもあるよ」という場合にはぜひコメントよろしくお願いします！

またこれから頑張る人は「ここも知りたいんだけど！」ということがあれば気軽にコメントしてみてください！



### おまけ (コーディング能力について)
エンジニア就活は他の職種と異なり、事前に勉強しやすい側面が大きいです。
`営業職の練習機会 << プログラミングの練習機会`という感じです。
営業職等は学生が経験しにくいことは企業側も分かっているので、代わりにガクチカを聞いてそのポテンシャルを測るという感じだと思います。
一方でプログラミングはかなり勉強しやすい世の中になっています。なので全くの未経験で突っ込むと、大抵の場合はESで落とされてしまったり、ちょっとブラックな企業に誘い込まれる可能性が高まります。
（勉強できる機会色々あるはずなのに全くコードを書いたことないなんて、本当にエンジニアやりたいの？なんてことも思われかねません）

エンジニア就活は「プログラミングの経験」がそのまま「就活の強さ」に直結しやすいです。

学生の長期休暇などをうまく使いながら、ぜひ早めにコーディングを始めてみてください！

### おまけ2 (国内での外資エンジニア就職について)
これは自分も就活を進める中で気づき、結構ショックを受けたのですが、GAFAMやSalesforce、Cisco Systemsなどのいわゆるビッグテックみたいな企業では、日本でコーディングできる機会はかなり少ないようです(2023年時点)。
というのも開発部隊は本国に置いてあり、日本とかでは営業やカスタマーサポートの役割しかないみたいな感じになっているためです。
OB・OG訪問をして色々な人に聞いてみたのですが、技術職という枠組みであってもコードを書くことはほぼないとのことでした。入社してから「あれ、コード全然書けないじゃん」とならないように、事前に色々調べてみてください。

（逆に言えばプログラミングができなくてもビッグテックに入社できるチャンスは多分にあるとも捉えられます！）

（ただ、稀にGoogle・Appleでのソフトウェアエンジニア職での新卒募集がopenになったり、マイクロソフトディベロップメントなどの日本に開発機能がある企業もあったりするので、色々調べてみてください）

### おまけ3 (給料と生活水準について)
これは就活を進める中で、マネージャーレベルの人から教えてもらった給与の目安と生活水準です。ぶっちゃけどれくらいの給与を貰えればどれくらいの生活ができるのかの目安にできると思うので参考にしてみてください。(あくまで2022年時点での情報です)

- Web エンジニアの場合
    - ジュニア：400-600万が相場
    - 中堅：600-800万が相場（スキルレベル等によっては1000万円台が見えてくる）
        - 銀行マンとかだと30代で到達できるかどうかの水準
    - EM：800-1000万が相場

- 生活水準
    - 年収400万：家賃8万程度のアパートで少し貯金ができる
    - 年収600万：家賃12-14万程度のアパートで貯金ができる（都内で子供が２人とかだと苦しい）
    - 年収800万：税金周りが少し変わってくるレベル
    - 年収1800万：課税率40%くらいになり、半分程度持っていかれる

コロナ明けでも、エンジニアはリモートワークがしやすい職業だと思うので、中程度の年収を確保して田舎に移住するとかで相対的に生活水準を上げるなどの戦略が取れそうです。少しでも参考になれば幸いです。