始めに
前回初めての記事を投稿してから、約2カ月が経ちました。今回は進捗があったため、その内容について記事にさせていただきました。
タイトルにもありますが、機械学習エンジニア(長期インターン)としての内定をいただきました。大学1年の頃からエンジニアとして働いてみたく、累計20社近く落ちての内定でした。
この記事では独断と偏見で、機械学習エンジニア内定に必要なスキルについて説明していこうと思います。
自己紹介
- 学歴フィルターにギリかからない関西の大学の3年生
- プログラミング歴2年半
- Atcoder茶色
- Kaggler(メダルなし)
ポートフォリオ
ポートフォリオには、kaggleのコンペティションでのプログラムやkaggle datasetから拾ってきたデータから作成したモデルのプログラムなどがあります。
時系列
- 2021年11月 プログラミングの勉強始める
- 2022年4月 入学(約5社全落ち)
- 2022年8月 夏休み(約10社全落ち)
- 2023年3月 春休み(約3社落ち、コンサル系1社内定&入社)
- 2023年8月 夏休み(約5社全落ち、その内の1社が後の内定)
- 2023年10月 コンサル系の会社を退職(プログラミングをほぼ使わないため)
- 2024年3月 春休み(3社全落ち)
- 2024年3月 大学講義開始(1社内定、1社途中辞退)
内定までに行ったこと
直近の半年間で行ったことを説明します。それ以前は、プログラミングのスキルが今思うとカスだったので割愛します。
- Atcoderの大会に参加し、半年でAtcoder茶色になる
- Kaggleのコンペティションに参加し、銅メダルを目指したモデル作成(1からモデルを作れる実力をつけることが最重要)
- 書籍を通して、理論的な部分について学ぶ(ここが甘いと、面接で詰められた時に詰みます)
- 自身でデータ(kaggle dataset)を拾ってきて、モデルを作ってみる
私がこの中で重要だと考えるのは、とりあえずAtcoder茶色と、kaggleでのモデル作成だと思います。
Atcoder茶色は、最低限のアルゴリズム、コーディング力の証明になります。機械学習エンジニアでなくとも、実力の証明になります。(緑ならもっと良い)
Kaggleでのモデル作成の経験は、自身のポートフォリオ(エンジニアとしての採用ならほぼ必須)になります。また、一度モデル作成を経験しておくと、なんとなくコツがつかめてくるのでおすすめです。
意外とこのくらいでも実力は十分につきます。色々な参考書などがあると思いますが、本に手を付けて理論を学ぶ前に、kaggleでモデル作成をとりあえずやってみた方がいいと思います。私自身、作成したモデルの理論的な部分を完全に理解しているわけではありません。(ただし、ある程度は理解していないと面接で詰みます)
選考について
選考では、書類選考 → 面接 → 課題 or Webテスト → 面接 → 内定の順番が基本で、1ヶ月以上の選考になることあります。
まず、書類審査ですが、学歴が旧帝大・早慶であれば落ちないかもしれませんが、March・関関同立であれば、+αの実績がなければ、普通に落とされます(経験あり)。私の場合は、Atcoder茶色、kaggle大会出場経験、ポートフォリオを強みにできたため、書類審査は無事にほぼ通過できるようになりました。
一次面接では、ヒアリングなどの軽い面接が多く、業務内容が合わないとその時点で、落とされます。基本的に合っていれば通過します。
課題では、私の場合データセットが与えられ、分類モデルの作成を行いました。また、分類の結果、モデルについてのスライドの提出を求められました。さらにそのモデルについての発表がありました。(私の場合は課題発表まで通過しましたが、他社の内定があるため辞退しました。)
Webテストでは、IQテスト、コーディングテストなどがあり、どちらも受けたことがありますが、IQテストは全然できませんでした。SPI試験の強化版(数学強め)みたいな問題でした。(この企業の結果は出ていませんがおそらく落ちました。)
コーディングテストの方では、半年前に受験したことがあるというのと、そのとき落ちた経験から、対策をしたところ無事に通過しました。対策としては、機械学習・深層学習の理論についての勉強、Atcoderでのアルゴリズムの勉強をしました。半年前ではアルゴリズムのコーディングに40分かけてできなかったのが、今では5分で解けました。
二次面接(最終面接)では、自身のポートフォリオについて詳しく聞かれました。ほとんどポートフォリオの機械学習モデルについての質問でした。あとは、事務的な質問のみでした。
機械学習モデルの質問では、モデルの目標としていることは何か?、どのように特徴量エンジニアリングを行ったか?、なぜそのモデルにしたのか?、何が難しく、どのように改善したのか?などについて聞かれました。私はこれらの質問に、完璧には答えられませんでしたが、内定を頂きました。(正直、落ちたと思っていました)
最後に
数十社落ちても気にしないでください。また、実力を付けてもう一度挑んでも良いと思います。私も再度受けて採用を頂きました。
学歴も大事だとは思いますが、実力でカバーすることも可能です。何をすれば良いかわからないときは、面接の際に、現役のエンジニアの方々に聞いてみるのも手だと思います。私は、面接の逆質問で落ちたと確信したときには、必要なスキルについて質問を行いました。また、不採用通知をいただいた際にも、どの部分が不足していたのかについて質問をしました。
一番大事なのは、貪欲に取り組むことです。不採用すら自身の糧にして下さい。