見出し画像

Web系でエンジニア採用やってる私が、もし学生に戻って就活するなら、やること7つ

Web系エンジニアとして数年働いた後に、エンジニア採用をしておりますムラカミです。

仕事柄、学生エンジニアや駆け出しエンジニアの方と話し、相談にのることも多いのですが、複数の方が共通して抱えるお悩みが見えてきたこともあり、相談の内容も似通ってきました。

そこで、仮にムラカミが学生時代に戻って勉強したり、就活したりするとしたらこうするなーっていうのをまとめてみました。

もし以下に書いてある内容を本当にやれるなら、新卒のエンジニアの就活で困ることは、現時点ではほぼないかなと思います。(書いてみたら、中途でもあんま困らんかもしれないレベルになった。)

前提:会社を代表した発言ではなく、一個人の発言です

これはムラカミが所属する会社を代表した発言ではなく、「こんなこと会社入って学んだから、自分が学生に戻ったらこうするな」という一個人の妄想でしかないことをご了承ください。

また、このムラカミの妄想は、所属する会社での経験の影響を受けていますが、Web系の会社をエンジニアとして志望するなら、それなりに汎用性のある内容と考えています。

1. 語れるプロダクトを作る

語れるプロダクトを作りましょう。

語れるというのは、作ったプロダクトに対して以下のようなことを説明できるということです。

・誰の何をどう解決するプロダクトとして作ったか
・なぜその言語・フレームワーク・ミドルウェアを選んだか
・なぜその設計・アーキテクチャにしたか
・なぜそのDBにし、そのテーブル設計にしたか
・なぜそのインフラアーキテクチャにしたか
・そのプロダクトを作る際苦労したことは何か
・他の人に使ってもらったか。使ってもらったとしてどのようなフィードバックを得たか。そのフィードバックは反映したかどうか。またそれはどういう意図か
・このプロダクトを作って、技術面/サービス提供面で工夫したこと/学んだことは何か
・もう一度0から作るとしたら、どのような工夫を、技術面/サービス提供面で施すか

これはもう100回くらい候補者様に言ってる気がします。

開発経験・制作経験・ポートフォリオが必要と思っている方は一定数いらっしゃいますが、その経験やポートフォリオに掲載されている内容を語れる方が意外と少ないです。

これは弊社の採用基準や採用人物像を無視しても、現場で必要とされる思考なので、語れるようになっておいて損はないかなと思います。

2. 何かしら、オーナーシップもって取り組む

会社ではチームで開発をする以上、チームワークやオーナーシップが大事になります。

チーム開発でなくていいので、何かしらにチームで取り組む際にそれをオーナーシップもって取り組みましょう。目的達成のために何が必要かを仮説をたて、それを複数人で実行していくサイクルは簡単なものでもいいので、回しておきましょう。

3. 研修ページを見てみる

よく候補者様からは、「新卒にどれくらいのスキルレベルが求められているかわからない」とよく言われます。その場合は、入りたい会社の研修内容を公開したページを参照してみるのもありです。

ちなみに、DeNAという会社の研修内容を一部公開したページは以下です。

技術研修で何を行ったかの概要が示されています。一部抜粋すると、

チーム開発
チャットアプリ、SNS、決済アプリなど複数あるサービス要件から、実装するものをチームで1つ選択し、開発する

とあり、研修の終盤でチーム開発をするようです。逆に言えば、「研修終盤のチーム開発で一定の役割を果たせるくらいのポテンシャルは必要」 とも、自分が学生だったら解釈します。要件に基づき、仕様や設計を決め、チームで開発する力ですね。

研修の前提となる経験とスキルについて
上記の研修内容を楽しむためにも、以下のような経験やスキルは、前提になっていると感じました。
・サービス開発や研究など主体的に課題解決に取り組み、実装をした経験
・公式ドキュメントなどの一次情報を読む力
・わからないことを言語化して質問し、議論を楽しめる力

研修経験者が↑の能力を、研修の前提として感じたようです。なら、そのようなスキルを習得しておいたほうがいいな、とも自分が学生なら解釈します。

4. 中途採用ページを見てみる

これは、研修ページを見ることの延長ですね。

中途採用のページを見ると、ほぼ必ず「求めるスキル」「あると望ましいスキル」みたいな内容が書いてあります。

例えばDeNAのこちらの中途の求人を見ると、以下のようにあります。

【必須の能力・経験】
・Ruby, Perl, PHP, PythonなどのLL言語及びフレームワークを利用した開発経験
・複数年以上のプロダクションレベルのWebアプリケーション開発・運用経験
【望ましい能力・経験】
・Ruby on Railsを利用した大規模プロジェクトでの開発経験
・AWS/GCPなどのクラウド上でのインフラ構築及び運用経験
・マイクロサービスアーキテクチャでの設計・開発・運用経験
・スクラム等アジャイル開発プロセスでの経験
【求める人物像】
・ヘルスケア領域への強い興味・関心
・協調性、コミュニケーション能力のある方
・主体的に考え、行動できる方
・新しい技術を常にキャッチアップし続けられる方

理論上、もしこの能力を持っているなら、中途社員レベル、つまり即戦力になるわけです。なのでもし、ポテンシャル採用が基本の新卒の就職をする時点で、上記のような経験を積めているなら、どこかに就職できる可能性は必然的に高まるでしょう。

(なお、中途だとポジション採用が多いので、言語やフレームワークの指定があるケース多いですが、新卒だとそうではない所も多いと思われるので、そこは要確認です。自分が所属している会社は、Go, Ruby, Java, C#, Python, Perl, C++, Swift, Kotlin, JavaScriptなど様々な言語を状況にあわせて使っています)

5. Skill Roadmapを見る

このようなロードマップを見て、自分がどれをどこまで理解していて扱えるか、を認識しておきましょう。全てをできる人はいないので、全てを扱える必要はないですが、無知の知が大事です。

どこに無知で、何が必要な知識かを認識し、少しずつ研鑽していきましょう。

6. 新しい技術を勉強する際、他の技術との関連や差分を意識して勉強する

エンジニアとしての人生を歩もうとすると、勉強の連続です。

なので、効率よく学習するのは割と大事な話になります。でないと挫折します。

自分がその際大事にしてるのは、最初は勉強時間を一定確保するのは前提として、新しい技術を学ぶ際にその技術同士の関連や差分を意識することです。

たとえば、

MySQLなどのRDB以外にも、NoSQLというDBもあるが、それはなぜか。

といった要領で考えてみるわけです。WebサーバーもApacheやらnginxやら色々あるし、開発手法もTDDやらDDDやらあるが、なぜ違うものが生まれたのか。

・技術Aは技術Bの何を解決したのか。
・何をトレードオフとしたのか。
・何を残された課題としたのか。
・従来の技術とは併用されうるのか。そもそも同じレイヤーの概念か。

といったことを考えるわけです。

RDBのペインを知っていれば、NoSQLが誕生した背景がわかりやすくなり、その技術の差分を理解し、学習するのが早くなります。Webフロントエンドとか進化が早すぎるので、マジこの辺意識しないと、嫌になって疲れます。

7. GitHubはアピールしたいリポジトリのピン留めを

8. (おまけ)制作物紹介には、動画/ソーシャルログインを!


まとめ

ということで、まずは思いついたものをまとめてみました。Web系のエンジニアやソフトウェアエンジニアを志す際に、少しでも参考になったら幸いです。

また、技術的なこと以外に、広くエンジニアや社会人としてのキャリアや人生について悩まれている方は、そういった方向けに3000円/hでコーチングを実施しております。ご興味ある方は、以下のTwitterまでDMでどうぞ。

https://twitter.com/ryo_mura_brains

え、マジっすか、サポートいただけるんですか? え、大感謝以外は、返せないですよ?