【後編】HRBrainの長期インターンシップでの挑戦と実績〜チャレンジできる環境はここにある〜

こんにちは、2022年12月より長期インターン生として入社しているフロントエンドエンジニアの安井です。今回はHRBrainの長期インターンシップで私が経験した内容と、そこで得た成長について紹介したいと思います。インターンシップの概要について紹介した前編の記事は以下のリンクから御覧ください。

times.hrbrain.co.jp

今回は私が取り組んだ実績とそこで得られた成長について「開発」と「アウトプット」の2つの側面に着目して紹介します。

開発編

ここでは、私が長期インターンシップ中に取り組んだタスクの中から特に印象的だったものを紹介します。実際、8ヶ月間のインターンシップで65個のPRをmergeしており、全てのタスクで多くの学びがありました。

プロダクトの概要と技術スタックについて

私はEX Intelligence開発チームに配属され、プロダクトチームの一員として開発に取り組みました。EX Intelligenceは従業員体験(Employee Experience)を「期待値」と「実感値」で測定し、組織や従業員の状態を定量的に分析できるプロダクトです。

プロダクトで採用している技術スタックは以下のとおりです。

フロントエンド

  • TypeScript
  • React

フロントエンドの特徴として、TanStack QueryやReact18のモダンな技術を採用しながら高いユーザ体験を提供している事が挙げられます。

バックエンド

  • Go
  • PostgreSQL

バックエンドの特徴として、HRBrainではマイクロサービスのアーキテクチャを採用しており、サービス間はgRPC通信を行っています。

配属後のファーストタスク

私がチームに配属されて早速任されたタスクが既存UIの大幅な改修作業でした。具体的には、絞り込みのコンポーネントを新しいデザインにする必要があり、新規コンポーネントを作成してロジックをそのまま移行するというものです。

ドメイン知識の理解に苦戦した

HRという複雑なドメイン領域であることからも、その理解をするのにとても苦労をしました。プロダクトの価値や目的を理解せずにコードを書いていては、自分の機能改修がどのような改善を生むのかがわかりません。そのため、まずはドメインの理解に力を入れて、その上でコードの理解をするようにしました。

他の人が書いたコードの理解が難しい

私自身HRBrainが初めてのインターン機会だったため、他人が書いたコードを改修するという経験が過去にありませんでした。自分が書いていないからこそ、一つのコードの改修で意図しない影響範囲へのバグを生む可能性があります。チーム開発する上での難しさを感じた一方で、自分のコードを他人が見ても理解できるようにと可読性に対する意識がより一層強まりました。

サービス同士の関係理解に苦戦

HRBrainは複数のサービスを持っており、相互に連携するマイクロサービスの形式になっています。つまり、私の所属するEXチームで開発する上でも他サービスへの理解は必須であり、サービス同士の関係性について把握しておく必要があります。プロダクトのドメイン理解と並行して各サービス間の役割と関連性を理解する必要があるのはマイクロサービスを採用している弊社ならではの悩みかなと思いました。

感想

元々Reactの開発に力を入れていたこともあり、UI改善におけるコードの実装に関しては大きな苦労はありませんでした。しかし新しいチームに配属され、そのプロダクトを理解することやコードを理解する難しさを非常に痛感しました。

ライブラリ移行

入社して数ヶ月が経ち、開発にも慣れてきたところでプロダクトの採用しているライブラリに物足りなさを感じることがありました。そんなことを先輩エンジニアと話していると、「じゃあ、実際に移行しちゃおう」という事になり、ライブラリ調査から移行まで全て任してもらうことになりました。

OpenAPI GeneratorからOrvalへ

私の担当しているプロダクトではスキーマ駆動で開発をしており、そのコード自動生成にOpenAPI Generatorというライブラリを使用していました。しかし、このライブラリは「無駄な出力ファイルが多い」「実行速度が遅い」などの欠点があったため、その移行先としてOrvalというライブラリを提案しました。実際に移行した話を2023年春のJavaScript祭りで登壇した際に話しているのでぜひ御覧ください!

speakerdeck.com

品質劣化が起きないように徹底的にチェックをした

ライブラリを移行する上でいちばん重要なのは品質劣化が起きないことだと思います。どれだけ開発体験が上がっても既存のプロダクトにバグが発生しては大変です。そこで私は今回のライブラリ移行に関する影響範囲を全てリストアップして、チェックするようにしました。

すると影響範囲は52ファイルにあることがわかり、その全ての仕様を改めて整理して品質劣化がないことを確認してリリースしました。ライブラリ移行の際はそのメリットばかりに気を取られがちですが、既存の価値を損なわない意識を徹底する重要さを身をもって体感しました。

感想

今回のライブラリ移行は先輩エンジニアとの些細な会話からスタートしました。「Orvalってライブラリがプロダクトに導入できそうですよね〜」という何気ない技術の共有から実装に発展したことからも、普段のキャッチアップやそれを共有する習慣は大切だなと感じました。またライブラリ移行のメリットや改善点を開発者だけで完結させずに、しっかりとチームメンバーやPdMといった方にも伝えることが円滑にライブラリ移行をする上で重要だと実感しました。

認証フローの改善

最後に私が担当したタスクで最も工数の大きかったものを紹介します。概要としては今まで煩雑な操作を必要としていた初回ログインのフローを改善し、より簡潔にHRBrainのサービスを使用できるようにするものです。このタスクにおいて私は仕様の整理・APIの実装・UIの実装を全て一人で任してもらいました。

ビジネスサイドと仕様を整理する難しさ

このタスクで最も難しかったことはビジネスサイドとのコミュニケーションです。ユーザに最も近い存在はCS(カスタマーサクセス)であり、そのニーズを開発側より正確に把握しています。そのため、今回のようなユーザにダイレクトに影響のある改善はCSとの連携が必須になります。

私が特に意識したことは、細かい認識をすり合わせるコミュニケーションです。

そのために、「課題の整理」「対応方針」「メリット・デメリット」を整理して伝えるように意識しました。特に前提が双方で齟齬がないかは注意して会話する必要があり、少しでも違和感を感じたらすぐに質問することが重要だと思います。

開発力は技術力とコミュニケーション力の掛け算で成長すると考えています。どれだけコードで実装する力があっても仕様のコミュニケーションで手戻りがあればリリーススピードは高く保てません。普段のビジネスサイドとのコミュニケーションから丁寧に前提を揃え、意味のある議論ができるようにと心がけています。

バックエンド領域への挑戦

普段はフロントエンドを主軸に開発していることもあり、今回が初めての大規模バックエンド開発となりました。コード理解に苦労したことはもちろんのこと、知らない知識が多くあったため業務外でのキャッチアップにも力を入れました。元々、バックエンドタスクに挑戦したい旨を伝えていたこともあり、非常に貴重な経験をすることができました。

実際にこのタスクを取り組んだ前後では、APIの設計をする際でもバックエンド・フロントエンド双方の視点で考えることができるようになったため、フロントエンド領域でキャリアを積んでいく上でもバックエンドの理解は必要だと痛感しました。

感想

このタスクでは大規模な機能改善を仕様設計から実装まで一人で任してもらいました。実装力の足りなさや、コミュニケーション齟齬によるリリース予定の遅延など様々な反省点はあった一方で、全て任せてもらえるからこそ責任感が生まれ積極的に実装ができたと思います。過去に取り組んだどんなタスクよりも大きな成長を実感することができました。

アウトプット編

次に私がHRBrainに入社してから行ったアウトプットについて紹介します。入社してすぐの頃(2022年12月)はブログ文化もそこまで浸透しておらず、イベントの開催も多くはありませんでした。そんな中で少しずつアウトプットの文化が定着していき、会社が盛り上がっていく過程で自分が貢献できたと思うアクションは以下のとおりです。

毎月の技術ブログ投稿と若手の巻き込み

始まりはAdvent Calendar 2022

私が初めて記事を書いたきっかけは、Advent Calendar 2022でした。Advent Calendarは社内エンジニア全員が記事を執筆し、毎日投稿されていくような大規模イベントです。HRBrainは1700いいねを獲得し、全体順位3位と大きな盛り上がりがありました。私も実際に記事をくことで今までふんわり理解していたことが整理されて理解が深まる体験をしました。

Advent Calendarが終わると社内のブログ文化は下火になり、あまり記事を公開する人が少なくなりました。しかし、せっかく盛り上がったブログ文化がこのまま終わってしまうのはもったいないと思い、私は毎月黙々と記事の投稿を続けました。

トレンド1位とブログ文化の浸透

毎月ブログを投稿する中でトレンド入りするような記事も増えてきました。当然自分の記事が評価されていくことも嬉しかったですが、何よりも自分に続いて記事を書いてくれる仲間が増えたことが一番継続してよかったと思えたことでした。Advent Calendarから一度は下火になっていたブログ文化が再熱して、改めてHRBrainのアウトプット文化が定着し始めた感覚を得ました。

全社エンジニアに声をかけ、Qiita Engineer Festaに参加

ブログ文化が定着し始めた中でもっと会社を盛り上げたいと思い、全社エンジニアに声をかけてQiita Engineer Festaに参加することを決めました。Qiita Engineer FestaにOrganization対抗でいいね数を競い合う企画があったので、HRBrainで1位を取りに行くべく声をかけ、レビューや投稿日時の指定、広報拡散など含めて先輩の力も借りながら一人で運営しました。

その結果、100以上の団体が参加した中全体順位6位で完走する事ができました!

当然優勝できなかったことは悔しかったですが、多くの先輩方が協力してくれたことや同期が楽しかったと言ってくれたことは何より嬉しかったです。自分自身、この規模で会社を巻き込んだプロジェクトを運営することはなかったので、インターン生でありながらも非常に大きな経験になったと思います。

社内勉強会の主催

社外に向けてはブログ文化を盛り上げアウトプットしていましたが、社内でも勉強会を主催して若手エンジニアのモチベーションを上げる取り組みをしました。社内勉強会の目的は23卒と24卒エンジニアの相互交流と相互学習によるコミュニケーションの活性化とモチベーション向上です。より詳細な内容は以下のブログにて書いていますのでぜひご覧ください!

qiita.com

毎週1時間SQLの問題を解く

勉強会ではSQL CONTESTというサイトを使ってSQLの問題を解きつつ、解法を議論する形で進めていました。SQLを題材に選択した理由は、全エンジニアが必要とする知識で関心が持てるからです。先程述べたように、社内勉強会の目的は若手のモチベーション向上です。そのため、全員が当事者意識を持って取り組める題材を選択する必要がありました。

主催してみての感想

勉強会を主催したことの一番のメリットは、同期のコミュニケーション機会が増え、積極性が増したことです。例えば他のインターン生が更に勉強会を主催したり、積極的に先輩と1on1を依頼したりとアクションが活発になったことを体感しました。また、自分自身も他のインターン生や先輩からSQLについて学べる機会があったのは貴重でしたし、若手の視座を上げる意味でも大きな成果があったと感じています。

LTイベントでの登壇

HRBrainでは毎月HRBrain Fly Highという技術イベントを主催しています。私自身このイベントに2回登壇しており、非常に楽しい機会でした。このような若手が積極的にアウトプットできる環境が整っていることもインターンシップで参加するメリットだと思います。今回は私が今年登壇した社外LTイベントとHRBrain Fly Highでの内容を紹介します。

春のJavaScript祭りでのLT登壇

実務で実績を積み、記事を書いて、LT登壇するサイクルを確立

私は2023年春のJavaScript祭りでLT登壇させていただきました。このときのテーマは「OpenAPIコード生成ライブラリに『Orval』を採用した理由」で、実際にHRBrainで取り組んだ実務の内容になります。

このようにLTで登壇する機会が増えたことから一つの学習サイクルが確立されました。まずは、実務で実績を積み成果を生みます。そして、この過程で得た知見や経験を記事に起こして思考を整理します。最後にLTで登壇してより多くの人に向けて発信するというサイクルです。

zenn.dev

javascript-fes.doorkeeper.jp

若手の成長戦略についてLT

このようなアウトプットを繰り返していたこともあり、 若手の成長戦略についてのLTを依頼されました。ここでは「アウトプットが与える影響〜価値を最大化するための学習サイクル〜」というテーマでLTをさせていただきました。

speakerdeck.com

hrbrain.connpass.com

ここでのLTは自分がHRBrainで学んだ経験や身についた学習サイクルの集大成のような内容であり、アウトプットをいかに周りを巻き込みつつ行っていくかを主張しています。

まとめ

以上私がHRBrainの長期インターンシップとして入社して8ヶ月間の成果と成長について紹介しました。8ヶ月という短い期間でありながら、様々な経験ができエンジニアとしての土台が築けたと思っています。また、自分自身が継続してきたアウトプットが周りの社員に影響を与え、Qiita Engineer Festaという機会で大きな成果を残せたことにも達成感を感じています。

成長は一定環境に依存していると思います。自分のやりたいことを応援してくれる環境には本当に感謝をしており、様々なアウトプット機会に恵まれていたことも自分が成長できた要因だと思います。一方で全てが自分が期待するどおりの環境ばかりではありません。私が入社した初めの頃はブログ文化はそこまで活発ではありませんでした。もし期待する環境で無いならば変えていけばいいだけだと思います。スタートアップでインターンをするということはそれだけの可能性があり面白さだと強く実感しました。

25卒向けにも長期インターンの募集しています!興味のある方は↓のリンクから応募してみてください!

www.wantedly.com