Slide 1

Slide 1 text

20%ルールに頼らない: 技術的負債を解消する 組織的な取り組み 2023.07.27 株式会社カケハシ 湯前 慶大

Slide 2

Slide 2 text

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の パーソナリティーをつとめる 最近子どもが産まれて、てんやわんやな日々を 過ごす

Slide 3

Slide 3 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 2
 突然ですが・・・ みなさんこんなことは無いですか?

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 Vision 明日の医療の基盤となる、エコシステムの実現。 6
 Mission 日本の医療体験を、しなやかに。

Slide 8

Slide 8 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 7


Slide 9

Slide 9 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 8
 Musubi AI在庫管理(薬局向け) 残薬問題 非効率な物流 人に頼った在庫管理

Slide 10

Slide 10 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 9
 リリースして約2年 まだまだ機能拡張をしていきたい でも、なんか開発がうまくいってない

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 11
 Findy Team+でもマージまでの 平均時間は伸びている

Slide 13

Slide 13 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 12
 じゃあどうすれば良いか?

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 21
 では開発効率を チームとして上げてこなかったのか?

Slide 23

Slide 23 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 22
 チームの取り決めとして、 20%は改善活動に時間を割くことに なっていた でも、実際には開発効率に影響が出る ぐらい、技術的負債は溜まってしまっ ていた・・・

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 25
 技術的負債を解消する ためにどう組織的に 解消に動いたか?

Slide 27

Slide 27 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 26
 ✔ そもそも20%の時間で改善できる 内容には限界がある        ↓  100%時間を使えるように  うまくチームを構成すれば良いのでは A B C D E F A B C D E F

Slide 28

Slide 28 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 27


Slide 29

Slide 29 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 28
 チームを分割して対応しようとしたら・・・ ✔ ドメイン知識に偏りがある ✔ どこをリファクタリング・リアーキテクチャするのか チーム全体で細かなすり合わせが必要

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 32
 概算見積もりによる開発期間 velocityから算出した開発期間(3倍!!!)

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 34
 とりあえず 落ち着こう!! やらなきゃいけないのは、 どうやって開発効率を上げるか? ≒ 技術的負債にどう向き合うか?

Slide 36

Slide 36 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 35
 エンジニア的には工数さえ確 保出来ていれば、まあやりま すよ、というスタンス (※後に話すが、そんな簡単 でもなかった)

Slide 37

Slide 37 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 36
 とはいえ・・・ それなりに長期間(3ヶ月 ~ 半年ぐらい)、技術 的負債に向き合う必要がある この間、機能開発が止まる or 遅くなる

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 39


Slide 41

Slide 41 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 40


Slide 42

Slide 42 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 41
 身を削るのは、 経営者やPdMだけになっていないか?

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 43
 社内資料より抜粋 見積もり・進捗報告のやり方を変え、 すぐに課題に対処出来るようにする

Slide 45

Slide 45 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 44
 短期的に成果を出すことにフォーカスするべく、 中長期的な施策を勇気を持って一旦削除する 社内資料より抜粋

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 46
 テスト戦略 + テスト リファクタリング リアーキテクチャ 緊急的 負債解消 新規開発の負債解消 新規開発の負債解消 新規開発 負債解消 機能開発・機能改修 時期 時間的なリソースの割合 技術的負債の解消プロセスのイメージの共有

Slide 48

Slide 48 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 47
 次は見積もりをするべく、 エンジニアチーム内でのすり合わせ しかし、そもそも・・・ ✔ なぜやるのか ✔ 何が今課題なのか ✔ 何が理想の状態なのか の認識がチーム全体で合っていない

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 49
 全国から全員集合!!!

Slide 51

Slide 51 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 50


Slide 52

Slide 52 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 51
 オフラインの議論により、 ✔ なぜやるのか ✔ 何が今課題なのか ✔ 何が理想の状態なのか はチームで大方揃った・・・! あとは進めるだけ・・・! → To be continued...

Slide 53

Slide 53 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 52
 技術的負債への組織的な取り組みについて、 悩みながらも進めている話をしました。 何かしら皆さまの組織において、 参考になれば幸いです。

Slide 54

Slide 54 text

53 Connpass

Slide 55

Slide 55 text

54 本日のアンケートへのご協力を お願いします󰢜

Slide 56

Slide 56 text

55