Developer eXperience Day CTO/VPoE Conference 2021で登壇した際の発表資料です。 https://dxd2021.cto-a.org/developer-experience-day-2021
皆さんはDX向上のための4つの重要なポイントをご存知ですか? それぞれのポイントの説明とともに、カオナビがどのような取り組みをしてきたか、そしてDX向上を促進するエンジニア文化をどのように作り上げてきたかを説明しています。
© kaonavi Inc.Developer eXperience Day CTO/VPoE Conference 2021いまさら聞けないDXの4つのポイント〜DX向上を促進するカルチャーとは〜株式会社カオナビ CTO松下雅和2021/04/10
View Slide
© kaonavi Inc.自己紹介2● 松下 雅和 / @matsukaz● 株式会社カオナビ CTO(2020年2月入社、2020年9月就任)SIer2社 → サイバーエージェント → トランスリミット CTO● AWS, Node.js, Ruby, Python, PHP, Go● カメラ, 自転車(BD-1), テニス, 卓球, ボウリング● 二児の姉妹の父
© kaonavi Inc.3© kaonavi Inc.
© kaonavi Inc.4© kaonavi Inc.
© kaonavi Inc.© kaonavi Inc.カオナビで出来る戦略的人事5
© kaonavi Inc.DX6
© kaonavi Inc.Developer eXperience開発者体験7
© kaonavi Inc.この言葉を初めて聞いたのは?8
© kaonavi Inc.本題に入る前にちょっと調べてみた9
© kaonavi Inc.元々はAPIやSDKを利用する開発者に向けた概念10https://uxmag.com/articles/effective-developer-experiencehttps://www.infoq.com/news/2015/10/api-developer-experience■ [UX Magazine] Effective Developer Experience (DX)■ [InfoQ] What is API Developer Experience and Why It Matters
© kaonavi Inc.DX = Developer eXperience11API顧客システムUX = User eXperienceUIユーザ 開発者開発者開発者
© kaonavi Inc.プロダクトを利用する開発者とプロダクトを開発する開発者、両方を対象にした概念も12https://developerexperience.io/practices/good-developer-experience■ [DEVELOPEREXPERIENCE.IO] Good Developer ExperienceAPI顧客システム開発者開発者
© kaonavi Inc.CTO協会の定義は?13
© kaonavi Inc.14https://cto-a.github.io/dxcriteria/■ [DX Criteria] 「2つのDX」とデジタル経営のガイドライン開発者にとっての働きやすい環境と高速な開発を実現するための文化・組織・システムが実現されているかを意味する開発者体験(Developer eXperience)API顧客システム開発者開発者
© kaonavi Inc.15API顧客システム開発者開発者それぞれ概念が違う初期の概念 CTO協会DEVELOPEREXPERIENCE.IO
© kaonavi Inc.今日話すのはCTO協会が定義するDX(2つのDXのうちDeveloper eXperienceのみ)16API顧客システム開発者開発者
© kaonavi Inc.17いまさら聞けないDXの4つのポイント〜DX向上を促進するカルチャーとは〜
© kaonavi Inc.184つのポイント
© kaonavi Inc.fromDEVELOPEREXPERIENCE.IO19
© kaonavi Inc.DEVELOPEREXPERIENCE.IO?20
© kaonavi Inc.DEVELOPEREXPERIENCE.IO?21https://developerexperience.io/practices/good-developer-experience
© kaonavi Inc.素晴らしいDXを実現する4つの要素22アーキテクチャ ツールプロセスチームカルチャー
© kaonavi Inc.素晴らしいDXを実現する4つの要素23アーキテクチャ ツールプロセスチームカルチャープロダクトやチームに合った最適なアーキテクチャ(シンプル ↔ 複雑)● 優れたDXのアーキテクチャ○ 高可用性と耐障害性を実現○ リリースまでのリードタイムが短い○ システムの可視性が高い
© kaonavi Inc.素晴らしいDXを実現する4つの要素24アーキテクチャ ツールプロセスチームカルチャー可能な限りツールで自動化● テスト● ビルド&デプロイ● コーディングスタイルへの準拠● インフラの構築● セキュリティチェック
© kaonavi Inc.ツールチームカルチャー素晴らしいDXを実現する4つの要素25アーキテクチャプロセスプロセス化で手順が安定化し、精神的負担が軽減、チームに規律が生まれる● 開発● QC● デプロイ● フィードバック● オンボーディング
© kaonavi Inc.チームカルチャー素晴らしいDXを実現する4つの要素26アーキテクチャ ツールプロセスカルチャーは開発者にインストールされ、最も重要な判断軸となる優れたDXのチームカルチャー● チームや会社の存在意義を理解● チームや会社に対してオーナーシップと責任感を持つ● チームや会社で共通のゴールがある● 優しさと誠実さを持つ● 失敗を許容できる
© kaonavi Inc.27アーキテクチャ ツールプロセスいずれもDX向上には欠かせないチームカルチャー
© kaonavi Inc.28アーキテクチャ ツールプロセスDX向上の促進にはチームカルチャーが重要!チームカルチャー
© kaonavi Inc.29© kaonavi Inc.チームカルチャーを作り上げながらDX向上に取り組み中
© kaonavi Inc.30いまさら聞けないDXの4つのポイント〜DX向上を促進するカルチャーとは〜
© kaonavi Inc.31カオナビが取り組むDXの4つのポイント〜DX向上を促進するカルチャーを どのように醸成してきたか〜
© kaonavi Inc.カオナビのエンジニア組織の歴史32
© kaonavi Inc.カオナビの歴史33導入社数2000175015001250100075050025002013/3 2014/3 2015/3 2016/3 2017/3 2018/3 2019/3 2020/3178912938544452039840212000以上2021/3マザーズ上場
© kaonavi Inc.カオナビの歴史34導入社数2000175015001250100075050025002013/3 2014/3 2015/3 2016/3 2017/3 2018/3 2019/3 2020/3178912938544452039840212000以上2021/3黎明期サービスリプレース急速な組織化
© kaonavi Inc.カオナビの歴史35導入社数2000175015001250100075050025002013/3 2014/3 2015/3 2016/3 2017/3 2018/3 2019/3 2020/3178912938544452039840212000以上2021/3黎明期サービスリプレース急速な組織化SES中心の開発エンジニアが徐々に増加職能別組織へエンジニア人数エンジニアが急増チーム開発へ
© kaonavi Inc.36詳しくはXP祭り2020の資料でhttps://speakerdeck.com/kaonavi/kaonabifalsekaizensutori-douyatuteaziyairunakai-fa-zu-zhi-wozuo-rishang-getafalseka
© kaonavi Inc.急成長してきたカオナビが、どのようにDX向上を促進してきたか37
© kaonavi Inc.チームカルチャー38アーキテクチャ ツールプロセス
© kaonavi Inc.システムリプレース後のアーキテクチャ39● 開発効率を最優先にしたアーキテクチャフロントエンド バックエンド インフラ
© kaonavi Inc.● 最適なアーキテクチャも、対策せずに運用を続ければ最適ではなくなる○ 技術スタックの陳腐化○ 属人化○ スパゲッティコードシステムリプレース後のアーキテクチャ40開発スピードの低下組織が拡大してもスケールできない
© kaonavi Inc.攻めのカイゼン41● 最新技術への取り組みフロントエンド バックエンド インフラ
© kaonavi Inc.守りのカイゼン● PHP, Laravelの継続的なバージョンアップ● 着実なリファクタリング● Clean Architectureの導入● AWS Well-Architectedに沿う構成へアーキテクチャを見直しhttps://aws.amazon.com/jp/solutions/case-studies/kaonavi/● マイクロサービス化の推進
© kaonavi Inc.43アーキテクチャ ツールプロセスチームカルチャー
© kaonavi Inc.GitLabによる自動化44● 単体テスト、E2Eテスト● セキュリティチェック● コーディング規約チェック● Swaggerカバレッジ計測● ビルド● デプロイ
© kaonavi Inc.Slackによる自動化45● GitLab連携○ コードレビューの依頼を自動化○ テストやビルドエラーの通知
© kaonavi Inc.Slackによる自動化46● ワークフロー機能でオンボーディング支援を自動化○ Slackの設定や推奨チャンネル紹介○ Confluenceの設定、利用説明○ GitLabの個人設定○ ローカル開発環境の構築○ 開発ルール説明○ 開発フォロー
© kaonavi Inc.インフラの自動化47● CloudFormationやTerraformで環境を自動作成● CodePipelineでデプロイを自動化
© kaonavi Inc.48アーキテクチャ ツールプロセスチームカルチャー
© kaonavi Inc.システムリプレース後の開発プロセス49● 職能別組織による開発○ 生産性も向上PM/企画職グループエンジニアグループQAグループ仕様作成リリースコントロール実装 品質保証 リリースOperationグループ
© kaonavi Inc.システムリプレース後の開発プロセス50● ところが、組織が大きくなるにつれてセクショナリズムが深刻化○ 仕様書の読み込みが大変○ 期日コミットがゴールに○ 仕様変更への対応が鈍化○ 意思疎通不全アジャイルソフトウェア開発宣言と真逆状態にプロセスやツールよりも個人と対話を、包括的なドキュメントよりも動くソフトウェアを、契約交渉よりも顧客との協調を、計画に従うことよりも変化への対応を、
© kaonavi Inc.● 組織をミッションベースのグループに変更し、グループ内でチーム開発職能別組織からチームによる開発へ51PM/企画職グループエンジニアグループミッションベースグループ○○チーム○○チームリリースまでの全行程に責任QAグループチーム内はQA→QCへリリース依頼リリースまでの全行程に責任OperationグループOperationグループ
© kaonavi Inc.チームごとに開発プロセスを選択52● 開発規模が大きいチームの多くはスクラム開発● 少人数体制の改善/保守タスクはRedmineのチケット駆動開発デイリースクラムバックログリファインメントスプリントレビューレトロスペクティブプランニング1 プランニング2 開発スクラムイベントスプリント
© kaonavi Inc.安定運用のためのリリースプロセス53● 品質管理(Quality Control)○ チーム開発の場合は専任のQCメンバーを配置■ 品質の重要性をチーム内で啓蒙■ アジャイルテストの取り組みリリース(テスト)計画更新リグレッションテスト受け入れ条件チェックテストケース設計&作成テスト実施テストレベル定義テスト観点テスト見積り レポートテストケースレビューアジャイルテストスプリント
© kaonavi Inc.レビューマスター安定運用のためのリリースプロセス54● コードレビュー体制○ フロントエンドやバックエンドなど、領域ごとの担当者(レビューマスター)を複数人配置○ チーム内レビューも徐々に展開レビュー依頼 フロントエンドバックエンドレビュー依頼○○チーム○○チーム
© kaonavi Inc.安定運用のためのリリースプロセス55● 安定のリリース体制○ Operationグループによるスケジュール管理されたリリースプロセス○ リリース回数、リバート数、デプロイ成功率などの指標で常にカイゼンOperationグループリリース依頼○○チームリリース対象リストリリース
© kaonavi Inc.安定運用のためのリリースプロセス56● ポストモーテム運用○ 失敗に対するふりかえり、学習、再発防止活動○ 実施対象■ 一定深刻度以上のインシデント■ リリース後の巻き戻し
© kaonavi Inc.57アーキテクチャ ツールプロセスチームカルチャー
© kaonavi Inc.良いチームカルチャーは良い会社のカルチャーから始まる58
© kaonavi Inc.カオナビのカルチャー59
© kaonavi Inc.カオナビのカルチャー60相互選択POLICY従業員と会社が選び選ばれる対等な関係
© kaonavi Inc.カオナビのカルチャー仮説思考VALUE相手の言葉を鵜呑みにせず、その背景や理由を考えること1仕組み化自分ができるコトを、他の人でもできるようにすること2シンプル必要なものを見極め、捨てる重要性を知ること3
© kaonavi Inc.カオナビのカルチャー62MY WORK STYLEハイブリッドワーク働く場所を選択可能(出社 or 自宅 or 許可された就業スペース)スーパーフレックス制度フレックスタイム内の任意の時間帯で勤務※ 1日4時間以上の勤務、月の所定労働時間ありスイッチワーク制度連続して勤務できない場合も、時間を細切れにして働ける制度123兼業推奨異なるフィールドでの経験がカオナビでの活躍にもつながるという考え4
© kaonavi Inc.カオナビのカルチャー63NEW OFFICE「仕事をしにいく場所」ではなく、「カオナビのサービスや思想に共感する人たちが集まる場所」としての空間
© kaonavi Inc.エンジニア組織のカルチャー64
© kaonavi Inc.● Slackはほとんどオープンチャンネル、透明性を大事に● 助け合いの文化○ 分報やチャンネルへ投稿するといろんな人が助けてくれる● プロダクトアウトの考え方が定着● ボトムアップで判断○ 現場が自ら考え、主体的に行動● 仮説思考でロジカルに考える● 限られた時間内できちんと成果を出す○ 1日あたりの残業時間はわずか4分雰囲気・マインド65エンジニアがよく使うSlackの絵文字たち
© kaonavi Inc.● 全社スプリントレビュー(毎週)○ 全社で参加者を募って行うスプリントレビュー○ 各チームの成果物を共有し、営業・事業戦略・サポートチームなどから多角的なフィードバックが得られる場○ 多い時には100人以上集まるときも!組織的な取り組み66
© kaonavi Inc.● エンジニア分科会(毎週)○ 参加はテックリード + CTO○ 議題により他のメンバーも任意参加○ プロダクトにおける技術的な課題の解決や方針を決める場組織的な取り組み67
© kaonavi Inc.組織的な取り組み68● エンジニア定例ミーティング(毎週)○ 原則として全エンジニア参加○ 技術課題や開発方針、各チームの開発状況を共有する場■ 解決したい課題が出てきた場合は、エンジニア分科会に持ち込む
© kaonavi Inc.● リスク管理ミーティング(毎週)○ 参加はマネージャー + QC責任者 + CTO○ プロダクトにおけるあらゆるリスクを共有し、問題が顕在化する前に対策を行うためのミーティング組織的な取り組み69
© kaonavi Inc.組織的な取り組み70● エンジニア勉強会(隔週)○ 横断的に知見を共有、属人化解消やエンジニアの成長を促す○ 開催回数は47回、発表回数は151回(2021年4月10日時点)
© kaonavi Inc.エンジニア組織のカルチャーをどのように醸成してきたか71
© kaonavi Inc.カオナビの歴史72導入社数2000175015001250100075050025002013/3 2014/3 2015/3 2016/3 2017/3 2018/3 2019/3 2020/3178912938544452039840212000以上2021/3黎明期サービスリプレース急速な組織化SES中心の開発エンジニアが徐々に増加職能別組織へエンジニア人数エンジニアが急増チーム開発へ
© kaonavi Inc.エンジニア組織なし混乱期Storming形成期Formingタックマンモデルで見るエンジニア組織732013/3 2014/3 2015/3 2016/3 2017/3 2018/3 2019/3 2020/3 2021/3統一期Normingエンジニア人数成果
© kaonavi Inc.エンジニア組織なし混乱期Storming形成期Formingタックマンモデルで見るエンジニア組織742013/3 2014/3 2015/3 2016/3 2017/3 2018/3 2019/3 2020/3 2021/3統一期Normingエンジニア人数成果
© kaonavi Inc.● SES中心の開発● 売上重視● 技術負債の蓄積● 運用もだんだんと不安定に…2015年75サービスリプレース開始
© kaonavi Inc.● 現行バージョンへの移行完了● エンジニア組織ができあがり、組織体制の強化へ● 職能別組織で安定化、生産性も向上2017年76PM/企画職グループエンジニアグループQAグループ仕様作成リリースコントロール実装 品質保証 リリースOperationグループ
© kaonavi Inc.エンジニア組織なし混乱期Storming形成期Formingタックマンモデルで見るエンジニア組織772013/3 2014/3 2015/3 2016/3 2017/3 2018/3 2019/3 2020/3 2021/3統一期Normingエンジニア人数成果
© kaonavi Inc.2019年78● やがてセクショナリズムが深刻化○ 仕様書の読み込みが大変○ 期日コミットがゴールに○ 仕様変更への対応が鈍化○ 意思疎通不全アジャイルソフトウェア開発宣言と真逆状態にプロセスやツールよりも個人と対話を、包括的なドキュメントよりも動くソフトウェアを、契約交渉よりも顧客との協調を、計画に従うことよりも変化への対応を、
© kaonavi Inc.ここからのカイゼンの動きがいまのカルチャーを醸成79
© kaonavi Inc.3つのカイゼン80開発体制のカイゼン開発プロセスのカイゼン開発マインドのカイゼン
© kaonavi Inc.3つのカイゼン81開発体制のカイゼン開発プロセスのカイゼン開発マインドのカイゼン
© kaonavi Inc.● 組織をミッションベースのグループに変更し、グループ内でチーム開発職能別組織からチームによる開発へ82PM/企画職グループエンジニアグループミッションベースグループ○○チーム○○チームリリースまでの全行程に責任QAグループQA→QCへリリース依頼リリースまでの全行程に責任OperationグループOperationグループ
© kaonavi Inc.● チーム開発で生じた変化職能別組織からチームによる開発へ83何のために開発しているのか分からないやらされ仕事個人で成果を出す自分の仕事が終わるかどうか企画職と開発者のコミュニケーション不足認識のズレWhyを理解した上で開発自分たちで成し遂げる仕事チームで成果を出すチームとしての仕事が終わるかどうか疑問・相談は直接その場で速攻で同じ質で同じ情報量
© kaonavi Inc.権限の移譲84● 権限と同時に責任を移譲し、トップダウン型から自立型の組織へマネージャーリーダーメンバーマネージャーリーダー
© kaonavi Inc.専門的なポジション85● EMやテックリードなどを用意○ メンバーのスキルマネジメントや文化醸成など専門知識が必要な場面に対して責任を持つEM/TLリーダー メンバー
© kaonavi Inc.ポイント86● トップダウンとボトムアップの使い分けチーム組織 組織構造といった大きな変化はトップダウンで現場のカイゼンはボトムアップで
© kaonavi Inc.3つのカイゼン87開発体制のカイゼン開発プロセスのカイゼン開発マインドのカイゼン
© kaonavi Inc.スクラムの導入88● 最適化されていない開発プロセス● 不確実性との付き合い方スクラムの導入
© kaonavi Inc.スクラムの導入89● 最初は原理主義に走りうまくいかずスクラムの導入スクラムの実践と学習
© kaonavi Inc.● やがて開発プロセスに変化が起こり、アジャイルな考え方が組織に浸透スクラムの導入90プロジェクトの終盤まで不確実性が残るスケジュールもスコープも変えられない …?QAは他のグループがやるもの手を動かすまで開発の難易度は分からないプロジェクトが終わってからのふりかえり全て開発し終わるまでリリースできないアジャイルな見積もりと計画の実践自分たちでプロジェクトのハンドルを握るチームで完結できるようコラボレーションプラニングが終了時点で把握、対策を打つ毎スプリント小さなカイゼンを試すα、βリリースでフィードバックループを回す
© kaonavi Inc.ポイント91分析仲間 根気
© kaonavi Inc.3つのカイゼン92開発体制のカイゼン開発プロセスのカイゼン開発マインドのカイゼン
© kaonavi Inc.土壌づくり93技術課題の一覧可視化テックリードによるサポートナレッジ共有の場としてのエンジニア勉強会週に2時間の技術品質カイゼン推奨ボトムアップでの技術選定
© kaonavi Inc.ポイント94技術革新はエンジニアの好奇心から生まれる技術的カイゼンの種を育むための環境と文化小さく試す実験を繰り返す
© kaonavi Inc.3つのカイゼン95開発体制のカイゼン開発プロセスのカイゼン開発マインドのカイゼン
© kaonavi Inc.こうしたカイゼンの動きがいまのカルチャーを作り上げた96
© kaonavi Inc.エンジニア組織なし混乱期Storming形成期Formingタックマンモデルで見るエンジニア組織972013/3 2014/3 2015/3 2016/3 2017/3 2018/3 2019/3 2020/3 2021/3統一期Normingエンジニア人数成果
© kaonavi Inc.さらなる取り組み98
© kaonavi Inc.ライブラリアン99情報に秩序をもたらし、情報を減らし、情報を整理し、情報をコントロールする。
© kaonavi Inc.エキスパートの配置100サービスリード エキスパートマネージメント テックリード専門性管理・育成ドメイン 一般歴史、ドメイン、コア概念の全体的ボトムアップを図る環境や仕組みを整えメンバーの能力を最大化プロダクトの課題解決をエキスパートとして導く生産性の最大化のためにメンバーを強化
© kaonavi Inc.生産性向上101● 生産性向上を専門的に行うグループProductivity Group
© kaonavi Inc.スキルアップの促進102● 忙しいときほどゆとり時間が大事サバイバルモード学習モード自己組織化モード● 学ぶ時間がない● 定期的に火消し作業● 遅れと残業● 十分なゆとり時間● スキルの習得時間がある● 誤りを許容する● チームにスキルがある● 自分たちで意思決定できる● 衝突を内部解決できる● ゆとり時間を作る● 残業を減らす● 見積もりし直す● チーム自身で自分たちの問題を解決できるように教える
© kaonavi Inc.スキルアップの促進103● スナバ(週2H)○ 将来的に事業貢献・プロダクト改善に繋がる可能性がある、あらゆる活動を自由に行える時間(活動報告不要)○ 未来の自分、未来の誰かのために、ゆとり時間を用意する制度
© kaonavi Inc.スキルアップの促進104● イドバタ(不定期)○ 業務時間外に開催する勉強会などの活動○ CTOやEMが積極的に場を用意○ 社外の人を巻き込んでやることも検討中○ 第1回 あなたのターニングポイントは?〜私、その時に覚醒しました〜■ 登壇者5名(各10分〜15分)■ 参加者30名以上
© kaonavi Inc.まとめ105
© kaonavi Inc.106アーキテクチャ ツールプロセス4つのポイントが大事チームカルチャー
© kaonavi Inc.107アーキテクチャ ツールプロセスチームカルチャーDX向上の促進にはチームカルチャーが重要!
© kaonavi Inc.108いまさら聞けないDXの4つのポイント〜DX向上を促進するカルチャーとは〜
© kaonavi Inc.109カオナビが取り組むDXの4つのポイント〜DX向上を促進するカルチャーを どのように醸成してきたか〜
© kaonavi Inc.少しでもカオナビに興味を持ってくださった方、110各ポジション募集中!!!https://corp.kaonavi.jp/recruit/list.html