Upgrade to Pro — share decks privately, control downloads, hide ads and more …

エンジニアとしてプロダクトマネジメントに向き合った1年半

 エンジニアとしてプロダクトマネジメントに向き合った1年半

■ イベント
23卒&中途入社1年目エンジニアのリアル:経験とこれからの展望
https://connpass.com/event/340472/

■ 発表者
技術本部 Bill One Engineering Unit
阿左見 蓮

■ Bill One 開発エンジニア 採用情報
https://media.sansan-engineering.com/billone-engineer

SansanTech

January 26, 2025
Tweet

More Decks by SansanTech

Other Decks in Technology

Transcript

  1. 3 © Sansan, Inc. ⾃⼰紹介 • name: 阿左⾒ 蓮 •

    age: 24 • affiliation: ◦ BIll One Engineering Unit ▪ Core Business UM Group ◦ 23卒 • intern: フルコミ営業→エンジニア • job: フルスタック(?)なエンジニア
  2. 4 © Sansan, Inc. • Bill Oneについて • プロダクトマネジメントを始めた経緯 •

    失敗事例と学び • 何がよかったか • エンジニアとして成⻑したポイント • これからについて Agenda
  3. © Sansan, Inc. Bill Oneの成⻑ 出典: 2025年5月期通期 決算説明資料 ※ Monthly

    Recurring Revenue(月次固定収入) 8 リリース4年超でARRは93億円超、契約件数は3,310社
  4. © Sansan, Inc. 3L体制 チームで意思決定できる幅を広げ、開発スピードを加速させる取り組み 役割名 責務 ATL (アジャイルチームリード) •

    ⾃⼰組織化されたアジャイルチームの確⽴を推進 • 継続的なリーダーシップ / 計画 / 実⾏ / リスク低減 / 改 善 PdL (プロダクトリード) • 仕様や要件の整理 • ATL・PdM・デザイナーとの調整 ※ すべてのPdLはPdMがまとめる TL (テクニカルリード) • コード品質を担保 • チームの技術⼒向上 • ロジックが集中するバックエンドの相談役 ※これらは役職ではなくチーム内の分担としての役割 気軽にチャレンジして 伸ばしたいスキルにフォーカスできる環境づくり 副次的効果として 11
  5. © Sansan, Inc. 3L体制 チームで意思決定できる幅を広げ、開発スピードを加速させる取り組み 役割名 責務 ATL (アジャイルチームリード) •

    ⾃⼰組織化されたアジャイルチームの確⽴を推進 • 継続的なリーダーシップ / 計画 / 実⾏ / リスク低減 / 改 善 PdL (プロダクトリード) • 仕様や要件の整理 • ATL・PdM・デザイナーとの調整 ※ すべてのPdLはPdMがまとめる TL (テクニカルリード) • コード品質を担保 • チームの技術⼒向上 • ロジックが集中するバックエンドの相談役 ※これらは役職ではなくチーム内の分担としての役割 気軽にチャレンジして 伸ばしたいスキルにフォーカスできる環境づくり 副次的効果として 12
  6. 13 © Sansan, Inc. なぜプロダクトマネジメントを選んだのか 組織の状況 ⾃分の状況 学⽣時代から強かった プロダクト志向 チャレンジを推進する⾵⼟

    ⾃分の意思 プロダクトの意思 決定に携わりたい ビジネス視点も持 ちたい 前任者の希望 開発に専念したい
  7. 14 © Sansan, Inc. なぜプロダクトマネジメントを選んだのか 組織の状況 ⾃分の状況 学⽣時代から強かった プロダクト志向 チャレンジを推進する⾵⼟

    ⾃分の意思 プロダクトの意思 決定に携わりたい ビジネス視点も持 ちたい 前任者の希望 開発に専念したい チームのニーズと⾃分のwillが⼀致
  8. 16 © Sansan, Inc. • ユーザーによる編集を制限する機能 ◦ 全体制限→部分制限を可能にした • 編集制限のトリガーは別機能と密に紐づいていた

    • 対象はBill Oneの核となるエンティティの1つ • 事業判断によって開発が(急に)決まった ◦ 事業判断のため必達の納期が設定されていた ポストモーテム 〜プロジェクト概要〜
  9. 19 © Sansan, Inc. • 既存コードが複雑+機能間の密結合 ◦ 既存仕様や背景情報の資料不⾜ • 編集制限対象を管理しているテーブルの分割とコードの分割

    • データフローを同期→⾮同期への変更 • ⾮同期処理において ◦ タスクQueueの流量制限超過 ◦ 結果整合がうまく⾏かない ◦ 原因不明の神業連打の考慮不⾜ 原因分析
  10. 20 © Sansan, Inc. 左図はTypeScriptでサンプル • 対象エンティティが編集制 限状態を管理 • 全部制限する場合はこれで

    も問題なかった ※ Bill OneのバックエンドはKotlin テーブルとコードの粒度分割
  11. 21 © Sansan, Inc. 左図はTypeScriptでサンプル • 編集制限管理のクラスを導⼊ ◦ 状態管理の責務分割 •

    既存コードへの⾼い導⼊コスト ◦ 開発リソースの圧迫 ※ Bill OneのバックエンドはKotlin テーブルとコードの粒度分割
  12. 22 © Sansan, Inc. 左図はTypeScriptでサンプル • 制限状態管理のクラスを導⼊ ◦ 状態管理の責務分割👍 •

    既存コードへの⾼い導⼊コスト ◦ 開発リソースの圧迫👎 ※ Bill OneのバックエンドはKotlin テーブルとコードの粒度分割
  13. 27 © Sansan, Inc. • リクエスト数の増加に伴い頻繁にQueueが滞留 • 0.1秒未満の連打が時折起こっていた ◦ 状態不整合が多く起きた原因

    ◦ フロントエンドでは対策済み ◦ 原因不明 😡 • ポーリングによりDBのコネクション枯渇 • 複雑な既存コードにより上記の解消が困難 • 不可逆な変更のため、リビジョン変更でも対応が不能になった データフローの変更 〜 何が起きたか 〜
  14. 28 © Sansan, Inc. • リクエスト数の増加に伴い頻繁にQueueが滞留 • 0.1秒未満の連打が時折起こっていた ◦ 状態不整合が多く起きた原因

    ◦ フロントエンドでは対策済み ◦ 原因不明 😡 • ポーリングによりDBのコネクション枯渇 • 複雑な既存コードにより上記の解消が困難 • 不可逆な変更のため、リビジョン変更でも対応が不能になった データフローの変更 〜 何が起きたか 〜 解消に数ヶ⽉ 😭
  15. 29 © Sansan, Inc. • 分割可能なものは最初から分割して永続化 ◦ 後から分割のコストが低い • 機能間依存は極⼒避ける

    ◦ 障害時の規模が増⼤する • 背景資料や仕様ドキュメントの重要性 ◦ 複雑な仕様の理解や想定外の事態を避けられる 学んだこと
  16. 31 © Sansan, Inc. 良かったこと • 技術負債解消の重要性が事業として教訓となった ◦ この事象は直前の実装だけが原因ではない •

    仕様ドキュメントを残す⽂化に繋がった ◦ 属⼈性の排除ができるようになった ◦ 開発プロセス標準化に貢献 • フロントエンドまで波及してリファクタリングが⾏われた ◦ ドメイン境界の不整合が是正された • ステークホルダーも含めた振り返りの実施
  17. 33 © Sansan, Inc. 成⻑したポイント • 上流⼯程といえど技術⼒が重要 ◦ ⼤規模設計について重点的に勉強しました •

    副次的に発⽣する考慮事項の知識と経験 ◦ ex) ポーリングにおけるDBコネクション、神業連打etc.. • 精神⼒ ◦ 予想外の挙動がきても慌てなくなった
  18. 36 © Sansan, Inc. プロダクトオーナーやります • Bill Oneでも初めての取り組み • ⼀定期間PBI開発から離れてプロダクトマネジメントを主軸にします

    • グループにスクラムを導⼊する⼀貫 • 開発者の強みを活かした仕組み化を⾏いたい • ⼀⽅、いずれ開発業務に戻る予定