medibaでの成長：新卒エンジニアから管理職へ

:::note info
この記事は、 [mediba Advent カレンダー2024](https://qiita.com/advent-calendar/2024/mediba) の22日目です。
:::

## はじめに
medibaでエンジニア組織マネージャーと複数プロダクトの開発責任者を担当している、@funada-akihiroです。新卒で入社して8年目になります。

今回は、私が新卒から管理職になるまでの6年間ついてエンジニアとしての成長を振り返り、皆さんに共有したいと思います。

技術力向上、QCDを意識した開発、チームリーダー、プロジェクトマネジメントなど様々な経験を通して得た学びが、後輩エンジニアや、これから管理職を目指す方の参考になれば幸いです。

## 目次
1. ジュニア初期（1年目）：初めてのサービス開発と技術力向上への挑戦
2. ジュニア成長期（2年目～3年目）：QCDを意識した開発と運用
3. 中堅エンジニア期（4年目～6年目）：チームリーダー、そしてプロジェクトマネジメントへ

## 1. ジュニア初期（1年目）：初めてのサービス開発と技術力向上への挑戦
### 主な業務内容
- [ポイントためる](https://www.mediba.jp/business/media/point)というサービスでバックエンドエンジニアとしてグロース開発/保守開発の業務を担当
    - フロントアプリケーション既存機能の改修開発や新規サービスの開発(PHP:Yii)
    - 管理画面アプリケーション既存機能の改修開発(Ruby:RoR)
    - UTコード実装

### 経験と学び
**新卒エンジニアとしての不安と技術力向上への取り組み**
3ヶ月間の新卒入社研修を終え初めて配属された部署では、「本当にやっていけるのだろうか？」「周りの先輩に迷惑をかけてしまうのではないか？」という期待と不安が入り混じった気持ちでいっぱいでした。

右も左もわからない状態でのスタート。先輩エンジニアの皆さんは、まるで魔法使いのように見えました。コードの書き方、開発の流れ、専門用語…何もかもが新鮮で、覚えることに必死でした。

初年度の目標は、何よりも技術力の向上でした。周りの優秀なエンジニアと自分を比較しては焦りを感じ、「置いていかれないように、早く一人前にならなければ」という強い思いを抱いていました。

少しでも技術力が向上するように、以下の知識習得を中心に取り組みました。

技術本の購入と学習：通勤時間や昼休みも技術学習をして、わからないことはネットで調べまくりました。
既存コードの読解理解：先輩方が書いたコードを読み解くことで、設計思想やコーディングのベストプラクティスを学びました。
社外勉強会への参加：積極的に社外勉強会に参加し、様々な企業のエンジニアと交流することで、視野を広げました。

**初めての成功体験**

これらの努力を重ねた結果、初めて自分一人で担当した改修機能をリリースすることができました！「自分の書いたコードが、実際にサービスで使われている！」その感動は、今でも忘れられません。

もちろん、道のりは平坦ではありませんでした。先輩からのコードレビューでは、たくさんの指摘を受け、何度も修正を繰り返しました。しかし、その度に自分の成長を実感でき、自信に繋がっていきました。

![スクリーンショット 2024-12-21 20.20.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2960827/08c16089-bd13-1f52-5d6a-dc1c51ab62be.png)

## ジュニア成長期（2年目～3年目）：QCDを意識した開発と運用
### 主な業務内容
- ジュニア初期(1年目)内容を引き続きと
    - 仕様書作成
    - クエリチューニング(MySQL)
    - ミドルウェアチューニング(Nginx)
    - システムリプレイス開発(PHP:Yii,Ruby:RoR → PHP:Laravel)
    - システム運用業務

### 経験と学び
**QCDを意識した開発**
一人で業務を進められるようになってからは、QCD（品質、コスト、納期）を意識するようになりました。

- 品質：品質の高いシステムを作るために、テスト駆動開発（TDD）を取り入れ、単体テストでコードの品質を徹底的にチェックするようにしました。目標は、カバレッジ100%！完璧なシステムを目指し、バグをゼロにすることにこだわりました。
- コスト：サーバー費用を削減するため、プログラムのパフォーマンスチューニングに力を入れ、無駄なコストを削減できるように努力しました。1円でも安く運用できるよう、様々な工夫を凝らしました。
- 納期：納期は絶対に守る！そのため、自分自身で1日前の納期を設定し、余裕を持って作業を進めるようにしました。どんなに困難な状況でも、必ずデットラインに間に合わせるという強い意志を持っていました。

チームやプロジェクトに貢献するため、自分のできることを少しずつ意識し始めた時期でもありました。

**エンジニアとして成長と挑戦**
技術面では、ミドルウェア領域・インフラ領域に興味を持つようになり、Nginx、Chef、Ansibleなどを学習しました。これらの技術を習得することで、サーバーのセットアップやパフォーマンスチューニングなどを業務で行えるようになり、できることが大きく広がりました。まるで、自分の武器が増えていくような感覚でした。

サービス理解も深まり、システム運用業務も担当することになりました。データベースから必要なデータを抽出したり、サービスのメンテナンスを行ったりしました。また、システム障害発生時には、アラートを受け、ログ調査、バグ改修、データ補正など、対応に追われることもありました。夜中に呼び出されることもありましたが、サービスを復旧させたときの達成感は格別でした。

エンジニアとしてやれることの幅が広がり、一番エンジニアとしてやりがいを感じていた時期でした。

**システムリプレイスの失敗**
エンジニアとして順調に成長していた矢先、足元が崩れるような落とし穴にハマることになりました。それは、1年間かけて開発を進めてきたシステムリプレイスの失敗です。

失敗の原因は、仕様書と実装の挙動の食い違いでした。総合試験で大量のバグが発生。結局、リリースを断念せざるを得ない状況に追い込まれました。

「あの時、もっと仕様書を細かく確認しておけば…」「事前にテストケースを充実させておけば…」「開発メンバーとの認識合わせを密にしておけば…」など、後悔の念が止まりませんでした。

この経験を通して、自分の視野の狭さを思い知らされました。
それまで、目の前のタスクをこなすことに精一杯で、プロジェクト全体のリスク管理やコミュニケーションがおろそかになっていたことに気づかされました。

![スクリーンショット 2024-12-21 20.21.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2960827/e21e551e-3d99-f120-cc0a-852cbe7165b4.png)


## 中堅エンジニア期（4年目～6年目）：チームリーダー、そしてプロジェクトマネジメントへ
### 主な業務内容
- ポイントためる
    - チームリーダー
    - ベンターコントロール
- 社内SaaSポイント付与基盤
    - 開発PM

### 経験と学び
**チームリーダーとして、システムリプレイスに再挑戦**
チームリーダーとして、あの苦い経験をバネに、システムリプレイスのリベンジに挑戦することになりました。

今回は、ビッグバンリリースを避けるために、サービス単位に切り分けた段階移行リリースを採用しました。また、要件定義と仕様書を仕切り直し、開発手法もウォーターフォール型からアジャイル型に切り替え、やり方からガラリと変えました。

さらに、キリの良い短いスパンで振り返り（KPT）を実施し、コミュニケーション量も増やしました。メンバー一人ひとりの意見を尊重し、チーム全体で課題解決に取り組むことで、以前よりもスムーズに開発を進めることができました。

これらの情報は、ジュニア初期から参加している社外勉強会で得た知識を活かしました。先駆者たちの経験を参考に、自己流にアレンジしながら、チームにとって最適な方法を模索しました。

少量の問題は発生したものの、チーム一丸となって課題を克服し、なんとか無事にシステムリプレイスをやり遂げることができました！

**プロジェクトマネジメントへの挑戦**

システムリプレイスの成功を機に、プロジェクトマネジメントの領域にも積極的に関わるようになりました。

複数チームのチームリーダーを経験し、メンバーの指導や育成、チームビルディングなど、マネジメントスキルを磨きました。メンバーの成長をサポートし、それぞれの能力を最大限に引き出すことにやりがいを感じていました。

また、社外ベンダーチームをコントロールする業務では、外部とのコミュニケーション、契約交渉、進捗管理など、プロジェクト全体を管理する能力を培いました。異なる文化や価値観を持つ人々との協働は、視野を広げ、自分自身の成長にも繋がりました。

さらに、社内SaaSポイント付与基盤の開発PMとして、要件定義から設計、開発、テスト、リリースまで、プロジェクト全体を統括する役割を担いました。ステークホルダーとの調整、リスク管理、品質管理など、プロジェクトマネジメントの知識を駆使し、プロジェクトを成功に導くことができました。

しかし、時には知識やスキルの兼ね合いで、自分自身が担当しなくてはならない案件などもありました。
プレイングマネージャーとしての道へ進みかけてみたものの、すべて一人でやるには限界があると感じ、メンバーの成長をもっと支援したいと考え、管理職に進む決断をしました。

![スクリーンショット 2024-12-21 20.21.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2960827/4fa3f8ad-53d8-7626-271b-2c870b9f4515.png)


## おわり
今回の記事を書くにあたり、これまで評価半期ごとに作成していた目標シートを見返してみました。当時の自分がどんなことに課題を感じ、どんなことに興味を持ち、どんなチャレンジをしてきたのか、改めて振り返ることができ、感慨深い気持ちになりました。

新卒入社から管理職になるまでの6年間は、技術力向上、QCDを意識した開発、チームリーダー、プロジェクトマネジメントなど、様々な経験を通して、エンジニアとして、そして一個人として大きく成長することができました。

振り返ってみると、失敗や挫折を経験し、悩み苦しんだこともありました。しかし、その度に周りの人に支えられ、励まされ、前向きに進んでくることができました。

今後は、エンジニア組織マネージャーとして、メンバーの成長を支援し、より良いプロダクトを開発できる組織作りに貢献していきたいと考えています。また、複数プロダクトの開発責任者として、各プロダクトの技術戦略を策定し、事業の成功に貢献していきたいと考えています。

現在medibaでは、一緒に働けるメンバーを募集しています。
ご興味ある方は、お気軽にお問合せください。
採用サイト：https://www.mediba.jp/recruit