Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

20%ルールに頼らない: 技術的負債を解消する 組織的な取り組み / Developers S...

KAKEHASHI
July 27, 2023

20%ルールに頼らない: 技術的負債を解消する 組織的な取り組み / Developers Summit 2023 Summer

2023.07.27に開催されたDevelopers Summit 2023夏の登壇資料です

登壇者:湯前 慶大(VP of Engineering)

KAKEHASHI

July 27, 2023
Tweet

More Decks by KAKEHASHI

Other Decks in Business

Transcript

  1. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 1
 湯前 慶大(VP

    of Engineering) @yunon_phys 2010-2014 (株)日立製作所: 研究員 2014-2023 (株)アカツキ: VP of Engineering 2023- (株)カケハシ: VP of Engineering Engineering ManagerのためのPodcast EM.FMの パーソナリティーをつとめる 最近子どもが産まれて、てんやわんやな日々を 過ごす
  2. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 3
 ・技術的負債の解消より機能開発の

     方がいつも優先度が高い ・経営者やPdMから技術的負債に  ついて理解してもらいづらい ・正直技術的負債の解消に気乗り  しない
  3. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 4
 技術的負債の解消のやり方や

    技術的負債の大事さはいろんな情報がある 一方、どうやって社内で調整するのか、 という現実的な話はあまり情報がない (泥臭いし、正直かっこいい話じゃないし)
  4. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 5
 今日の話は・・・

      技術的負債はこうやれば解決するよ   悩みながらなんとか向き合って進めてるよ → かなり現実的な話をしていきます
  5. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 8
 Musubi

    AI在庫管理(薬局向け) 残薬問題 非効率な物流 人に頼った在庫管理
  6. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 9
 リリースして約2年

    まだまだ機能拡張をしていきたい でも、なんか開発がうまくいってない
  7. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 10
 感覚的に開発効率に課題はありそう

    以前と比較して機 能リリースが遅く なっている気がする ・・・ by PdM 3ヶ月前に入社した が、こんなにコード を把握できないの は初めて by エンジニア 機能を追加するとエ ンバグしてしまいそ うで、コードを触る のが怖い by エンジニア
  8. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 11
 Findy

    Team+でもマージまでの 平均時間は伸びている
  9. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 13
 機能拡張のために取りうる手段

    1. 追加機能を可能な限り削る 2. 開発効率を上げる 3. 人を増やす
  10. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 14
 機能拡張のために取りうる手段

    1. 追加機能を可能な限り削る Enterprise企業を顧客にしていくために、 そもそも足りていない機能が多すぎる → 残念ながら、現段階ではこれは取れない
  11. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 15
 機能拡張のために取りうる手段

    1. 追加機能を可能な限り削る 2. 開発効率を上げる 3. 人を増やす 理想的には この順番で 対処していきたい
  12. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 16
 機能拡張のために取りうる手段

    1. 追加機能を可能な限り削る 2. 開発効率を上げる 3. 人を増やす 現実的には 同時並行 (採用も育成も時間 がかかる)
  13. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 17
 機能拡張のために取りうる手段

    1. 追加機能を可能な限り削る 2. 開発効率を上げる 3. 人を増やす ← 今日はここだけ
  14. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 18
 生産性とは?

    期待付加価値 仕事量 実現 付加 価値 どの程度の仕事を こなすことができたか どれだけ価値の高い 仕事をできたか どれだけKPIを達成する ための重要な指標を達 成できたか https://qiita.com/hirokidaichi/items/53f0865398829bdebef1 に基づき筆者作成
  15. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 19
 生産性とは?

    期待付加価値 仕事量 実現 付加 価値 下のレベルの 生産性が高くないと 上のレベルの 生産性も高くない
  16. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 20
 生産性とは?

    期待付加価値 仕事量 実現 付加 価値 今回のフォーカスは仕事量の生産性 → 開発効率をいかに上げるか?
  17. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 21
 では開発効率を

    チームとして上げてこなかったのか?
  18. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 22
 チームの取り決めとして、

    20%は改善活動に時間を割くことに なっていた でも、実際には開発効率に影響が出る ぐらい、技術的負債は溜まってしまっ ていた・・・
  19. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 23
 一例ですが・・・

    ・テストが不十分なので変更が怖い ・テストを拡充するために、そもそもの  リファクタリングもやりたい ・e2eが巨大なメソッドになっていて、  何をテストしているかわかりづらい ・シンボリックリンクが多用されて  いて、読解に時間がかかる ・論理削除が多用されていて、  パフォーマンス影響が顕在化してきた
  20. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 24
 ところで・・・

    技術的負債はネガティブなのか? 負債と聞くとネガティブなイメージを持ちがちだ が、何かしらのレバレッジ(てこ)によりプロダクト 開発をした結果出たもの。うまく返済活動すれば 良い。 過去を否定したら今が無いかもしれないので、 過去に敬意を持って対処するのが大事。
  21. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 26
 ✔

    そもそも20%の時間で改善できる 内容には限界がある        ↓  100%時間を使えるように  うまくチームを構成すれば良いのでは A B C D E F A B C D E F
  22. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 28
 チームを分割して対応しようとしたら・・・

    ✔ ドメイン知識に偏りがある ✔ どこをリファクタリング・リアーキテクチャするのか チーム全体で細かなすり合わせが必要
  23. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 29
 そもそも、技術的負債はチームの課題。

    結果的に特定の人が解決するにしても、 考え方、解決のやり方などはチーム全体で 取り組まなければいけない。 → いきなり解決専門のチームをつくって   解消する方針は取りやめ
  24. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 30
 なんとなく課題があるのはわかる

    でも、ここにどれだけ時間的リソースを使って 取り組むべきかは 誰も自信を持って言えない状態。 意思決定しきれないまま、 2ヶ月ぐらい経ったころ、ある事件が起きた...
  25. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 31
 ✔

    そもそも20%の時間で改善できる 内容には限界がある        ↓  100%時間を使えるように  うまくチームを構成すれば良いのでは 見積もりバカでかい事件 (今考えた)
  26. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 33
 経営メンバーも、PdMも、SMも

    みんな頭を抱えてしまう OKRの達成が・・・ 顧客への説明が・・・ 今後の開発が・・・ 経営メンバー PdM SM
  27. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 34
 とりあえず

    落ち着こう!! やらなきゃいけないのは、 どうやって開発効率を上げるか? ≒ 技術的負債にどう向き合うか?
  28. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 35
 エンジニア的には工数さえ確

    保出来ていれば、まあやりま すよ、というスタンス (※後に話すが、そんな簡単 でもなかった)
  29. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 36
 とはいえ・・・

    それなりに長期間(3ヶ月 ~ 半年ぐらい)、技術 的負債に向き合う必要がある この間、機能開発が止まる or 遅くなる
  30. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 37
 長い時間をかけて技術的負債の解消に

    工数をかけるのは、理解ある経営者や PdMでも納得してもらうのは大変 売上に直結することを 優先したい経営者、PO、 PdM
  31. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 38
 どこまでいっても、技術的負債の解消の効

    果を定量的に説明するのは難しい。 でも、EMやエンジニアの言っていることが 嘘ではないことも理解している。 だからこそ、技術的負債に対する熱量を伝 えることは大事。そのために、提案するEM やエンジニアも覚悟を示す
  32. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 42
 長期的な改善だけでなく、短期間の

    改善も提案し、最大限EMやエンジニ アも身を削る提案をする 長期的な改善 ・技術的負債の解消 ・採用や育成 ・構造改革 短期的な改善 ・プロセスの改善 ・会議体の整理 ・自動化・仕組み化
  33. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 43
 社内資料より抜粋

    見積もり・進捗報告のやり方を変え、 すぐに課題に対処出来るようにする
  34. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 44
 短期的に成果を出すことにフォーカスするべく、

    中長期的な施策を勇気を持って一旦削除する 社内資料より抜粋
  35. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 45
 身を削る提案をすることで、

    中長期的な対策として技術的負債の解消を 経営層・PdMと議論できるようになった 議論内容 ✔ ゴールをどうするか ✔ 何をやるのか ✔ どのくらいの期間とリソースを使うか
  36. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 46
 テスト戦略

    + テスト リファクタリング リアーキテクチャ 緊急的 負債解消 新規開発の負債解消 新規開発の負債解消 新規開発 負債解消 機能開発・機能改修 時期 時間的なリソースの割合 技術的負債の解消プロセスのイメージの共有
  37. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 47
 次は見積もりをするべく、

    エンジニアチーム内でのすり合わせ しかし、そもそも・・・ ✔ なぜやるのか ✔ 何が今課題なのか ✔ 何が理想の状態なのか の認識がチーム全体で合っていない
  38. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 48
 こういう深い議論をするのには、

    1つのホワイトボードを見ながら、 長めに時間をかけるのが良い方法 しかし カケハシは全員リモートワーク というわけで・・・
  39. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 51
 オフラインの議論により、

    ✔ なぜやるのか ✔ 何が今課題なのか ✔ 何が理想の状態なのか はチームで大方揃った・・・! あとは進めるだけ・・・! → To be continued...
  40. Copyright © KAKEHASHI Inc. All Rights Reserved. 
 52
 技術的負債への組織的な取り組みについて、

    悩みながらも進めている話をしました。 何かしら皆さまの組織において、 参考になれば幸いです。
  41. 55