会員登録すると
このコラムを保存して、いつでも見返せます
こんにちは。情報系の学部に所属している25卒の大学院生です。就活では、ソフトウェアエンジニア職の選考を受け、複数のメガベンチャーや大手企業からソフトウェアエンジニアとして内定をいただきました。
本記事では、私のようにソフトウェアエンジニアとしての就職を目指す学生向けに、私がソフトウェアエンジニアとして内定をいただくために行ったことを記載いたします。私は大学生になるまでパソコンを満足に触った経験がなく、大学ではみんながプログラムを書いている中タイピングの練習から始めました。そんな私がメガベンチャーや大手企業からエンジニア職として内定をもらうまでにしてきたことを紹介します。私の経験がみなさまの就活に少しでも役に立てれば幸いです。
ソフトウェアエンジニアとして内定をいただくまでの流れ
私がソフトウェアエンジニアに興味を持ったのは、大学一年生の頃で、エンジニア系YouTuberの発信を見て、その自由な働き方に憧れを持ったことがきっかけでした。確かに他職業と比べて自由度は高いものの、大変なこともまた多くあると、後にインターンや開発を経験していく中で学びましたが、それでもやはり自分で作ったシステムを見て他の人を驚かせられた経験が忘れられず、ソフトウェアエンジニアとしてのキャリアを選択しました。
私が大学に入学してから、内定をいただくまでの流れは以下の通りです。
2. 大学の授業でC言語を学ぶ
3. 独学でPythonを学ぶ
4. 初めての個人開発を行い、ポートフォリオを作成
5. ポートフォリオを駆使して技術系のインターンやアルバイトに参加し経験を積む
6. 大学の研究活動でも開発の経験を積む
7. これまでの開発経験を武器として面接に臨む
8. 内定
本記事では、これらの流れに沿って、具体的にどのようにして技術を身につけ、内定を獲得することができたかを記載していこうと思います。
大学の授業と独学によるプログラミング言語学習
私は、高校の頃情報の成績がクラスでトップクラスで低く、タイピングの練習を始めるところからスタートしました。タイピングは、エンジニアに必要な最も基礎的なスキルです。ブラインドタッチができるようになるだけで、今後の学習の速度がだいぶ変わってくるので、早めに身につけておくことをお勧めします。私の場合は、3ヶ月間毎日タイピングゲームをやることで身につけました。
私が初めてプログラミング言語に触れたのは、大学一年の授業でした。C言語を学び、誕生日から占いをするプログラムなどを作成した記憶があります。よくある議論で、「C言語は初心者向きではない」というものがありますが、私の意見としては、C言語はCPUの低いレイヤーなどを意識して書く必要があるため、決して無駄にはならないと思います。(GoogleやNvidiaのエンジニアでC言語を書けない人はまずほとんどいないと思っています。)
C言語は、プログラミングの基礎を学ぶには、良い言語ですが、具体的なアプリケーションを作るにはあまり向いていません。現代の企業では、もっとレイヤーの高いPythonやJavaなどの言語が開発で使用されています。しかし、大学の授業は、学術的な目的を第一としており、一つのプログラミング言語にこだわらないものになっているケースが多いです。ですので、自身のアプリを開発したい場合、必ず独学が必要になると思います。私は、AIのアプリを作りたかったのでPythonを独学で学びました。ここで学ぶ言語は自分が作りたいものから逆算して考えると良いと思います。
個人開発によるポートフォリオ作成
Pythonを独学すると、AIやアプリを開発できるようになります。ある程度学習が進んだ段階で、個人開発を開始しました。個人開発で作成した成果物は後々のインターンやアルバイトなどの選考で大きな武器になります。
このような個人開発をする際に何を作れば良いのかわからないということがあると思います。そのような場合は、「身近な問題を解決するシステム」を作ると良いと思います。私が初めて作ったシステムは、「コロナウイルス感染者予測AIシステム」でした。理由は単純に、コロナウイルスの蔓延がどの程度進むか予測したいと思ったからです。このように作るシステムが決まるとやらなければいけないことが逆算的に決まってきます。「コロナウイルス感染者予測AIシステム」を例に挙げると、
- 予測するAIを作りたい → 学習データを集めてくるプログラムが必要
- 作ったAIの結果をいい感じに表示したい → Webアプリを作るための知識が必要
といった具合です。このように進めていくと、バイトやインターンで求められるスキルがだんだんと揃ってきます。システムの題材はなんでも良いと思います。というのも目的はなんであれ、そこに必要とされる技術を逆算すると似たり寄ったりになってくることが多いためです。
アルバイト・インターンによる業務経験
個人開発によりポートフォリオを作成し、ある程度のスキルが溜まると、自然と技術系アルバイトやインターンの必要要件を満たし始めてくると思います。ここまできたらアルバイトやインターンに申し込んで見るのが良いと思います。そこで個人開発したシステムを面接で話すことになると思いますが、以下の流れでアピールすると良いと思います。
- 目的を達成するための手段
- なぜその手段を選んだか
どんなシステムであろうと、上記の内容を踏まえていれば問題ないと思います。私のおすすめは、目的 → 手段の順で話すことです。ごくたまにいる「子供の頃からプログラムをいじっているスーパーマン」のような方は手段、目的どちらが先でも問題ないと思いますが、私のような大学入学後から始めたタイプは、目的を先に話すことをお勧めします。
開発系アルバイトやインターンに参加できると、個人開発では得られない以下のようなスキルや経験が身につきます。
- 個人では到底触れない大規模システムやデータ
- 技術レベルの高い人たちとの交流
世の中には、「GithubやDockerをはじめに学ぶべき」という意見もありますが、私個人的には、必要になった場合に学ぶことをお勧めします。これは、使い道がわからないシステムを学んでも使い方の暗記になってしまいがちになってしまったという私の経験から来ています。経験上、チーム開発を行うなかで、「Github、Dockerを使いたい」と思うタイミングが勝手に来ますので、そのタイミングで学ぶのが一番頭に入りました。
エンジニア就職を目指す学生のGitHubの活用法
また、技術レベルが高い社員さんや他の学生と関わることができることもメリットの一つです。私はそのような人たちの行動を真似るようにしていました。ツールの使い方や考え方、コミュニケーションの方法など良いと思ったものは全て真似て、自身の個人開発や研究で試していました。このようにしていると、だんだんと自身のスキルが向上しているのを感じることができるかと思います。
エンジニア体験記
ソフトウェアエンジニアとしての就活
ここまで、学習、個人開発、チーム開発を経験すると、就活では、今までやってきたことをありのまま話すだけになります。技術面に関しては、企業や職種とのマッチングの問題なので、この段階では、そこまで気にすることはないかと思います。
就活では、扱える言語やツールももちろん大事ですが、一番大事なのは、「主体性」と「協調性」だと私は考えています。これまでの開発経験を具体例として、抽象的なスキルである「主体性」と「協調性」を見せることができれば、内定をいただけると思います。
最後に
このように、私は段階的に過去の経験を活かして新しい経験をとりにいくということを繰り返して、ソフトウェアエンジニアとして内定をいただくことができました。もちろん、これ以外にも内定をいただけるパターンは無限にありますし、元から趣味でプログラミングをしていた方などはこのようなステップを踏む必要はないかもしれません。ですが、私のような、高校生までパソコンをほとんど触っていなかったタイプの方々には、一つの指針になると考えております。
ここまで読んでくださりありがとうございました。
・「グローバルプロダクトで大きなインパクトが与えられる」Amazonの新卒ソフトウェアエンジニアが語る、同社の魅力とは
・「キャリアの選択肢が広がり成長にもつながる」私たちがBigTechのインターンで学んだ、伝えたいこと
・文系からGMOの“新卒年収710万プログラム”でソフトウェアエンジニアに。「非情報系でも対等に仕事ができてる実感がある」
・新卒でマイクロソフト米国本社のSWEに「新しいチャレンジが多く、成長につながる」
【関連コラム】
・【業界研究】エンジニア編
・ソフトウェアエンジニア職志望のための面接過去問まとめ-技術面接編-
・ソフトウェアエンジニア職志望のための面接過去問まとめ-一般質問編-
・ソフトウェアエンジニアとして活躍し続けるには?キャリアの軸はどう選ぶか?
・GAFMA企業にソフトウェアエンジニアとして就職する方法
・“普通の人”がGoogleのソフトウェアエンジニアになるには?採用ステップ、入社面接、評価ポイント、対策まとめ
・ 「大量の読書とインターンで技術を学んだ」“文系”学部からサイバーエージェントのソフトウェアエンジニア職内定を勝ち取るまで
・ 【IT志望必見】GAFAMエンジニア内定者による『コーディングテスト』の実態
会員登録すると
このコラムを保存して
いつでも見返せます
マッキンゼー ゴールドマン 三菱商事
P&G アクセンチュア
内定攻略 会員限定公開
トップ企業内定者が利用する外資就活ドットコム
この記事を友達に教える