競プロっておいしいの?(仮)

緑Coderが取り組む検索エンジンの高速化(Yahoo Internship2022)

(この記事は社員さんに確認していただき、守秘義務的に問題ない範囲の情報のみの記載となっています)

はじめに

お久しぶりです。定期的にアウトプットしなければと思う反面、なかなかできておりません。

今回は久々にアウトプットするべき経験を積んだので、書いていきたいと思います。

例によって長いので飛ばし飛ばしで見てね

Yahoo Internship2022 参加記

Yahooさんのインターンに参加させていただきました!

正直びっくり。通ると思っていなかったので。参加記をまとめていきます。

インターンに参加するまで

流れの話

  1. 面白そうなコースがあるのに締め切り当日に気づく
  2. ギリギリに申し込んでコーディングテスト
  3. 面接
  4. 採用

という流れでした。自分の大学同期が「君の知ってる人でもコーディングテストで落ちてる人結構いるよ?」といってたので面接までたどり着けて満足という感じでした。コーディングテストだけ通って面接落ちるパターンに慣れすぎて、また落ちるのに結果先延ばしやとか思うくらいにはなっていたかも。でもYahooは難しかった。正直落とされると思ってたからびっくり。

参加コース

検索エンジンアルゴリズムの分析・性能改善を通して検索エンジンの高速化検証の過程を体験」

というコース。

必要な経験/スキル:C++の開発経験&データ構造とアルゴリズムに関する基礎知識

競プロでC++書いてきた人が嬉しい要求で即Goしました。

about.yahoo.co.jp

参加が決まってから

正直バイトばっかりやってました。他社インターンや謎のセミナーのチューターなど、休みが全然なくてしんどかったです。連絡受けた8/15が夏休み開始日でしたので、本当に夏休みは労働に溶けましたね...

手続きたくさん、PCが届いたり、ランチ会のご飯予約をしたり、色々ありましたね。締切は守りましょう。

もらったもの

ステッカー、PCにペタペタはりました(Yahoo以外も貼ってる...)
技育博での企業さんが多いのでアレ

https://pbs.twimg.com/media/Fdgv-kFakAEG0MJ?format=jpg&name=large

Tシャツ(ここ以外で着れない)

https://pbs.twimg.com/media/FdQGae_aEAADIC9?format=jpg&name=large

家にトートあふれるようになりました。ノートとボールペンとスマホリング

https://pbs.twimg.com/media/FdgxLyBagAArPS8?format=jpg&name=large

ノベルティたくさんマジで嬉しい。ありがとうございます

やったこと

インターンの課題のお話から

ざっと概要

前半3日:改善
後半4日:発表資料とデータ整理
最終日:成果発表

ほとんど資料に溶かしました。学会発表とか輪講とかやってるとなれるらしい。経験値の差が出てしまいました。

検索エンジンアルゴリズムの分析・性能改善

これは何をするかというと、ソースコードを読みました。そこから考えます。

競技プログラマ特有の計算量の考え方とか、ボトルネックの考え方から二分探索に目をつけ、いい感じにしました。「\ボンッ/グオーーーー!」しないようにしましょうね。え?古い?

競技プログラミングは役に立つ」といったところでしょうか

いい感じがどこまで言っていいのかわからないので難しい...

二分探索の最大比較回数が  \log_2(N) *1 なので、それを利用した改善を行いました。

実際どうだったかと言うと、時間が半分くらい早くなって最高となりました。自分のコードで早くなるのを見るのは気持ちいいね。

自分用にベンチ用意してくれたり、結果見やすいように環境加工して頂いたメンターさんには感謝しかなかったです。ありがとうございました。

加えて、「検索の仕組み」みたいなものも学べました。知らなかったので新鮮でした。面白い。ただ、やっぱり高速化改善Onlyと言った業務はなく、色々な分野が絡まり合ってできてるなというのを感じた。幅広くできる人材になりたいね。

チーム開発の気づき

「コードは書くより読むほうが多いから」

という発言は結構自分の中でずっしりきました。自分も読んで改善点見つけてるしね。

コーディング規則でコンパイルが通るコードがエラーになったりするのチーム開発環境って感じがしていい経験値だった。あれすごいなぁと思いました。

C++で助かったぁになってます。PythonC#だったら、脳から直接コーディングが出来なくて時間かかったと思ってるので。

あと授業ちゃんとやっててよかった、Linux触れたのとSSH configとか触れたの良かった。授業と合わせてMMA入ってて良かったポイントですね。

朝会の話

参加任意ではありましたが、僕はこれにしっかり全部でました。 参加した方がいいと個人的には感じました。うちのチームだったからかもしれないですが、チームの社員さんが取り組んでることの共有やこれからやること、問題など、どんな感じで動いてるかを知れる場所になっていました。

インターンは調整されたレールの上をある程度歩けるけど、朝会にいると実際の業務でやってることがわかりました。自分がやってることが一部でしかないというのを実感できて最高でした。(いろんなことが絡み合ってるなーと言うのを目の当たりにしてよかった。)

自分の課題を解決するだけ、ではなく実際に仕事がどう動いているかを直接見れる機会なので僕は良かったと思いました。

1on1の話

ここには書けないあれやこれ、課題に関する話やなんでも色々お話できて良かったです。

やっぱり学生の目線でない人と話すのは色々な気づきが得られるので面白いですね。なかなかそういう立場の人と話すことがないのでいい機会でした。

成果発表会の話

いやマジで良かったです。

自分の配属チーム以外のところから来てくださった方は、自分のところとの違いをお話してくださいました。自分がやってたことを客観視できてなかったのですが、コメントで他と違うことをやってることを第三者視点で俯瞰できるような、見通しを良くしていただけるコメントを頂けました。うちのチームではあなたのやってたことは出来ないけど、配属されたチーム「らしさ」がでててよかった...とのこと

俺のやってたことはそんな意味が...となるコメントだったり、OSSやってみたら?など新たな指針も...あと単純に成果出しててすごいというお褒めの言葉も、自信になりました。

正直僕はよくある「素人質問で恐縮ですが...」とかそんな感じでボコボコにされるのを想像してたので、褒められてすごく安心というか、不安が消えホッとしました。

これも資料添削や事前練習に付き合ってくださったチームの社員さんのおかげです。よかった。自分の資料作りの感覚はまちがってなかったなぁと自信になりましたね。

懇談会的なやつの話

初日のランチ会と最終日の懇親会がありました。 ランチでうなぎ一匹まるごととか色々豪華な物が食べれました。

初日のランチは写真をきれいに取り忘れましたが...懇談会にはこんな感じのディナーセット。良すぎる。9月なのでみたらし団子もセット。(サトウのごはんとお茶とジュース(酒セットを頼まなかったから)もあったよ)

https://pbs.twimg.com/media/FdQmeTmaEAEoSbB?format=jpg&name=large

ところで酒が飲めないので、お酒2本セットは頼めませんでした。30%(果汁)なのに安く済ませてしまいました...

どちらもチームの人たちとのレイドバトルだったので僕はチームの人とお話できて嬉しかったのですが、食べる暇が本当になくて、時間足りね~になった。

当たり前ですが、1人の社員さんが喋っている間、他の社員は食べれますからね...社員同士の雑談を聞く会にはならないよねぇ。

感想

悔しみがすごいありますね。流石に資料作ってる時間の方が長いのは悔しいですね。

仕事としてはこれくらいの割合になるのかもしれないという意味ではいい経験値なのかもしれません。

B3でのインターンは珍しいらしく、上手くできるか心配でした。それでも優秀と言っていただけて嬉しかったなぁと思います。M1には勝てないと思ってたのですが、一つでもお役に立てたなら良かったです。

企業の雰囲気を感じた

あまりここには書きませんが、会社で働いてる人、そして文化、勤務の雰囲気が見えるのはインターンの収穫として大きいですね。

6社も面接受けてると面接だけでもかなり雰囲気わかるようになって、逆質問もやりやすくなるんですが、実際に参加すると違いましたね。

一緒に(同じ作業をしていると言う意味ではなく)働くことによる解像度の上がり具合がとてもいい経験になりました。労働の一つの形が少しわかってよかった。

あと設定漏れでログインできないの当たり前なのに打ち間違えか~ って何回もログイン失敗してセキュリティアラート踏んで連絡来たの会社や...ってなった。ご迷惑おかけしました。

反省点

フィードバック面接をしていただき、振り返りをすごく大切にしている会社なんだなという風に思いました。ここまでコスト掛けるのも学生のためだったらいいなぁとか、将来の日本のため(Update Japan)とかだったらいいなぁと思います。採用のためというのももちろんあるとは思いますが。

時間の使い方が下手くそで、ゴールが見えないのがすごく不安でした。これを解消するべく資料を作ったら結構時間をかけてしまい、本題の改善にかける時間が少なくなってしまったなぁと思いました。 メインの課題がどちらなのか、を重視するべきでしたね。お陰様で、かなり伝わるプレゼンはできましたし、それはそれで良かったと思うのですが...悔しい。

次はもっと挑戦的に行きたいと思います。1回失敗したら次はやらかさないので...。次どこでお仕事するかわからないですけど、学生なので失敗をもっと恐れず挑戦してみようと思います。

おわりに

やっぱり実際に見てみると変わりますね。

コルブの経験学習モデル 、すごい大事にされていたのを覚えています。こうしてアウトプットして忘れないようにしているのもその一つです。ちゃんと振り返って自分の中の成長の材料として消化しきりたいですね。

自分を受け入れていただき、いい経験になり、たくさん勉強できました。ありがとうございました!!!!!!!!!!!!!!

Yahoo! インターン、自分にとっては最高の経験になりました。やりたいことがあるならオススメです、是非来年以降チェックしてみてくださいね!

蛇足

今思い返して、インターン選びに関する少しの後悔の話。

面白そうなものを片っ端から出して、1つ1つに関して目標とかゴールとか、何を得るために行くんだろうというのを考えてなかったなと思いました。業務の雰囲気を知りたいとかそんなふわっとした理由で出しまくってもいいことないなぁ...と。

インターンに参加した人が偉いわけでもすごいわけでもなく、そこで何を得たか、何をなせたか、そこにしかない機会を掴め取れたかというのが大事だと感じました。インターンに参加しているその時間で、参加してない人でも同じくらい濃密な時間を過ごすことは難しくないのかもな...と思いました。

そこでしか出来ない経験をどれだけ掴み取れるかゲームみたいな部分があると思います。そういうものを取りこぼすともったいないなと感じて、できることを最大限やってきたつもりです。

何がしたくて、自分がどうなりたくて、成長するための機会が欲しくて、だから参加したいんだみたいなものが明確になってると、「インターンだから得られた」ものをより最大化できそうだなと思いました。

ゴール設定とそれが満たされたかの振り返りが大事だと教えてもらえた気がします。なんとなくを減らしたいね。

以上蛇足でした。

*1:最後違う場合は+1とかなるかも?(厳密な話ができず申し訳ない)