blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2023.11.28 インターンレポート

DeNA の長期就業インターンで感じたことと得られた学び

by Kakeru Miyazaki

#internship

自己紹介

こんにちは。2022 年 9月 ~ 10 月末にかけての 2ヶ月就業型サマーインターンシップに参加した宮崎翔( @kakekakemiya )と申します。

東京大学大学院の修士 1 年生で、ヒューマン・コンピューター・インタラクション(HCI)を専門としております。 エンジニアとしては、フロントエンドを主軸としつつ、モバイルアプリ・シェルアプリ等の開発にも取り組んでいます。

現在、25 卒のソフトウェアエンジニア(領域は主にフロントエンド)としての就活を進めており、長期就業の体験をするために DeNA のインターンに参加しました。

これはどんな記事?

この記事は、DeNA の就業型長期インターンに参加した私が、インターンの感想とインターンを通し得られた学びについて述べるものです。 DeNA のインターンについて知りたい方、学生から見た DeNA という環境の捉え方に興味がある方などに読んでいただけると幸いです。

(ただ、あくまでも僕自身の感覚による解釈ですし、インターンおいて所属した部署のみに当てはまる話である可能性もありますのでそこはご留意ください。)

インターンの概要

私は 9/5 - 11/2 の約 2ヶ月間、「【就業型】ソフトウェアエンジニアリングコース」に参加させていただきました。大学院の研究を並行して行いつつ、途中から秋学期の授業が始まるというなかなか両立が大変な環境でしたが、なんとか乗り切ることができました。

参加したプロジェクトは 0 -> 1 の 0 が少し進んだ、0.5 くらいのフェーズ。2ヶ月の使い方としては、はじめの 1週間でドメイン理解中心のキャッチアップ。それ以降は、1人前の開発メンバーとしてタスクをこなしていきました。残念ですが、業務内容についてここで詳しくお話しすることはできません。ご了承下さい。

DeNA のインターンの推しポイント

多種多様なインターンシップが世の中に存在する中で、このインターンシップの面白い点・良い点を述べていきます。

インターン生ではなくチームメンバーとして扱ってくれる

「DeNA の長期就業型インターンは思ったより就業だった」というのが正直な感想です。 多くのインターンでは、あらかじめ用意されたインターン生向けの課題が学生にアサインされます。しかし、DeNA の長期就業型インターンは所謂「お客さん扱い」をされず、1人の開発者として扱われます。

オンボーディングの後は、開発メンバーとしてチームが今必要なタスクに取り組んでいく形となります。そこには「本物の就業」が体験できる環境が提供されていました。 学生の身分にありながら、この環境に2ヶ月間身を置けたことは非常に良い経験となりました。

柔軟な働き方が可能

2ヶ月のフルタイム勤務の中で、学業とインターンとを両立する状況が頻繁に生じました。具体的には、研究室の活動・大学院の授業・TA により「〇〇時から〇〇時まで不在になる」などです。 世の中には学業を圧迫するような就業型インターンが少なくありません。その中でも本インターンは学業との両立に対しての理解があり、この2つを長期間両立することができました。カレンダーと Slack で事前に不在になる旨を報告しておけば良い形で働かせていただけたので、非常に柔軟な働き方が可能でした。

夏休み等の長期休暇に合わせてがっつりフルタイムで働くのもよし、学業とのバランスを意識して稼働するもよしと、個人の意向を尊重してくれるのが DeNA のインターンのいいところの 1 つです。

色々な人と話す機会がある

チームメンバーの皆さんがとても温かかったのもあって、インターン期間中とてもたくさんの人と話すことができました。 特に、内定者インターンや 23 卒のエンジニアといった若いメンバー、中途入社のシニアなメンバー、チームをまとめる上長と様々なタイプの方とお話しできたのは素敵な経験でした。 (大変ご多忙な上長が、とても気軽に時間を割いて 1on1 をしてくださるのもこのインターンの良いポイントです。)

また、大きな企業であるにも関わらず、技術部門のトップ層の方と少人数でお話しする機会も設けて頂けたのも印象的でした。 普段お会いするのが難しい方々を含めた、たくさんの方々の多様な考えに触れることの出来るインターンでした。

インターンで得られた学び

ここからは。このインターンを通して得られた学びを述べていきます。学びは大小様々ありますが、一般性の高く、学生視点では得られにくいものについて紹介します。

納期・コストの意識と計画の重要性

学生の個人開発や小規模な開発だと、納期は明確に決まっていなかったり、工数見積りもそこまで意識する必要がなかったりするケースが多いです。(少なくとも自分はそうでした。) というのも、趣味のアプリ開発はステークホルダーがいるわけでもないし、少人数の開発では全員がチームの現状や取り組んでいるタスクのコストを把握するのが簡単だからです。

しかし、エンジニアとして就業し、大人数のチームの中で働く中では、そのようなスタンスではうまく機能できません。 チームのメンバー(特に開発におけるマネージャー)に対し、自分は今何のタスクに取り組んでいて、それがどれくらいの時間で終わりそうなのか。現状の進捗具合はどの程度良いのか(ビハインドしているのかオンスケなのか余裕があるのか)といったことを把握してもらう必要があります。

特にこのインターンでは、授業などの影響で稼働の取れる日と取れない日の差が激しかったので、このような意識を持つことが円滑なチーム開発のために重要だと感じる機会が多かったです。

この「仕事としてチームでのエンジニアリングを行うためには、ただ赴くままにコードを書き続けるだけでは不十分で、開発の進捗管理や工数把握を徹底する必要がある」ということを身をもって知れたのは本インターンにおける大きな学びの 1 つでした。

チーム開発における個人の動き方

私は、あるチーム開発において自分がタスクをアサインされたとき、「チーム内のプレイヤーとして自分で頑張るのが大事」だと思い、それを信じ続けていました。 しかし、この「自分で頑張る」というのが、「自分だけで頑張る」ことを意味するのではなく、「自分が中心となって頑張る」ことを意味しているのだと本インターンで気づくことができました。

私はこれまで、少人数での開発・個人開発を主として取り組んできたのもあり、「アサインされる = 自分だけで頑張って課題を解くことが求められている」と思ってきました。しかし、真のチーム開発におけるアサインとは「アサインされる = 課題に対して開発の 中心となって 早く正確に課題を解くことが求められている」というのが実情であり、必要であれば人を巻き込んで、全体益を最大化するように動くことがチームに求められているのだと身をもって学べました。

これは、上長との 1on1 で「kakemiya くんは独力で仕事を進める馬力をもっているからこそ、もっと人を巻き込んでいった方がいいよ。せっかくチーム開発してるんだから。ってことで今日から一人だけで課題解決するの禁止ね(笑)」と言われ、ハッとさせられたのがきっかけです。その日から私は、Slack で積極的に発言したり、ちょっと詰まった時に先輩をハドルに誘ったりするようになりました。そうした意識改革の結果、人を巻き込むことで知見が得られることやプロジェクト運営が円滑になることを学ぶことができ、「人を巻き込んでいいのは自分の力では課題を解決できず本当に困った時時だけ」という認識を改めることができました。

今後もエンジニアとして何かしらのチームに属することが想定されるので、この学びは今後非常に活きてくるのかなと思っています。

この後自分が大事にしていきたいこと

最後に、これまでの経験とこのインターンでの学びを通し、私がエンジニアとして大事にしていきたいことが明確化されたので、ここに(宣言を兼ねて)記させていただきます。

チームのために動ける人材になる

個人での頑張りは非常に重要なものの、自分「だけ」で課題に取り組む必要はないということを意識し、必要に応じて協力を乞うことのできる人間になりたいと思います。 また、納期やコスト、進捗等を適宜メンバーに共有し、かつ他の人の状態も把握することを意識していくことで、チームとしての出力が最大になるように動けるエンジニア になろうと考えています。

UX のいいコードを書く意識

あえて DX(Developer Experience)と言わずに UX と言っているのですが、読み手、書き手が大人数になるチーム開発では、開発者に対する UX が非常に重要であると思っていますし、このインターンで特にそれを強く意識するようになりました。

他の開発者の読解力頼りのコードを生成することは、相互の負担が増えるだけでなく、いずれ技術的負債として自分たちの首を絞めることに繋がります。また、汚いコードは、現状は正しく動いているとしても、開発が進むにつれバグが溢れかえるコードに変わっていく可能性も高いです。

このように、UX のいいコードを書くことは、一見面倒ですが、いずれ大きな面倒を回避することにつながることが期待されます。

また、デベロッパーフレンドリーな、「UX の良いコード」 を書く意識は、単に開発者の体験向上につながるだけではありません。というのも、UX のいいコードは、ユーザーストーリーやモデル設計が綺麗で自然な振る舞いなっているないと書くことができません。よって、「UX の良いコード」を書くよう意識し、書けない時にはふと立ち止まることが、仕様レベルでのアプリ自体の UX を高めることにもつながると考えています。

これらのことを踏まえ、私は、「UX のいいコードを書ける人材」、もっと言えば、「チームにジョインし、コードを読み始めたばかりのエンジニアが、自分の読解力が向上したかと誤解する かのようなコードを書けるような人材」になりたいと考えています。

品質へのこだわり

そのままなのですが、せっかく自分の貴重な時間を使うなら、品質にとことんこだわって開発に取り組みたいなと思っています。

これはプロダクトへの共感・愛情に依存しますが、自分自身の哲学を持ってプロダクトを作り、ユーザーの方に喜んでいただけるようなアプリを提供できるエンジニアになりたいと思います。

おわりに

DeNA での長期インターンを通し、色々な特性、立場、経験を持った人と関わったことで、自分は何が強みで何が不足しているのかということが今までよりも高解像度で理解できた気がします。

また、就業の体験としては、「ゲスト」ではなく「チームメンバー」として扱ってくれる DeNA だったからこそ得られた経験が多く、実りのある 2 ヶ月間だったなと感じています。

働く場所としての DeNA に興味がある方はもちろん、学生時代に長期就業の体験をしてみたい方や、自分の強み・課題・特性を知りたい方は、ぜひインターンに参加してみてください。

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。