3社目: OMO事業会社
## 概要
- 飲食店でスマートフォンから注文できるモバイルオーダーサービス、およびそのプラットフォームの開発
- 2019年4月にバックエンドエンジニアとして参画
- 2020年1月からプロダクト開発チームの Tech Lead として、プラットフォームチームとの横断的な課題解決やエンジニア採用にも参加
## 担当業務(入社後〜ローンチまで:2019/04 〜 2019/07)
- 入社時は設計が完了し、実装・単体テストフェーズ
- 要件・仕様のキャッチアップ後、機能開発および自動テストを担当
## 担当業務(ローンチ後:2019/07 〜 )
- プロダクト開発チームにて、バックエンドを主軸になんでも屋
- フロントエンドはそれまで未経験ながら、Vue.js, React をキャッチアップして改修タスクは担当
- 人員拡大フェーズであったため、オンボーディング資料の整備やモブ / ペアプロの開催、採用面接の参加など
## 詳細
### 課題 (1)
継続開発のための技術的負債解消
- Fat Controller かつトランザクションスクリプトによる実装が多かった
- 可変関数などによる黒魔術的な実装が存在していた
- 設計手法や原則、アーキテクチャに明るい開発者が少なかった
### 施策
- 可変関数などによる黒魔術的な処理をはじめとした可読性の悪いコードをリファクタリング
- 単体自動テストを追加し、カバレッジを計測、掲示した(PHP Unit, S3)
- 開発ガイドラインの策定、成果物の定義などを行った
- 良いコード・目指すべきコードの認識を合わせるために社内勉強会を開催
### 成果
- テストカバレッジは C1 で 70% を目指そう、といった共通の指標で会話ができるようになった
- 新規開発機能などは Layered Architecture などをベースに実現されるようになった
- PRでの議論も開発者の好みなどではなく設計原則などを元にしたものに変化した
- 社内勉強会は輪読会として1年以上継続している ( https://note.com/scg_tech/n/n0d1ddf57b529 )
### 課題 (2)
開発組織としてスケールする仕組み化ができていなかった
- ドキュメントが整備されておらず、エンジニアが増えても戦力化に時間がかかる
- 過去の設計経緯や意思決定理由がわからず、調査や改修の初期コストが高い
### 施策
- オンボーディング資料として全体俯瞰図や仕様書・UMLを整備して、現状を把握できるようにした
- Design Docや調査報告書の雛形を作成して作業フローの統一を図った
- 意思決定を ADR で残すべく、プレゼンを行った( https://szk416.hatenablog.com/entry/20210516/1621150003 )
### 成果
- それまでの新メンバーは習熟度を考慮して任意のタイミングで実作業に参加していたが、資料やフローの整備後は 1sprint(2week) のオンボーディングを経て、2sprint目から実作業に参加する流れが定着。作業分担や計画が立てやすくなった
- ドキュメントの雛形があることで、チケットの Acceptance Criteria や Definition of Done が自動的に定まることが多くなり、ベロシティが安定した
- 自分の所属するプロダクトチームだけでなく、プラットフォームチームでも ADR が採用されるようになった