Blog
【内定者アルバイトBlog】エンジニア内定したけど、実力が不安だったから内定者アルバイトしてスクスク成長したお話
皆さん、こんにちは!AI事業本部 人事の定近です。
今回はAIR TRACKというプロダクトにて内定者アルバイトをしていた七海くんが
ブログを執筆してくれました!ぜひ一読ください!☺️
↓↓↓
はじめまして、2020卒エンジニア職内定者の七海と申します!
CyberAgentのAI事業本部にあるAIR TRACKというプロダクトチームで約1ヶ月半の間、
サーバーサイドエンジニアとして内定者アルバイトをしていました。
内定者アルバイトとして学生エンジニアが1ヶ月半働いた結果、
” スクスク ” で “ すくすく ” 成長した話を共有したいと思います!
少し長くなってしまいますが、内定者アルバイトや長期インターンに興味がある方は、ぜひ読んでみてください!
( スクスク = 渋谷スクランブルスクエアです… )
我ながらいい写真だ・・・
1ヶ月半働いて何が成長したのか
結論から書きます!
下記が僕がこの1ヶ月半の学びです!
- 未経験のScalaを”完全”に理解 (完全に…^ ^)
- 拡張性を考えた実装
- レビュアーを意識したプルリク,コミット
- テストの重要性
- スクラム開発の流れ
正直,僕の学生人生の1年半ぐらいの成長を凝縮したような1ヶ月半でした。
どうやって、1ヶ月半でこんなに成長したのか、
内定しているのにアルバイトをした理由などを書いていこうと思います!
なんだか、1ヶ月半で太った気が・・・
内定したのにアルバイトするの?
どうなんでしょう?皆さんの周りでは、入社するまでの間に内定先でアルバイトをする文化はありますか?
少なくとも,僕の周りでは内定者アルバイトという言葉はあまり聞かないように感じます。
僕は地方出身なのですが、地方といえど情報系学生は都心への就職がメインです。
でも地方からだと学生は気軽にアルバイトとかできないんですよね・・・。
CyberAgentでは、地方学生がアルバイトやインターンをしやすいように様々なサポートをしています。
詳しくはこちらを見てみてください。
今回、僕が内定者アルバイトをした理由は、”入社前に周りよりも一歩成長したい!” という理由です。
まだ詳しく知らない2020卒新卒の同期たち
ただきっと、めちゃくちゃ強いエンジニアたちがたくさんいることだけは想像できます・・・。
田舎者の僕が、同期と同じスタートを切るには経験値が足らなすぎると感じました。
そこで,入社前に少しでも多くの経験を積んで成長しようということで、
短期間ですが内定者アルバイトとして受け入れてもらいました!
アルバイトが始まるまでの流れ
CyberAgentでは、多種多様な多くのプロダクト開発が行われています。
そのため、学生がアルバイトを始める時には人事の方と面談を行い、
学生に適したチームに配属をさせてもらえることになっています。
こういった配属に関わる話については、
「どうせ会社の部署配属なんて運要素が強いんでしょ?」
と感じる方が多いと思います。(実際、僕もそう思っていた側です)
今回、僕がこの配属プロセスを経験した結果や、同じ期間に一緒に働いていた学生の話から、
かなり学生側の意見を尊重して配属先が決められているように感じました。
一例になりますが、僕が今回AIR TRACKでアルバイトをさせてもらうまでの流れを説明します。
僕の場合、面談時に既に“ AIR TRACKでアルバイトをしたい ”という意思がありました。
CyberAgentでは内定者が4月に入社する前の期間に、
同期や現役のエンジニアたちと交流を深められるイベントや勉強会などを、たくさん開いてくれます。
その一環で、AI事業本部のエンジニアの方々と、交流をさせていただく機会がありました。
その際に、AIR TRACKのエンジニアからプロダクトの話やチームの雰囲気を聞いて、
とても興味を持ったことが配属希望のきっかけです。
そこで、面談時に「AIR TRACKで開発をしてみたいです。」と相談したところ、
スムーズにその方向で話を進めていただきました。
プロダクトとの現場面談では事前に、使用する技術の話や、担当する開発箇所の相談などもしてもらえるため、
安心してアルバイトを始めることができました!
次は、この1ヶ月半僕を成長させてくれたチームについても少し紹介させていただこうと思います。
AIR TRACKとは
今回僕が配属させてもらったAIR TRACKについて少し紹介します。
このサービスは ” 実世界の販売促進のための広告配信プラットフォーム ”です。
メインでは、DSPと呼ばれる広告プラットフォームを開発しています。
DSPをはじめとした広告配信に関わるアドテクノロジーに関しては
こちらに良くまとまっているので、気になる方はぜひご覧ください。
【環境について】
AIR TRACKでアルバイトを進めていく上での環境について紹介します!
- メンターとして2名にメインでサポートしてもらった
- core i7,メモリ16GB,2018年製のMacBook Proを貸してもらった
- モニターも貸してもらえる
- なんかめっちゃいい椅子
- 飲み物の自販機がタダ
- 10時出社19時退社 (残業は無し!!)
正直、かなりストレスフリーで働くことができました。
メンターが会議などで、席を外している場合でもAIR TRACKでは
チームとしてプロダクトの知見が溜まっているため、
他のエンジニアの方に質問すれば大体の問題は解決しました。
また結構こういった開発系のアルバイトでは最初の開発環境の構築にかなり工数が取られることが多いのですが、
” 新しく来た人向けのドキュメント ” がしっかり用意されていたため、
1営業日かからないぐらいで環境を整えることが出来ました。
今までは「ドキュメント書くの面倒だなー」と感じていたのですが、いざ自分がお世話になると、
その重要性に気付かされます・・・これからはしっかり書きます!
分からないことは、すぐにメンターさんに聞いていました!
実務だからこそ成長できること
「今回の1ヶ月半でもっとも成長したスキルは何ですか?」ともし聞かれたら、
確実に「Scalaで実装する力です」と答えます。
でも、言語の成長は配属するチームや、与えてもらうタスクに依存しますし、
僕よりもいい情報源がたくさんあると思うので、ここでは僕がアルバイト期間中にお世話になった、
一冊の紹介のみとして、残りは割愛します。
初学者にオススメの一冊
この本は、バイト開始2日目ぐらいにチームの方にお借りした一冊です。
AIR TRACKだけではなく、Scalaで開発している他のチームのエンジニアの机にも置いてあったので
間違いない一冊だと思います!これからScalaを学びたい方はぜひ読んでみてください。
ここで伝えたい実務でしか学べないと感じたことは、
たくさんありますが最も伝えたいことを下記3点にまとめてみました。
1.実はちゃんと使えていなかったGit
学生エンジニアのみなさん、Gitしっかり使えますか?
僕は、
- 何となくブランチ切れる
- 何となくコミットメッセージ書いてる
- 何となくリベースしてる
- 何となくプルしてマージもできる
だから、何となくGit使って開発できてると思っていました。
実際は結局何となく止まりの使い方だったので、業務でチーム開発をしていたらすぐにボロが出てきました。
小さいものも含めるとたくさんありますが、特に印象に残っている問題が下の2つです。
【問題1:プルリクでかすぎ問題】
この問題に関しては、下の画像をみてもらえたら一目瞭然です。
肥大化したPull Requestの様子
「お前は一つのプルリクでどこまで進むんだ・・・」
普段、[ プルリク → レビュー → 修正 → マージ ] といった流れで開発する場面が、圧倒的に少なかったんです。
なので、大きなタスクを小さく区切って作っていくといった基礎がついておらず、
自分が作りたいところまで「どりゃ〜」と作ってしまいました。
この問題で辛いのは,もちろんレビューする人ですよね・・・
(ここまで膨らんだプルリクをレビューしていただき本当にありがとうございました泣)
ただ,肥大化したプルリクに気が付いた時,レビューをお願いする側も、
ひじょ〜〜に心苦しいのです(もはや申し訳なさしかない)、
もし、普段あまり気にせずプルリクを出してる方がいましたら、
レビュアーと自分のお互いのために必要な分だけに、小さく区切って出すことを心がけましょう!
【問題2:コミット履歴汚染問題】
コミット履歴って整理しますか?
僕は、今まで自分がしたいだけコミットして、全部そのままマージしてました。
あるとき「プロダクトのコミット履歴」と「自分のコミット履歴」を見比べた時に、
無駄なコミットが多いな〜と感じました。
例えば、「 [fix] getExampleのタイポ修正 」こんなやつとか、
コミットした後にタイポに気がつくことが、たまにあってその都度直してコミットしていたのですが、
このレベルの修正であれば一つ前のコミットに含めるように操作した方が、絶対に履歴は綺麗になります。
言われれば当たり前なことなんですけど、慣れるまでは集中してたり意識してないと結構多発してしまう気がします。
今後の人生では、しっかり気をつけていきたいです!
2.テストの重要性
実はテストが重要になるようなプロダクト開発に今まで携わったことがありませんでした。
普段の僕の開発の流れは、
「ローカルで動いてるし大丈夫!」→ 本番デプロイ! → エラー発生 → バグ修正 → OK
こんな感じでとりあえずデプロイして、エラー出たら修正するスタンスで開発することが多いのですが、
お客様がいるサービスではもちろんそれは通用しません。
そのためにテストを書いて、事前に期待通りの動きをするか確かめる必要があるのですが、
普段書き慣れていないため、就業中にテストを作成するたびに結構な工数を消費してしてしまいました。
ただ、テストをしっかり通ってデプロイできればその分安心感がありますし、
普段あまり考えないMockを使ったテストコードの作成もできたので、大きな学びになりました。
3.拡張性を考えた 設計 / 実装 ってなんだろう
これは、もちろんこの短期間で学びきれたとは絶対に言い切れません。
ただ、その片鱗に触れることはできたのかなと思います。
設計に関していえば、今回の就業中に僕が触らせてもらっていた場所は、
クリーンアーキテクチャを意識した設計になっている部分でした。
この辺の設計思想的なものはネットにたくさん記事がありますが、
実際にどんなコードを、どのレイヤーに書いたらいいのかを理解することは難しいように感じます。
しかし、実際の現場で作られているコードを読むことで,
なんとなく (本当になんとなく) UsecaseやControllerの書き方や,
Adapterを使った実装の大切さなどが理解できたように思えます。
これは,実際に使いこなしている人のコードを読まないと学べないことだと思うので、
アルバイトなどを通して現場のコードを読ませてもらわないと、学べないことだと改めて感じました。
また、コードを書いている時にも
前提条件が変更された時に、変更するコードの箇所を考えたり、コピペしたら抽象化できそうなど、
少しずつ拡張性を意識した実装を考えられるようになっている実感がありました。
このような成長は、自分のコードに対して真摯にレビューをしてもらうことで少しずつ成長できるものです。
学生の期間にレビューをもらえる機会というものは、正直限りなくゼロに近いので、
このような成長も実務ならではの成長なのではないかと思います。
内定者アルバイトが仕事現場にいる意味
最後になりますが、就業中に僕はよく
「自分は今、時給分の成果をちゃんと出せているのだろうか」
ということを考えていました。調べれば出るのであえて書きませんが、
地方学生からすれば、かなりの時給で働かせてもらえます。
正直、自分が任せてもらっているタスクはチームの誰かが実装すれば一瞬で片付いてしまうようなものだと思います。
自分の今の技術力では、自分が成長するのが精一杯で技術力でチームに大きく貢献するのは難しいと感じた時に、
内定者アルバイトの自分がチームにいる意味について考えるようになりました。
もちろん、こう言ったブログで経験談を書くことも自分にしかできない仕事ですが、
僕は内定者バイトとして、
「少しでも,チームに新鮮な風を吹かせることだ!」
と思いました。(ちょっとエモすぎる気がするけど・・・)
具体的に説明すると、会議中に自分が発言したり、
お昼の時間や業務時間のちょっとした休憩、終業後などに自分が発言することで、
もしかしたらチーム内に今までにない新鮮な意見や雰囲気を出すことができるかもしれないと考えました。
同じチームで動いているとやはりどこか変化のない日々が続くと思うので。
感性的な話になってくるので結果的に達成することができたのかは難しいところです。
実際、会議中に意見しようとしても理解が追いつかなくて
単なる質問で終わってしまったりする場面も多々ありました。
ただ、意識して行動することでチームのメンバーとの距離は一気に近くなった気もしましたし、
何より自分が楽しくなっていきました!
少しでもチームの日々に自分が変化を生むことができていたらいいなと思います。
まとめ
書きたいことが多すぎて、結構長々と書いてしましましたが、伝えたいことは単純に
「学生はCyberAgentで長期インターンや内定者アルバイトを絶対したほうがいいよ!」
ということです。さらにいうと、
「AIR TRACKで長期インターンや内定者アルバイト絶対したほうがいいよ!」
ということです。この記事が少しでもこれから、
学生として実務体験を積みたいと考えている方の助けになると嬉しいです。
読んでいただきありがとうございました!
チーム内成果発表の様子
Author