Build@Mercari2020参加記

Build@Mercariのプログラムが良い体験だったので、まとめてみた。

画像2

応募まで

Buildのプログラムは社員さんのツイートを見て存在を知った。私は2018年にGoogleのSTEPという似たようなプログラムに参加したことがあり、とても勉強になったのと、友達もたくさんできて楽しかった思い出があったため、良さそうと思って参加を決めた。

選考はGoogleフォームと(書類書かなくていいのが個人的にポイント高かった)、コーディングテストと面接だった。文章力がないせいで落ちたくなかったので、フォームの文章は全部先生に添削してもらった。先生ありがとう。受けてみての感覚だけど、フォームの内容は選考の時点ではあまりフィルタリングしていないのではないかと感じた。

コーディングテストはAtCoderの灰色から茶色くらいの問題と事前に言われていて、本当にそのくらいのレベルだった。今のインフレ化しているAtCoderなら茶色後半くらいで全部解けそう。周りの話を聞いた限り、当時のボーダーは7割くらいじゃないかな。

問題は面接で私はちゃんとした場で話すことが得意じゃないので不安だった。聞かれそうな質問や言葉に詰まりそうな質問に関してはざっくり内容を考えて挑んだ。

実際の面接は、来たら嫌だなと思う質問はあまり来なくて、台風の研究の話で盛り上がった。その後、コーディングテストの内容を質問されて、どうしてこのようなコードを書いたか的なことを聞かれた。最後に聞かれた質問は答えられなくて悩んでいたが、終わった後にフィードバックをいただけてありがたかった。

準備は全力を尽くしたので、落ちたら悲しいなと思っていたが、無事合格できてよかった。

当時の告知記事↓
https://mercan.mercari.com/articles/19631/

授業について

授業自体は全6回で前後にオリエンテーションと卒業パーティがあった。全てオンラインだった。オフィスで授業受けてみたかった😭

オンラインで良かった点は、オフィスに行くまでの時間が浮いたのと、毎回夕食の補助が出て2000円以内でご飯を買うことができた。太っ腹👏👏

私の家は当時UberEats対応していなかったので、徒歩10分くらいのところにあるイタリアン料理屋さんで毎回パニーニを頼んでいた。

第0回のオリエンテーションはプログラム内容の話とインターンの説明があった。インターンは予想よりも枠が少なく(のちに増枠した)、要求されるレベルが授業内容と比較して数段階高く感じた。話を聞いていて「これインターン行けるかな?」と不安な気持ちになった。

あと、第0回のオンラインの交流会が個人的にベストでしんどかった。初めての人9人くらいとmeetで話すのはつらかった。コミュ障。

授業の方は最初の方の授業は知っていたことも多くて大変だなと思う授業はあまりなかったが、後半になるにつれて徐々に課題が重くなっていった。

最後の2週くらいは土日を全部潰してコーディングしていた。一日中プログラム書いてて、楽しい気持ちとしんどい気持ちが半々だった。課題ができたときは達成感がすごかった。個人的にはフロントエンドの授業が学ぶことが多くて、とてもよかった。

課題はGithubで管理していて、他の人のコードとかが完全に見える状況だった。良いコードを書いてる人とか一目瞭然でとても参考になったけど、逆に自分のコードも見られていると思うとプレッシャーを感じた。

他にも、質問などはSlackで聞くことができるのだが、自分より進んでる人とかとてもできる人たちがよく分からない質問をしていて、ちょっと怖いなーと感じたのでGithubやSlackはなるべく見ないようにしていた。もちろん、良い会話などをしていることもあって参考になったこともあったし、お互いに助けあったりして良いなとは思ったけど、私は苦手だった。

ちなみに、授業のスライドは全部公開されているので様子を見てみるといいと思う。課題が大変だった5,6週の授業のスライドがないのが憎い。
https://mercan.mercari.com/articles/23192/
https://mercan.mercari.com/articles/24335/

インターンの面接

面接は2回あったのだが、うち1回が45分の英語面接だった(志望チームによる)。英語面接なんかしたことないし、「英語無理〜」と思っていたが、授業を見るかぎり、周りの人は英語を普通に話していて、「やばいの私だけかなー」と感じていた。

面接対策は、英語があまりにも出来ない前提で聞かれそうなことは全部文章を作成して、暗記した。ただ、詳しいことを聞かれたり外れたことを聞かれる可能性があったので、本当に聞かれそうなものだけに留めた。

実際の面接は2人の外国人の面接官が出てきて、本当に怖かったけど、片方の外国人に日本語喋れるよって言われて、とても安心した。けどここで日本語で話すのは甘えだと思ったので、本当に話せないときだけ日本語で話した。後に聞いたら、この姿勢は評価されてたらしい。

今だから言うと、面接官の片方がインド人で彼の英語が全く聞き取れず、彼が話した時だけは実は全部ニコニコしてスルーしていた。(彼はのちに私のメンターになる)

面接の中で一番印象深かった質問が、SQLとNoSQLの違いを聞かれた時で、私は「は?NoSQLとか使ったことないし知らんわ」と思っていたのだが、「いやGCPのDatastoreってNoSQLだよ」って言われ、そこで初めてNoSQLがNot only SQLということを理解した。(GCPのDatastoreを以前に使ったことがあるという話をした流れでこういう質問をされた。)

なんとなくプログラミングしていることに、非常に反省したので最近は技術に触れる時に積極的に単語との紐付けを行うように意識している。あと全然関係ないけど、ネイティブスピーカーのSQLの発音独特すぎて最初何言ってるか全く分からなかった。

実は受けたところが結構人気で、数人落とされていたらしいが、受かった理由をインターン後に聞いたところ、「趣味はなんですか」と質問された時に「ジャグリングです」って言ったことだったらしい。「社内にジャグリングのサークルがないかな?」と思って探りを入れただけのつもりだったけど、ジャグリングやってて面接の印象に残ったのはラッキーだった。

ちなみ最近練習していないので、もう全然できない。

 Buildのインターンでやったこと

インターンはマスターデータを扱うバックエンドのチームで働いた。

最初は、マイクロサービスにgRPCのエンドポイントを生やすタスクを与えられた。ただ実装するだけでなくて、元々あったhttpのサービスを改良する必要があるらしく、英語のデザインドキュメントなどを読み込んだ。実際の実装は仕様などを決めたりして2,3週間ほどでおわり、レビューと修正に1,2週間ほどかかったが、想定ではペアプロなどをして丸々2ヶ月かけて終わらせて良い感じだったっぽい。

9月頭にタスクが終わってしまったため、その後はTechLeadが半年間放置していた仕事を渡された。このタスクはコーディングのタスクというよりは他のチームの人と連携して動かなきゃいけないタスクでミーティングのドキュメントを作成したり、他のチームの人と話したり、社内のバックエンドのシステムを調べたりしていた。Slackで分からないことを他のチームの人に聞いた時に偉い人が沢山出てきたときはとても怖かった。あと、途中で困っている時にTechLeadが旅行で消えた時には殺意を覚えた。結局このタスクで何かしたりとかはしなかったが、社員として働くとこういう仕事もやるのだなという勉強になった。

・・・・・・・・・・・・・・

9月の中旬はHackWeekという社内ハッカソンイベントがあり、9月の1週間はそれに参加した。メルカリのユーザーページやアイテムページを他のWebページ簡単に埋め込めるwidget codeを発行するサービスをインターンチームで作成した。

私は主にバックエンドを担当し、チケット作成したりだとかサービスの基礎となるコードを書いたりした。作成したサービスについては、当初私はいろいろな締め切りに追われていて出来るだけサボろうと、簡単な手法を提案したのだが、同期のバックエンド担当の子から勉強にならないから嫌だと言われてしまい、実際のシステムの模倣マイクロサービスを作成することで合意に落ち着いた。

HackWeek中はDocker, kubernetes, gRPCあたりを勉強した。1からサービスを作ることで社内システムの理解が深まり、さらにDockerfileの書き方だとか、kubernetesの設定の仕方だとか、とにかくめちゃめちゃ色んなことを学んだ。自分で手を動かすの大事。

結果はシルバーアワードを獲得 👏 し、マイクロサービスの実装も評価されてて非常に嬉しかった。こういうハッカソンみたいなイベントはアイディア勝負みたいなところがあり実装(特にバックエンド)などあまり重視されないイメージがあったが、講評で評価されたのはとても嬉しかった。

チームメイト本当にありがとう。

・・・・・・・・・・・・・・

他にインターン生同士のつながりとしては、毎週金曜に進捗共有会とオンラインの飲み会があった。進捗共有会では週1で担当者がLTをし、インターンでどんなことやっているかだとかオススメの椅子の話などをしていた。他の人のインターンのタスクの話は私には少し難しかったけど、みんな優秀なんだなってことがわかった。

HackWeekの記事
https://mercan.mercari.com/articles/25142/

プログラム全体の記事
https://mercan.mercari.com/articles/25715/

延長した後

インターンの延長は原則できないと言われていたが、インターン終わる3週間前にマネージャーとTechLeadとプログラム担当者にダメもとでお願いしたら出来た。

延長した後は、引き続きのタスクと、TypeScriptのサービスのタスクをもらった。バックエンドのデータを持ってきてcsvでダウンロードできるようにするコードを書いた。TypeScriptは初めてだったので雰囲気で書いていたけど、型がある言語の方が個人的に好きだなと思った。

このあたりにTechLeadがチームの技術力をあげたいということでレビューのApprove数が上がった。そのおかげで、インターンの私でもコードレビューをする機会が増えた。
// それまではTech Lead一人で全部コードを見ていた、冷静に考えるとやばいと思う。

コードレビューは夏に参加したハッカソンとHackWeekの期間に若干BackEndのコードにコメント付けてたくらいで、レビュー経験は少なかったが、見様見真似でレビューをしたらチームメンバーに「レビューのコメントがいいね」と褒められて嬉しかった。

10月の中旬はチームで数か月放置していたタスクを渡された。TechLeadは確実に面倒なタスクを私に投げてきていることがわかったが、チームの一員として認められてる感があって嬉しかった。タスクは自分たちのマイクロサービスにセキュリティテストを追加するタスクで、社内のインフラやテスト環境などはあまり理解していなかったのだが、ドキュメントがしっかりしていたので案外すんなりと追加することが出来た。ついでに社内システムの理解も深まり一石二鳥だった。

10月後半から11月いっぱいはチームで新しいマイクロサービスを立ち上げることになった。納期が決まっていたため、チーム一丸となって作成した。多い時は1人3,4PRくらい1日で作成して、レビューが追いつかないなどということもあった。

コーディング自体の量は少なく、ほとんどの時間をインフラ環境のセットアップに使っていて、普段だとあまりできないような仕事に携われてよかった。時々設定をミスってTechLeadに「気をつけてね〜」と言われたこともあったし、TechLeadが他チームの人たちとバトっていて大変そうな場面を外から見ていたこともあった。とても良い社会勉強になった。

インターン期間中にマイクロサービスの立ち上げから完成まで体験出来たのはめちゃくちゃラッキーだと思う。

働いてて良いと思ったところ

・福利厚生
チームビルディングでご飯代出るのがとても良いと感じた。私の所属していたところは金額の上限とかもなかった。オフラインだったら六本木の美味しいご飯沢山食べれたんだろうなと思った。

・英語
メルペイは違うらしいけど、外国人多い。とにかく、思った以上に英語使う機会が多くてびっくりした。英語や日本語のチャットランチやLEXがあったり、優しい日本語・英語が推奨されていたりして、社内でも語学勉強に力を入れている。English SpeakerとJapanese Speakerがお互いに歩み寄っている感じがとても好印象だった。

・ドキュメント
ドキュメントの質がめっちゃ高い。何もわからなくてもドキュメント読めばマイクロサービス立ち上げられるようになっている。エンジニアの質が低くなってもサービス立ち上げられるのは理想型。ただ、ドキュメントに甘えずに積極的に自分で勉強しないと成長できなさそう。

最後に

授業でもめちゃくちゃ力がついたし、インターンはワイワイして楽しかったし、後半の方は社員さんと同等の扱いをしてもらえて、とてもいい体験だった。Build@Mercari超オススメ。

最後まで読んでいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?