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

開発生産性運用上の課題と 上流工程まで視野に入れた改善の取り組み

coconala_engineer
March 25, 2024
390

開発生産性運用上の課題と 上流工程まで視野に入れた改善の取り組み

開発生産性改善の取り組みについて紹介します。
特に既存のツールなどでは下流工程の生産性しか計測できず、上流工程の生産性はこれまで不可侵な領域でありましたが、そこに対してどのように取り組んでいるのかについて紹介させていただきます。

coconala_engineer

March 25, 2024
Tweet

More Decks by coconala_engineer

Transcript

  1. Copyright coconala Inc. All Rights Reserved. 自己紹介 2 村上 正敏

    (むーさん) 株式会社ココナラ 執行役員 VP of Engineering バックエンドエンジニアとして、Web系ス タートアップやフリーランスを複数経験し た後、2019年にココナラに参画 現在は、約75名のエンジニア組織を管轄 し、技術面〜組織面まで開発全般の方針策 定や課題解決を担当 趣味はロードバイクとバイク
  2. Copyright coconala Inc. All Rights Reserved. プロダクト開発体制 8 PdM部署 デザイナー部署

    エンジニア部署 事業A 事業B マトリクス型組織(主は職能軸) プロジェクトチーム
  3. Copyright coconala Inc. All Rights Reserved. フロー効率?リソース効率? 9 フロー効率 (リードタイムの短さ)

    リソース効率 (稼働率の高さ) High Low Low High リソース効率を高めつつ、フローの無駄を改善中
  4. Copyright coconala Inc. All Rights Reserved. リリースの頻度 10 リリースの分類 リリースの頻度

    障害、軽微な修正等 即日 問い合わせ対応 or 機能小改善 (1人でこなせるレベル) 数日 単一機能に関する機能追加 数週間 複数機能にまたがる機能追加 数ヶ月 即日レベルのものから数ヶ月レベルのものまで多様
  5. Copyright coconala Inc. All Rights Reserved. リリースの粒度 11 リリースを小さくしたいが状況によっては限界がある 機能が未完結になってしまうケース

    (整合性が崩れる) 非機能要件が後回しされてしまうケース (最悪本番で事故る) サービス 出品画面 サービス 詳細画面 サービス 検索画面 例)出品時の入力項目を追加したい ・・・ • 複数画面(機能)に影響がある状況 • 一部画面だけを対応すると、機能が中途 半端でUI/UX的によくない • ユーザーも混乱するため、細かく分けて 段階的リリースするのは難しい 影響 影響 • セキュリティ面 ◦ 予期せぬ情報漏洩等が発生しないか • パフォーマンス面 ◦ 負荷が増加し、全体的にレスポンス タイムが悪化しないか • インフラコスト面 ◦ 想定以上のコストが消化されないか • 他にも以下などの考慮が漏れがち ◦ SEO影響面 ◦ 業務生産性面 ◦ KPI集計・分析面 ◦ 会計影響面   等
  6. Copyright coconala Inc. All Rights Reserved. そもそもなぜ開発生産性が重要か 13 開発生産性を高めれば、同人数でも多くの価値を提供できる(RoI高) 生産性が高い

    開発組織 生産性が低い 開発組織 リリース リリース リリース リリース リリース リリース リリース リリース リリース リリース $ $ $ $ $ 価値の大きさ 提供頻度 開発生産性の高さ ※リリースすると価値につながる前提において
  7. Copyright coconala Inc. All Rights Reserved. 開発生産性をどのように計測するのがいいか 14 巷の開発生産性指標/ツールを使って可視化している Four

    Keys SPACE 従業員満足度と幸福 パフォーマンス アクティビティ コミュニケーションと コラボレーション 効率性とフロー デプロイ頻度 リードタイム MTTR 変更障害率 例) Four KeysはFindy Team+ で可視化 参考画像 例) Grafanaでさまざまな アクティビティを可視化
  8. Copyright coconala Inc. All Rights Reserved. 現状の開発生産性指標の課題感 16 Githubが情報源のため、そこにない情報は可視化できない Githubの情報しか

    考慮できない ソースコードやチケットなどはOK。 でもドキュメント作成やMTGなどは??? 情報源 ダッシュボード化
  9. Copyright coconala Inc. All Rights Reserved. 開発生産性はエンジニアだけが意識するものなのか? 17 巷の開発生産性スコープ 体感値の開発生産性のスコープ

    (開発着手してからユーザーに機能提供するまでのリードタイム) 開発生産性に企画・設計工程が含まれていないと認識がずれる 企画 設計 実装 QA/リリース        大きい規模になるほど企画・設計工程の工数が無視できなくなる        実際、企画・設計工程起因によるリリース遅延の影響が大きかった 体感値との差分 ポイント
  10. Copyright coconala Inc. All Rights Reserved. 具体事例(上流工程起因の開発生産性低下の一例) 18 例)仕様FIXしきらず、開発後半で仕様変更による実装手戻りが発生 企画

    設計 実装 QA/リリース 企画 設計 実装 QA/リリース 手戻り 手戻り 変更発生 ・・・ 理想 現実 例)動作するものを見たら イメージと違ってた    根本原因は上流工程だが、下流工程だけ見てると実装遅延と誤解することがある ポイント
  11. Copyright coconala Inc. All Rights Reserved. 開発全工程をモニタリング 21 可視化したい開発生産性のスコープ (開発着手してからユーザーに機能提供するまでのリードタイム)

    実装・QAだけでなく、企画・設計まで含めて可視化する必要がある 企画 設計 実装 QA/リリース 経営サイドと接続する際もこのスコープで会話すると認識がずれにくい        人件費は開発全工程でかかるため、開発のRoIを最大化したい経営層と視点が一致する ポイント
  12. Copyright coconala Inc. All Rights Reserved. 開発生産性可視化の運用イメージ(現在進行系で運用を構築中) 22 計画と実績を計測し、開発プロセスの問題点を浮き彫りにしていく 企画

    設計 実装 QA/リリース 企画(計画) ◯人日 企画(実績)◯人日 設計(計画) ◯人日 実装(計画) ◯人日 実装(実績) ◯人日 QA/リリース(計画) QA/リリース(実績) 設計(実績) ◯人日 計画とずれた部分 →タスクレベルで記録し、その差分については原因分析(事後)もセットで実施 例)他業務により着手が遅れた 例)調整の段取りが悪くリードタイムが長引いた 例)仕様考慮漏れが多く追加検討が増えた 例)企画の追加分設計のやり直しが発生した 例)非機能要件の考慮が不足していて追加検討した 例)設計変更の影響を受けて実装を作り直した 例)QA中に不具合がでてバグを修正した 例)設計が固まっておらず テストケース作成着手が遅れた 例)QA時不具合のや り直しが多かった
  13. Copyright coconala Inc. All Rights Reserved. 生産性向上の取り組みが実際に組織にどのようなインパクトを与えているか 24 やり始めたばかりなので定量的な効果はこれから •

    上流工程のどのプロセスがボトルネックなのか可視化できるようになる • エンジニア以外の人たちが開発生産性をモニタリングし改善するようになる 定性的に見え始めている効果 • タスクベースのFACTがあるため、関係者間での認識のずれが起きにくい • 記録が都度蓄積されており、この情報自体がプロジェクト運用ノウハウになる
  14. Copyright coconala Inc. All Rights Reserved. Grafana等で ダッシュボード化 開発版バリューストリームマッピング(VSM)*の可視化と定量化 26

    * バリューストリームマッピング:リーンソフトウェア開発の22の思考ツール 待ち時間の可視化によるリードタイム長期化箇所の特定と対策検討 企画 設計 実装 QA/リリース プロセスタイム (作業時間) リードタイム (提供時間) 5h 4h 8h 3h 10h 6h 10h 19h 11h 7h 8h 13h 15h 26h 10h 18h 20h 14h 18h 23h 25h 20h 32h 25h 18h 5h 5h 17h 21h 10h 13h 29h       原因と照らし合わせて「リードタイム短縮」に向けた対策を検討        対策例:順番見直し、作業自動化、システム面の見直し、組織面の見直し等 ポイント 原因 原因 原因 原因 改善 改善 改善 改善 差分は待ち時間 だったりする