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

ARR20億円を3年で達成したエンジニア組織が実現したDeveloper eXperience~3つの落とし穴と乗り越え方~(ver2)

ARR20億円を3年で達成したエンジニア組織が実現したDeveloper eXperience~3つの落とし穴と乗り越え方~(ver2)

More Decks by リンクアンドモチベーション

Other Decks in Technology

Transcript

  1. 1
 #devsumi 2021 【19-B-8】 Link and Motivation Group ARR 20億円を

    3年で達成したエンジニア組織が実現した Developer eXperience ~ 3つの 落とし穴と乗り越え方~ #Developer eXperience Day 2021 Link and Motivation Group
  2. 3
 自己紹介 株式会社リンクアンドモチベーション 開発責任者 柴戸 純也 #2つの企業で技術役員 #エンジニア1人目入社 #一般財団生涯学習開発財団 認定コーチ

    #日本一のデスマーチPJでキャリアスタート #技術もチームも大好き #社会を前進させるプロダクトを作りたい #エンジニアがわくわくする環境を作りたい #スタートアップ上場へ導く #VPoE Link and Motivation Group #Developer eXperience Day 2021
  3. 7
 Link and Motivation Group #Developer eXperience Day 2021 アジェンダ

    1. 私たちの紹介 2. どんな状況だったか? 3. 落とし穴と乗り越え方は?
  4. 11
 【複数のパートナー企業が入れ替わり立ち替わりで、開発未経験社員がマネジメントし続けた結果】 • まぁまぁなカオス ◦ どうしようもないプログラムを前に、「なんじゃこりゃあぁぁ!!」と文句をいいつつ、技術的負債に怨 念を抱きながらも、しょうがないかと諦めて、同じ環境、同じ運用で、そのまま同じようにプログラムを 追加し続ける。 ▪ ORMapperを使わない生のsqlが散乱

    ▪ 使わないテーブルが追加される ▪ 概要がわかるドキュメントがなくオンボーディングに苦戦 ▪ 要件・設計のドキュメントがなく勝手に変わるインターフェースやテーブル定義 ▪ 名前が統一されておらず、関連が追えない ▪ 滞るミドルウェア、ライブラリのバージョンアップ ▪ 検証不備によるデータ不整合。からのインシデント対応 ▪ 実験コードや実験環境の放置 ▪ ・・・ ◦ 不安だからリリースサイクルをゆっくりにしよう。もっとちゃんとしてからリリースしようのように「コード 修正の心理的安全性」がなくなっていってしまうという悪循環 #Developer eXperience Day 2021 Link and Motivation Group
  5. 13
 開発メトリクス(2018年→2020年) *DX Criteria は2019年→2020年 テストカバレッジ 90% 0% 削除したデッドコード 20,000

    line 0 line Infrastructure as a Code 70% 20% リードタイム 7day 14day 組織偏差値(エンゲージメントスコア ) 77 43.1 レイテンシー - 重い処理 3s 300s DX Criteria - システム評価 42.5pt 27.5pt インシデントレート 7% 未計測 Security Hub - アセスメント 98% 未計測 Link and Motivation Group #Developer eXperience Day 2021
  6. 14
 【当時、慌ててやったこと】 • 過去の経緯はいいから、(目に見えてる)コード、品質を上げよう ◦ うんコード返済しようぜ ◦ 不具合直そうぜ ◦ テストコード書こうぜ(コードを見る人のためにテストを書こう!)

    • チームによるコードレビュー実施 • 設計レビュー • プルリクテンプレ • 強制的に起こってもらう仕組み(CIでチェックするようになど) ◦ Rubocop、規約の自動チェックなど • (一時的に)リファクタリング期間を設けた • など しばらくしたら、また同じような状況に戻る・・・ • 一時的にコードはマシになったかもしれないが、組織状態がさらに悪化 • またもや新規開発を優先し、返済や改善が継続できなかった(どんよりムードは変わらず #Developer eXperience Day 2021 Link and Motivation Group
  7. 15
 開発メトリクス(2018年→2020年) *DX Criteria は2019年→2020年 テストカバレッジ 90% 0% 削除したデッドコード 20,000

    line 0 line Infrastructure as a Code 70% 20% リードタイム 7day 14day 組織偏差値(エンゲージメントスコア ) 77 43.1 レイテンシー - 重い処理 3s 300s DX Criteria - システム評価 42.5pt 27.5pt インシデントレート 7% 未計測 Security Hub - アセスメント 98% 未計測 Link and Motivation Group #Developer eXperience Day 2021
  8. 16
 開発メトリクス(2018年→2020年) *DX Criteria は2019年→2020年 テストカバレッジ 90% 0% 削除したデッドコード 20,000

    line 0 line Infrastructure as a Code 70% 20% リードタイム 7day 14day 組織偏差値(エンゲージメントスコア ) 77 43.1 レイテンシー - 重い処理 3s 300s DX Criteria - システム評価 42.5pt 27.5pt インシデントレート 7% 未計測 Security Hub - アセスメント 98% 未計測 Link and Motivation Group #Developer eXperience Day 2021 【ここからはこの変化の裏側のお話】 負債と向き合い続け、結果として DXを向上させ続けた期間でした 何が起きていて、 どんな穴に落ちて、 どう行動したのか?
  9. 25
 技術的負債 組織的負債 意図 あり 短期 デプロイ最優先 長期 マルチではなく 1プラットフォーム対応

    意図 なし 能力不足 いい加減な習慣・ チームのスキル不足 レガシー バージョンアップへの未対応・ 引き継がれた古いコードソース 負債蓄積のメカニズム Link and Motivation Group #Developer eXperience Day 2021
  10. 26
 技術的負債 組織的負債 意図 あり 短期 デプロイ最優先 特別のはずが繰り返し 「言ってたことと違うじゃん...」 長期

    マルチではなく 1プラットフォーム対応 意図 なし 能力不足 いい加減な習慣・ チームのスキル不足 責任者不在・放置 「誰がやるんだよ...」 レガシー バージョンアップへの未対応・ 引き継がれた古いコードソース 負債蓄積のメカニズム Link and Motivation Group #Developer eXperience Day 2021
  11. 27
 Link and Motivation Group 負債 技術的負債 組織的負債 表裏一体 #Developer

    eXperience Day 2021 後回しにしてしまった組織的負債(落とし穴)が何で、 どうやって乗り越えたのか?
  12. 29
 3つの落とし穴 不明 ① 風化 ② 断絶 ③ 不安 怒り

    諦め Link and Motivation Group #Developer eXperience Day 2021
  13. 30
 3つの落とし穴 不明 ① 風化 ② 断絶 ③ 不安 怒り

    諦め Link and Motivation Group #Developer eXperience Day 2021
  14. 34
 不安のメカニズム 影の時は よくわからないバケモノ 見えてしまえば 各タスクの積み重ね 細分化 Link and Motivation

    Group 引用:https://qiita.com/hirokidaichi/items/c66682a64ac2fc59cdf3 #Developer eXperience Day 2021
  15. 39
 開発組織メトリクス テーマ No. 指標 デリバリー パフォーマンス ー生産性ー 1 デプロイの頻度

    2 変更のリードタイム 3 平均修復時間(MTTR) 4 変更失敗率 QA ー品質ー 5 インシデントレート 6 インシデント再発防止スコア セキュリティ リスク ー信頼性ー 7 セキュリティリスク件数 テーマ No. 指標 システム全般 ーDX Criteriaー 8 バージョン管理 9 ソースコードの明確さ 10 継続的インテグレーション 11 継続的デプロイ 12 API駆動開発 13 疎結合アーキテクチャ 14 システムモニタリング 15 セキュリティシフトレフト *これ以外にカバレッジなど各種メトリクスも取得していますが、今回は割愛しています Link and Motivation Group #Developer eXperience Day 2021
  16. 41
 開発組織メトリクス テーマ No. 指標 デリバリー パフォーマンス ー生産性ー 1 デプロイの頻度

    2 変更のリードタイム 3 平均修復時間(MTTR) 4 変更失敗率 QA ー品質ー 5 インシデントレート 6 インシデント再発防止スコア セキュリティ リスク ー信頼性ー 7 セキュリティリスク件数 テーマ No. 指標 システム全般 ーDX Criteriaー 8 バージョン管理 9 ソースコードの明確さ 10 継続的インテグレーション 11 継続的デプロイ 12 API駆動開発 13 疎結合アーキテクチャ 14 システムモニタリング 15 セキュリティシフトレフト どこから手を付ける? Link and Motivation Group #Developer eXperience Day 2021
  17. 43
 4eye’s 期待度(優先度) 弱み 期待度/優先度:高 × ケイパビリティ/満足度:低 ケイパビリティ (満足度) 強み

    期待度/優先度:高 × ケイパビリティ/満足度:高 Link and Motivation Group #Developer eXperience Day 2021
  18. 48
 3つの落とし穴 不明 ① 風化 ② 断絶 ③ 不安 怒り

    諦め Link and Motivation Group #Developer eXperience Day 2021
  19. 52
 技術的負債のタイムライン (時間) 価値享受 苦労 解消 純資産 純債務 技術的負債 転

    換 点 改 善 認 識 引用:Tech Debt Timeline     [Kruchten, Philippe. Managing Technical Debt    (SEI Series in Software Engineering) (p. 33)] 発 生 Link and Motivation Group #Developer eXperience Day 2021
  20. 53
 技術的負債のタイムライン (時間) 価値享受 苦労 解消 純資産 純債務 技術的負債 転

    換 点 改 善 認 識 引用:Tech Debt Timeline     [Kruchten, Philippe. Managing Technical Debt    (SEI Series in Software Engineering) (p. 33)] 発 生 衝突 Link and Motivation Group #Developer eXperience Day 2021
  21. 54
 Link and Motivation Group #Developer eXperience Day 2021 仕組み化

    風化の落とし穴にはまらないように 面接時の共有 ・ オンボーディング PGへの組み込み
  22. 56
 技術的負債のタイムライン (時間) 価値享受 苦労 解消 純資産 純債務 技術的負債 転換点

    改善 認識 引用:Tech Debt Timeline     [Kruchten, Philippe. Managing Technical Debt    (SEI Series in Software Engineering) (p. 33)] 歴史の共有と享受してきた価値への感謝 発生 最速で(2016年に)立ち上げたゆえのシェア Link and Motivation Group #Developer eXperience Day 2021
  23. 59
 3つの落とし穴 不明 ① 風化 ② 断絶 ③ 不安 怒り

    諦め Link and Motivation Group #Developer eXperience Day 2021
  24. 67
 例えば 解約・クレーム (性能) 遅 速 (事業計画上の企業数と時期) Now 〇か月後 xxx社

    事 業 の G a p 解 約 ・ ク レ ー ム ・〇か月後にはボトルネックに ・◆円の解約影響 ・可視化・対策が必要 ・◎人のリソースを投資する Link and Motivation Group #Developer eXperience Day 2021
  25. 70
 #Developer eXperience Day 2021 Why デプロイ 高頻度実施? テストコード 必要?

    クラウド・ DevOps投資? セキュリティ リスク? 約4回で手動テストと自動テストのコストが逆転 引用:https://speakerdeck.com/twada/quality-and-speed-2020-spring-edition?slide=61 引用:https://www.amazon.co.jp/Philosophy-Software-Design-John-Ousterhout/dp/1732102201 Link and Motivation Group
  26. 71
 Why デプロイ 高頻度実施? テストコード 必要? クラウド・ DevOps投資? セキュリティ リスク?

    引用:https://www.amazon.co.jp/dp/B07L2R3LTN 引用元: Accelerate State of DevOps 2019 https://services.google.com/fh/files/misc/state-of-devops-2019.pdf Link and Motivation Group #Developer eXperience Day 2021
  27. 72
 Why デプロイ 高頻度実施? テストコード 必要? クラウド・ DevOps投資? セキュリティ リスク?

    LowとElite差額は組織規模ごとに、 250人規模:年間5,500万 2,000人規模:4.5億円 引用:https://cloud.google.com/resources/roi-of-devops-transformation-whitepaper?hl=ja Link and Motivation Group #Developer eXperience Day 2021
  28. 73
 Why デプロイ 高頻度実施? テストコード 必要? クラウド・ DevOps投資? セキュリティ リスク?

    引用:https://www.ibm.com/jp-ja/security/data-breach Link and Motivation Group #Developer eXperience Day 2021
  29. 76
 翻訳例 AWSの長期間停止 セキュリティリスク 手戻り 伝えたいこと 翻訳後 JRの全線停止 監視カメラ未設置 による数億円の盗難

    ハンバーグ 普通の ハンバーグ チーズイン ハンバーグ Link and Motivation Group #Developer eXperience Day 2021
  30. 78
 Integrate 事業が他人ごと、ではなく、エンジニアたちの事業理解も進み、他部門との関係が改善された。以 下のような返済方法も明確になった。(現フェーズにおいて) 1)プロジェクトの中で目標を設定 (例:事業に接続:リファクタ→性能改善。   非機能は事業計画と合わせて定量化して提案しやすい) 2)一定工数は常に。定期的に目標を設定 (片手間ではなく、専任。開発全体の10〜15%程度。

    マネジメントに伝わるよう、小さな取り組みからの成果積み上げや可視化、 リスクを定量化して伝えること頑張る。外部データを積極的に活用) 3)プロジェクトの中でついでにやる (息を吸うようにリファクタするようプロフェッショナリティに訴え続ける) Link and Motivation Group #Developer eXperience Day 2021
  31. 80
 3つの落とし穴 不明 ① 風化 ② 断絶 ③ 不安 怒り

    諦め Link and Motivation Group #Developer eXperience Day 2021
  32. 82
 負債は技術と組織が表裏一体 不明 見えないことによる不安 Measure 風化 悪者扱いによる怒り Respect 断絶 二元論による諦め

    Integrate 仕組み化 見える化 優先順位 付け Link and Motivation Group #Developer eXperience Day 2021 事業への 接続 言語翻訳
  33. 83
 負債は技術と組織が表裏一体 不明 見えないことによる不安 Measure 風化 悪者扱いによる怒り Respect 断絶 二元論による諦め

    Integrate 仕組み化 見える化 優先順位 付け Link and Motivation Group #Developer eXperience Day 2021 事業への 接続 言語翻訳
  34. 84
 負債は技術と組織が表裏一体 不明 見えないことによる不安 Measure 風化 悪者扱いによる怒り Respect 断絶 二元論による諦め

    Integrate 仕組み化 見える化 優先順位 付け Link and Motivation Group #Developer eXperience Day 2021 事業への 接続 言語翻訳 組織的負債へのアプローチ⇒技術的負債の返済
  35. 87
 Measure Integrate Respect 成長・貢献実感 相互理解・相互尊重 Developer eXperience Link and

    Motivation Group #Developer eXperience Day 2021 環境も仕組みも大事ですが、それ以上にひとりひとりが成長、貢献を感じて、 周囲からも理解され、尊敬を実感する日々を過ごすこと。これが幸せな開発者体験を生み出す