はじめに
初めまして!urturnです!
麻雀が好きなエンジニアです。
今回は株式会社ゆめみのバックエンドサマーインターンに参加してきたので、体験したことや学んだことを記します。
応募の経緯
形式ばった言い方をすると、将来の進む道について悩んでいたところで「あなたに合わせたバディをみつけます!」のキャッチフレーズが魅力的に見えました、という感じです。似たような志向を持つ人が今どうなっているのかが、自分の将来の参考になると考えました。インターンに参加し、それを踏まえて今後のことを考えていきたいと思いました。
フルリモートで受託開発を行っているという特徴的な環境も、応募した動機の一つです。働き方として色々経験したいという動機に最適でした。
コーディングテストを受験後、GoodとNextのフィードバックが丁寧に記述されたメールが届きました。特に、Nextに関しては「痛いところを突かれたな」と感じました。 その後の面接でも同様のフィードバックがあり、その点についてはこれから改善していきたいと思いました。
この選考フローを経て参加が確定しましたが、他社のインターンに4日間参加する予定があり、全日程ではなく6日間だけの参加となりました。(調整ありがとうございました!)
インターンのメンバー構成
インターン生はバックエンド3人、フロントエンド4人の計7人でした。それぞれに1,2人のバディがついており、これに加えて運営やメンターが存在していました。
Notionで各人の自己紹介ページが用意されており、皆つよつよだぁ、ついていけないかもと思いましたが、同時にこの環境で何ができるかワクワクしました。 チームはバックエンドとフロントエンドに分かれており、毎朝全体で情報共有を行い、夜にそれぞれのチームで振り返りを行うという流れでした。
インターンの実施内容
JobBoardという社内用求人アプリのバックエンドの開発に携わりました。使用言語はRustです。 1週目はゆめみさんから用意されたタスク、2週目はインターン生がプロダクトオーナーに提案した機能を開発するというスケジュールでした。 私は1週目の初日と2週目に参加しました。以下に各日で行ったことを記述します。
1週目
月曜日(初日)
キックオフやチームビルディング、開発するアプリの説明から課題発見の仕方まで盛りだくさんの1日でした。この初日に参加したおかげで、他のインターン生と仲良くなれ、2週目もスムーズに進められた気がします。この夜、新幹線に乗って石川から東京に移動しましたが、これはまた別の機会に話します。。。
2週目
月曜日(2日目)
まず、バックエンドのチームメンバーに頼んで、1週目に行ったこととコードの読み方、開発の進め方を教わりました。みんな、、、ありがとう。。。
どうやら、フロントエンドとバックエンド混合でいくつかチームが組成されており、このチーム単位で機能を提案していくとのことでした。自分は「工数・温度感チーム」で提案を進めていくことになりました。この日は提案を行う日となっており、どのような課題が存在し、どのような機能を提案するのかを新たに組成されたチームのメンバーと話し合いました。
プロダクトオーナーに対して提案を行った後、良い点と改善点について丁寧にフィードバックを受け、それを踏まえて開発を進めることになりました。特に、使う人が何を必要としているのかという視点を大切にして設計を進めました。
火曜日(3日目)
フィードバックを受けて改善した提案をプロダクトオーナーに再度相談しました。結果としては「良さそうだけど、UIに表示する情報量が多くなりそうだから工夫が必要そう」という旨の言葉をいただきました。おおよそのGoサインが出たので実装に取り掛かりました。API定義を書き始め、その後Rustのコードを書きました。「工数・温度感チーム」にはバックエンド担当が二人いたため、ペアプログラミングで開発を進めました。ここで初めてRustのコードを書きました。補完と型推論は神()
水曜日(4日目), 木曜日(5日目)
主に実装です。API仕様の修正だったり、DB定義の修正だったりdomain層の修正だったり、、、触れすぎると記述量が増え過ぎてしまうので省略します。。。
この時にタスク量の見積もりの甘さを痛感しました。既存のAPIの修正だったため、タスク量や実装量がそれほど多くない、多くなったとしても単純作業ですむと考えていたのが誤算でした。
提案がメインで実装が終わらなくても良いという点は救いでしたが、コードへのフィードバックをいただきたいという思いがあったため、どうにかDraftでPRを出し、「できたところまでレビューお願いします!」と依頼しました。木曜日の最後にお願いしたところ、次の日にはレビューが返ってきており、非常にありがたかったです。1000行くらいある変更を1日で見ていただけて感謝してもしきれないです。
金曜日(最終日)
成果発表と振り返りを行いました。ユーザー(ゆめみ社員)の方の率直な意見を伺うことができ、良いところは良い、悪いところは悪いとフィードバックいただけたのが印象的でした。
特徴的だったこと
勉強会がたくさん開催されていた
毎日のように勉強会が開催されており、自由に参加して良い形式でした。私は開発に夢中で参加できなかったのですが、興味深い内容が多くて良いなと思いました。
レスポンスが速い
とにかくレスポンスは速かった気がします。
メンターの方に「わかりません!助けて!」という旨のコメントを投げるとすぐにハドルに飛んできてくれたり、コメントの返信がきたり、リモートの文化が成立してる感覚がありました。
SlackのGPT
無難に便利でした。オープンに見える場で気軽に質問を投げられるのが良かったです。発生している問題に対してどこで詰まっているのか、それをどう解決できそうなのかが整理でき、解決の糸口を掴むことができました。
フィードバック文化
「これが良かった」、「ここが改善できそう」というフィードバックを、メンター→インターン生、インターン生→メンター、そしてインターン生同士で行う文化がありました。
良かった点が明示的に示されることで続けていくモチベに繋がり、環境がどんどん良くなっていくと感じました。
フルフレックス
参加必須のものさえ抑えれば、いつ働いても良い(深夜帯を除く)という形式でした。朝が弱く、生活習慣が崩壊しやすい私にとっては、何気に一番嬉しい制度だったかもしれません。
バディ
メンターの他にバディと呼ばれる方が用意されていました。
自分のバディは幅広い興味を持っているゆるい雰囲気の方(?)で、興味の赴くままに突き進んだ時の将来像のような印象を受けました。
社員の素直さ
良くも悪くも(?)素直な方達でした。エンジニアとして真っ直ぐであり、開発しているプロダクトについて疑問を感じた点を率直に投げかけていただきました。オープンな社風にオープンな社員という形で、特徴がとても表れていると感じました。
学んだこと
決定したことはメモで明示的に示す
当たり前ですが、明確な記録がないと元の情報を探す労力を使わせてしまったり、認識が異なってしまったりして時間が無駄になってしまいます。
ここを見ればわかる、というのが一つあるだけでも効率的に進められることを改めて認識しました。
なぜするのか、なぜしないのかを大事にする
理由というのは人を動かすために大事です。何をするのかを決定するとき、また決まったことを伝えるときに、理由を含めて伝えることで、他の人も納得しやすくなり、同じ方向を目指しやすくなります。また、理由があるとその理由に基づいて改善案を提案することも可能になるというメリットもあります。
決定したことをメモに残す際にも理由は参照できるようにすると良いと感じました。
細かい単位でのフィードバック
こちらは反省点も含んだ学びです。PRを大きくし過ぎてしまい、フィードバックを得るのが遅くなってしまいました。実装の方針だけでも相談し、それをもとに進められると効率的だった気がするので心がけていきたいです。
開発初期段階のペアプロ
期間中はハドルで画面共有を行いながら実装を進めていました。最初の方は片方が実装、片方がサポートする形で、実装に慣れてきたらレイヤーでタスクを分割してそれぞれ進めることにしていました。
ペアプロは認識を共有して進められる点がメリットですが、認識のずれがない場合は単純に実装のスピードは落ちてしまうだけなのが少し欠点だと感じました。そのため、認識がずれていかなそうな段階になったら分かれて作業するのが効率の良いペアプロだと思い、そのような方針で進めていました。
必要な情報は何かとその見せ方
UIの話になりますが、ユーザーが何を見たいのかを整理し、その情報をどの粒度で見たいのかを考えるのがとても大事だと感じました。
この分野の設計に関しても、もっと学んでいきたいです。
ゆめみのインターン参加を検討している人へ
おそらく、このブログを読んでいるということはゆめみのインターンへの応募を検討しているということでしょう。
開発の設計から改善までを行いたい、プロダクトを作る上で大事にすることを知りたい、ゆめみを知りたいという人に対しては参加をおすすめしたい気がします。
技術的に成長したい、が動機の場合は他の選択肢もあると思います。
一つ言えることは、どんなインターンも参加して損することはないので、迷っているなら応募していい気がします。
余談
インターン最終日の懇親会で出前を頼む機会があったのですが、、、
自分の住んでいるところだと出前できる店舗が合計で3店舗しかなかったです。
3店舗!!!
美味しいお寿司を頼みました。
〜完〜