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

カオナビのカイゼン・ストーリー 〜どうやってアジャイルな開発組織を作り上げたのか?〜

カオナビのカイゼン・ストーリー 〜どうやってアジャイルな開発組織を作り上げたのか?〜

XP祭り2020で発表した資料です。
https://confengine.com/conferences/xp2020

ローンチからマザーズへ上場し、HRTechをリードするまでになった7年は、カオナビにとってカイゼンの歴史でもありました。

外注開発から、内製化へ。
職能型組織から、マトリクス型組織へ。
レガシーな技術から、モダンな技術へ。
従来型の開発プロセスから、アジャイルな開発へ。

開発組織がない状態から、直面した様々な課題をどう乗り越えていったのか、そしてその先の未来を見据えた取り組みについて紹介しています。

株式会社カオナビ

February 10, 2021
Tweet

More Decks by 株式会社カオナビ

Other Decks in Business

Transcript

  1. 2020/09/19 © kaonavi Inc. 登壇者紹介 尾張部 佑亮
 グループマネージャー/EM 
 2

    松下 雅和 (@matsukaz)
 CTO
 小松 史明
 スクラムマスター/EM

  2. 2020/09/19 © kaonavi Inc. 2012年4月〜:カオナビのサービス開始 6 • 開発はーーーーー 外注100%
 


    • 顧客ごとにーーー 機能をカスタマイズ
 
 • 運用はーーーーー 現地作業あり

  3. 2020/09/19 © kaonavi Inc. 2015年:運用の安定化を目指し、リプレイスプロジェクト始動 8 • 売上重視の時代が続く
       ↓
 •

    技術負債が溜まる
       ↓
 • 運用の不安定さを無視できなくなる
       ↓
 • サービスのリプレイス開始
 

  4. 2020/09/19 16 • 深刻化したセクショナリズム • 仕様書を読み込むのに時間がかかる • 期日コミットすることがゴールになっている • 積み重ねた技術負債による鈍化

    2019/4時点でこの状態… © kaonavi Inc. アジャイルソフトウェア開発宣言の 真逆をいく開発をしていることがよく分かる 個人と対話よりも、プロセスやツールを 動くソフトウェアよりも、包括的なドキュメントを 顧客との協調よりも、契約交渉を 変化への対応よりも、計画に従うことを
  5. 2020/09/19 22 当時の様子 これ、〇〇までにお願いします ! はい! すみません、ここ仕様変えてい いですか? そこを変更すると色々と影響が …

    (仕様について質問したいけど、 話しかけ辛いな…) (実装について確認したいけ ど、話しかけ辛いな…) 順調ですか? はい…!(実はギリギリ…) 引き続きお願いします! (よし、順調なんだ) © kaonavi Inc.
  6. 2020/09/19 23 当時の様子 これ、〇〇までにお願いします ! はい! すみません、ここ仕様変えてい いですか? そこを変更すると色々と影響が …

    (仕様について質問したいけど、 話しかけ辛いな…) (実装について確認したいけ ど、話しかけ辛いな…) 順調ですか? はい…!(実はギリギリ…) 引き続きお願いします! (よし、順調なんだ) © kaonavi Inc. • 自分の担当を終わらせることで必死 • 納期に間にあわせることが目的 • 意思疎通不全 • 謎のコミュニケーションのハードル
  7. 2020/09/19 〇〇チーム 25 壁を取り払う 仕様・スケジュール 開発 エンジニアリング グループ プロダクトデザイン グループ

    〇〇チーム 〇〇チーム ミッションベース グループ リリースまでの全行程の責任 © kaonavi Inc.
  8. 2020/09/19 26 グループからチームへ 関係の質 行動の質 思考の質 結果の質 星取表
 ドラッカー風エクササイズ
 インセプションデッキ


    チーム名
 チーム飲み会・お茶会
 ふりかえり
 アジャイルコーチによるワークショップ
 デリゲーションポーカー
 © kaonavi Inc.
  9. 2020/09/19 27 その結果 グループ開発 ➡ チーム開発 何のために開発しているのか分からない ➡ Whyを理解した上で開発 やらされ仕事

    ➡ 自分たちで成し遂げる仕事 個人で成果を出す ➡ チームで成果を出す 自分の仕事が終わるかどうか ➡ チームとしての仕事が終わるかどうか 企画職と開発者のコミュニケーション不足 ➡ 疑問・相談は直接その場で速攻で 認識のすれ違い ➡ 同じ質で同じ情報量 生じた変化 © kaonavi Inc.
  10. 2020/09/19 なるほど…? (理解はできるけど腹落ちで きない感じ) 44 型にハマることで学ぶ STEP2 スクラムを理解 スクラムはこういう設計になっていて、 提供されるイベントやロールや成果物には

    こういう背景や狙いがあるんだよ だから、こういう風に実践してみよう! スクラムマスター
 PO・開発チーム
 © kaonavi Inc. スクラム自体の理解は深まったかも しかし、スクラムを通じての 学習と変化が進んでいなかった
  11. 2020/09/19 〇〇だからですよ 1スプリントだけ試してみ ませんか? スプリントバックログ作成はタスクまで 分解してみるといいですよ スプリントバックログが いつも残っちゃう 当たり前になってる… 46

    型にハマることで学ぶ STEP3 スクラムの実践と学習 どうして? 試してみたら変化が生まれた! そうか、スプリントプランニングってこうい う風にやると効果的なんだ。 PO・開発チーム
 スクラムマスター
 © kaonavi Inc.
  12. 2020/09/19 〇〇だからですよ 1スプリントだけ試してみ て! スプリントバックログ作成はタスクまで 分解してみるといいですよ スプリントをDoneにで きない… 47 型にハマることで学ぶ

    STEP3 スクラムの実践と学習 どうして? 試してみたら変化が生まれた! そうか、プランニングってこういう風にやる と効果的なんだ。 PO・開発チーム
 スクラムマスター
 チームの関心事と紐づけて スクラムの実践と学習を行うスタイル その結果、徐々に変化が生まれた © kaonavi Inc.
  13. 2020/09/19 48 その結果 プロジェクトの終盤まで不確実性が残る ➡ アジャイルな見積もりと計画の実践 スケジュールもスコープも変えられない …? ➡ 自分たちでプロジェクトのハンドルを握る

    QA・デプロイは他のグループがするもの ➡ チームで完結できるようコラボレーション 手を動かすまで開発の難易度は分からない ➡ プランニング終了時点で把握、対策を打つ プロジェクトが終わってからのふりかえり ➡ 毎スプリント小さなカイゼンを試す 全て開発し終わるまでリリースできない ➡ α,βリリースでフィードバックループを回す 生じた変化 © kaonavi Inc.
  14. 2020/09/19 54 当時の開発課題のイメージ 足回りの悪い 技術スタック 属人化 秘伝の スパゲッティコード 触ったら どこかで不具合が起きる

    技術的課題による 諦めや計画の変更が多発 これでは スピードもアジリティも出せない © kaonavi Inc.
  15. 2020/09/19 技術課題の一覧可視化 & テックリードのサポート 57 土壌作り 技術スタックは 現場メンバーで決定して OK 週に2時間の

    技術品質カイゼン推奨 ナレッジ共有の場としての エンジニア勉強会を定期開催 © kaonavi Inc.
  16. 2020/09/19 58 結果 再利用性 可読性 保守性 変更容易性の 向上 属人性の 解消

    関心毎の 削減 小回りの効く 開発 実装以外にかける 時間の削減 アジリティ & スピード © kaonavi Inc.
  17. 2020/09/19 62 After チーム開発 Whyを理解した上で開発 自分たちで成し遂げる仕事 チームで成果を出す チームとしての仕事が終わるかどうか 疑問・相談は直接その場で速攻で アジャイルな見積もりと計画の実践

    チームでプロジェクトのハンドルを握る リリースまでチームで完結 スクラムによる現状把握で不確実性を排除 毎スプリント小さなカイゼンを試す α,βリリースでフィードバックループを回す 全社スプリントレビュー アジリティとスピードを支える開発技術 © kaonavi Inc.
  18. 2020/09/19 © kaonavi Inc. アジャイルテストの導入 70 参加者 • すべてのメンバー •

    テスターが特別な専門知識を提供 • テストは、要件/設計/実装などすべての開発フェーズに織り込まれる • テストは、開発ライフサイクルを通じて同時に実施 • テスターから開発チームへの修正フィードバックが、開発ライフサイクルの中で 行われる → より良い設計と実装へ 特徴 アジャイルソフトウェア開発の原則に従うソフトウェアテスト方法
  19. 2020/09/19 © kaonavi Inc. アジャイルテストのスプリント内の流れ 71 1スプリント デイリースクラム バックログリファインメント スプリント

    レビュー レトロ スペクティブ リリース(テスト)計画更新 リグレッションテスト 受け入れ条件 チェック テストケース 設計&作成 テスト実施 テストレベル 定義 テスト観点 テスト見積り レポート プランニング1 プランニング2 テストケース レビュー 開発 スクラム イベント アジャイル テスト
  20. 2020/09/19 © kaonavi Inc. アジャイルテスト導入後のふりかえり 72 Problem Keep リグレッションテスト による安心感がある

    バグを早期発見 テスト設計時点で 仕様や例外の考慮漏れを指摘 リグレッションテストが 回るまで時間がかかる テストデータの 準備が大変 QAチームと どう連携しよう…
  21. 2020/09/19 • 目的 ◦ 権限と責任の委譲 ◦ 責任者を明確化 © kaonavi Inc.

    新たなロールを設置 76 ロール 役割 エンジニアリングマネージャー 文化醸成、採用援助、エンジニアメンター サービスリード サービスの受け入れジャッジ、技術育成、人 材採用 テックリード フロントエンド 技術ジャッジ、技術育成、人材採用 バックエンド(API、機能実装) サーバサイド(インフラ寄り)
  22. 2020/09/19 © kaonavi Inc. 組織力のさらなる強化 77 2020.07.01 CDO(最高デザイン責任者)に玉木穣太就任 2020.07.15 技術顧問に森正弥氏就任

    2020.09.01 CTO(最高技術責任者)に松下雅和就任 • 「デザイン」の力を経営や事業に組み込む ◦ コーポレートブランディング ◦ コミュニケーションデザイン ◦ デザインガイドライン • 元楽天技術研究所代表 • 組織戦略、研究開発 (AI, ビッグデータ)相談 • プロダクトの開発体制強化
  23. 2020/09/19 © kaonavi Inc. モノリシックなシステムによる弊害 80 開発スピードが 上がらない 生産性が スケールしない

    リリースにかかる 工数が大きい 障害発生時の 影響度が大きい 複雑度が高いため、 影響範囲の把握が困難 機能開発が相互に影響し合う 可能性があり、同時開発が困難 1つの障害がシステム全体の 停止につながる可能性がある リリース対象が大きいため、 影響調査やQAの工数が大きくなる
  24. 2020/09/19 © kaonavi Inc. マイクロサービス化の狙い 84 適切な技術と 体制で開発スピードを 上げたい 開発人数に応じて

    生産性を上げたい 細かく安全に リリースしたい 障害に対する 影響を減らしたい
  25. 2020/09/19 © kaonavi Inc. マイクロサービス化プロジェクト発足にいたるまで 85 ボトムアップ でチームが発足 • 個別最適になってしまいそう

    • 開発組織全体を巻き込むのが難しい • オーナーシップが発揮し辛い このままでは うまくいかないかも…
  26. 2020/09/19 © kaonavi Inc. マイクロサービス化プロジェクト発足にいたるまで 86 経営層の合意の元、トップダウン でプロジェクト化 • 全体最適の視点

    • 開発組織全体を巻き込む ◦ 第2言語としてGoを正式採用 ◦ DevOpsチームを目指す • オーナーシップをCTOが持つ 本格始動!