ひらめの日常

プログラミングと読書と

就活を終えました

はじめに

この記事は僕の就活体験記です。新卒の就活体験記をいくつか参考にさせていただいたので、僕も誰かの役に立てばいいなと思い書きました。結論から言うと、インターン先の教育系ベンチャーに行くのですが、ちゃんと就活をしたので残しておきます。

使った内容としては競プロとそれ以外が半々くらいの就活だったと思います。時期的には、2月頃から就活を始めて7月に終わった形になります。

どんな人?

勉強

工学部の情報系?みたいな学科の4年生です。途中からコンピュータサイエンスに興味が湧いてきたので、他学部や他学科の授業をたくさん取りに行きました。就活の段階では研究室配属が決まるくらいの時期だったので、就活中に研究については話していません。

競技プログラミング

段違いに強いというわけではないですが、最初は茶色適正だったので個人的には割と1年間、楽しみながら頑張っていました。レートは水色で、AtCoderの上位15%くらいです。就活中に緑色から水色になりました。

hiramekun - AtCoder

f:id:thescript1210:20190720031541p:plain:w500
レート

レートに関してはこちらを見るとどの程度かイメージしやすいと思います。

chokudai.hatenablog.com

就業経験

Android開発

1年間休学して、ベンチャーAndroid用のSNSアプリ開発をしていました。プログラミング経験がほぼ0かつ、いきなりのチーム開発を始めたのでかなり大変でした。ソフトウェア工学の基礎的なところを学んだり、チーム開発する上でのコードのお作法や設計思想などをたくさん勉強しました。

Java/KotlinでGithubを使ってチーム開発をしたり、アーキテクチャを考えたりしました。

ここで情報工学の基礎的な部分を大学で勉強し直したいという思いが強くなり、復学後に勉強を頑張るきっかけになりました。

物体検出

深層学習に興味を持ったので、半年弱のバイトでも物体検出の実装をしました。とは言っても、Chainerを使って自分が用意した新しいデータセットに対してモデルを再学習するだけなので、実装の中では割と簡単な部類に入るかもしれません。

音声認識

1年ほどR&Dチームでインターンをしました。そこはでMySQL叩いて簡単なデータ分析もしていましたが、主に音声認識をやりました。C言語で書かれたOSSの実装を追って、認識ロジックを実装してモバイル開発チームにライブラリとして提供したりしました。

機械学習アルゴリズム的な側面はもちろん、論文を読んで参考になる研究がないか調べたり、その論文を実装にどのようにして落とし込むのかを考え、上司から自分の考えに対してフィードバックがもらえる環境はとても刺激的で楽しかったです。

戦略

自分の経験を話す必要がある際は、上記のステータスを踏まえて以下のようなものを中心に話しました。割と会社や面接官によって、突っ込んで聞かれるところが異なったように思います。

  • インターンなどでチーム開発を経験したり、プロダクションのコードをたくさん書いてきた。
  • 競技プログラミングで計算量やメモリ量を意識したコードが書けるようになった。
  • 企業での研究開発を長めにやってきた。
  • 情報工学のレイヤー低いところや統計の理論的な面の勉強も頑張った。

自分のアウトプットとしては、ブログとAtCoderのユーザーページとGithubあたりを見せてました。 例えばGithubには授業などでやった機械学習系の授業のコードをまとめてあったりします(多分コードは汚いけどREADMEだけ整えた)。 github.com

あとはやりたいこととか、やりたい事業についての思いをきちんと言語化することくらいでしょうか。

体験記

割と多かったので、他にも内定やお祈りはいただきましたが適当に抜粋して書きます。別にここに書いてないから適当な気持ちで受けたとかそう言うわけではないです(念のため)。

最終的に今インターンをしている会社に行く意思決定をしたので、実はここに実際行く会社が載ってません(あれれ)。

a社

逆求人→面接→面接→辞退

AtCoderでもコンテストを開いていたりして、面白いアルゴリズムを扱っており面白そうだったので選考を受けました。二回面接をしていますが、雑談のような形で話しやすい雰囲気でした。人事の方や技術職の方も丁寧に進路について向き合ってくれているのを感じましたし、やってる内容もチャレンジングでとても面白いと感じました。

正式に内定というものをいただく前に意思決定をして辞退しました。

b社

逆求人→技術テスト→技術面接*2→(落ちて別チームの選考へ)→技術テスト→面接→面接*2→お祈り

正直逆求人に行くまでは名前も知らなかったのですが、大企業のグループ会社でありながらシリコンバレー気質な社風と、自動運転の研究開発という分野が非常に面白そうだったので選考を受けました。「学部生でも実力があれば全然いける」というお話も聞いたのも後押しになりました。

最初のチームでの面接は、割とテクニカルな部分を聞かれ、それに加えて一人とホワイトボードプログラミング、もう一人とシステムデザインをしました。システムデザインが英語かつGoogleハングアウトでホワイトボードもろくに使えずボロボロでした。そのあとに「他のチームが興味を持っている」という連絡があり、再びコーディングテストと面接を受けて落ちました。

落ちた理由が「修士進んでいないこともあり〜」と言われたのにはちょっと首を傾げましたが、そのように落ちた理由も教えてくださり、メールの返信も早くて終始真摯な印象を受けました。

c社

Paiza→面接→技術テスト→面接→最終面接→最終面接(2回目)→内定

会計ソフトを扱っている会社。会社の文化が好きだったので選考を受けました。テクニカルな質問はほとんどなかったように感じます。向こうがこちらに不安な部分があったらしく、最終面接の二回目が通知された時はびっくりしました。

内定後は、自分の行きたいポジションの人と面談をアレンジしてくれたりと、意思決定のための判断材料を用意してくれました。

内定をいただいた後に他の選考結果を待っていただけないか何回か相談しましたが、あちらの事情もあり、どうしても一ヶ月以上は伸ばせないとのことだったので残念ながらお断りしました。

d社

書類→技術テスト→電話面接→技術面接*4→お祈り

有名な検索エンジン作ってるところです。緑コーダーで入った方がいるという記事を目にして、自分もチャレンジしてみたいと思い選考を受けました。オンラインでの技術テストは日頃の競プロに比べたら簡単だった気がします。電話面接、技術面接に向けては割と対策してから臨みました。

話題のお昼ご飯を食べたいなと思ってましたが、午後からになってしまいました(残念...!)。技術面接はホワイトボードプログラミングでしたが、面接官4人中2人とは英語でやりとりしました。解けなかった問題もあったので、手応えはあまり良くなく、帰りの電車で自分の解答のミスに気づいて落ち込んでた覚えがあります。

ただ、受けた感想としてはレートが低くても全然チャレンジする意義はあると思ったし、自分との距離が少し掴めた気がして受けてよかったなと思いました。

e社

書類→技術テスト→英語テスト→適性検査→技術面接→お祈り

求人サイトをやってるところです。普通に待遇が良かったのと、youtubeで働いてる様子とかみて、純粋に働いてみたい!と思ったので選考を受けました。

オンラインでの技術テストは自分にとって難しかったですがAtCoder力と気合いで通しました。面接ではホワイトボードプログラミングを英語でやりました。英語は割と話せました。開始20分間違った方向で回答を書いていて、気づいて修正しましたがタイムロスが多かったので、向こうが用意していた最後まで到達できなかったのかなと思ってたら案の定落ちました。

面接官の人がとってもフレンドリーでいい人でした。(ちょっと眠いかもって言ったら、一緒にカフェテリアでコーヒーを淹れに連れて行ってくれたりしました。)

f社

書類→面接→面接→面接→面接→辞退

ゲーム作ってたりAI事業に力入れてたりしてるメガベンチャーです。単純に技術的に強くなれそうだなーって思って受けました。基本的にはどんなことをどうやって頑張ってきたかということにフォーカスされてました。が、Androidアプリをどんな構成で作ってどんなところを工夫したか、とか、競技プログラミングをなぜやっていてどんなことを学んだか、とかは聞かれました。

最終面接前に自分の意思が固まったので辞退しましたが、開発の進め方だったりとか、平均的な技術レベルの高さとか、素敵な会社だなと思いました。

感想とか

院進か就職か?

僕はてっきり院進すると思ってました。分野としては教育情報学をやりたくて、かなり前から院試についての情報を調べていたりしました。

hiramekun.hatenablog.com

hiramekun.hatenablog.com

2月頃に関連する研究室を見学をして、ちょっと自分のイメージと違うな...となりました。やはり自分がやりたいのは社会実装的な側面で、現存する問題を研究や実装によって早いサイクルで解決できるのは企業なんじゃないかと。かなり工学的思想が強いねとも言われて、確かにそうかもと思いました。(コンピュータサイエンスとかの勉強もとっても好きなのですが、大学で何か自分の好きな研究をしようというまでの熱意はありませんでした。)

就活の軸について

最初は自己分析とか正直やらなくてもいいと思ってました。ですが結局自分が意思決定をするときに、何かしらの軸で決めなければいけないので、ここを明確にしておくことは面接だけのためではなく、自分のためにも大事だと感じました。

  1. 興味のある事業をやっているか?
  2. 技術的に強くなれそうか?
  3. 文化が自分に合っていそうか?

このそれぞれの軸の優先順位をはっきりさせるところに時間がかかりました(半年くらい…)が、最終的には自分のやりたい教育という分野に新卒から関わりたい思いを最優先して意思決定をすることにしました。

あと、技術的に強くなれそうか?という点については、割と自分のすぐ近く(メンターとか)が優秀な人か?という尺度がとても重要だと思いました。「新卒ではベンチャーに行くよりもメガベンチャーに行った方が、伸び伸びと自分の実力をつけることができるかなー」と思っていましたが、先ほどの観点を重視して「会社の規模よりは近くで働く人たち」を大事にしようと決めました。

競プロは役に立つか

よく話題になりますね。正直自分の場合は、競プロをしていなかったら受けた会社の半分以上で面接まで行けなかったと思います。それほどまでに自分はアルゴリズムが苦手でした。就活のために競プロを始めたのではないのですが、こんなに自分の役に立つと思ってませんでした。

その一方で、日本企業の多くの面接ではアルゴリズムの能力よりも、「インターンや何かアプリを作った経験」とか、「その人がどんな人であるか」にスポットを当てることが多かったです。その人を表す指標の一つとして、なぜ競技プログラミングに出ているのか、どの辺が好きなのか、などはたまに聞かれました(が、他の経験についての方が深く聞かれました)。

自分のツイートを見返すと、会社によって反応が違うのがわかって面白いですね。緑〜水色はコードテストは割と通過するけど、面接でメインに据えるにしては会社によって関心度が違いすぎるなあと感じました。

就活する意味

まず、本当に行きたい会社を選ぶプロセスが大事だと思いました。僕は目の前に選択肢が出てきて、究極的に選択を迫られないと、本当の自分の気持ちに気づけませんでした。そういった意味で、最終的にはインターン先を選んだわけですが、就活をして本当に良かったと思います。

これもありますね。

調べるだけではわからない、面接で話してみてようやく掴めることもあるなあと感じたからです

競プロ純粋培養水コーダーでも就職したい! - はるらるら

あと、とても有名な企業と自分の距離感をつかむことができました。正直競プロをするまで、自分には程遠い世界だと思っていましたが、実際に受けてみると「思っていたよりも身近な世界なのではないか?」と思えました。自分の知らなかった世界を少しだけ垣間見れた気がして、楽しい経験になりました(落ちましたが...)。

最後に

長い文章でしたがありがとうございました、質問とかあればなんでもDMとかで聞いてください。 しんどい時もありましたが、総じて見るとたくさんコードテストを受けたり、いろんな業界を観れて楽しかったです。

来年からはインターン先のベンチャーで働きます。最終的にいい意思決定ができたと思うので、社会人になるのも楽しみです。