Slide 1

Slide 1 text

日本の医療体験を、しなやかに。 © KAKEHASHI Inc. Badプラクティスを選んで失敗しながら 進めた新規プロダクト開発 2024.01.10 @ Regional Scrum Gathering Tokyo 2024 湯前慶大 椎葉光行

Slide 2

Slide 2 text

© KAKEHASHI Inc. いきなり質問 新しいプロダクト開発の立ち上げを 経験したことある方ー?

Slide 3

Slide 3 text

© KAKEHASHI Inc. はじめに 本題に入る前に・・・ ● 新規開発の話をあまり聞いたことない ● ふりかえってみると、成功のためにBadプラクティスを選択していた → 実践例として、コミュニティに還元出来るのでは?

Slide 4

Slide 4 text

© KAKEHASHI Inc. 自己紹介 湯前 慶大 (@yunon_phys) ● VP of Engineering 兼 Engineering Manager ● カケハシ(2023年3月〜) ● ビール、チーズ、ワインが好き ● 子どもが生まれて、てんやわんやな 日々を過ごす 椎葉 光行 (@bufferings) ● フルスタックエンジニア ● カケハシ(2023年4月〜) ● RSGT2021登壇 ● Scrum Osaka 2021キーノート ● コーヒー、ビール、ラーメンが好き

Slide 5

Slide 5 text

© KAKEHASHI Inc. カケハシの紹介 Mission 日本の医療体験を、しなやかに。 Vision 明日の医療の基盤となる、エコシステムの実現。

Slide 6

Slide 6 text

© KAKEHASHI Inc. カケハシの紹介

Slide 7

Slide 7 text

© KAKEHASHI Inc. 本セッションの前提 今日の話はこんな背景があるよ ● 2023年4〜10月の話 ● 薬局向けの新規プロダクト、3月に出来たばかりの新しいチーム ● フルリモート

Slide 8

Slide 8 text

© KAKEHASHI Inc. Badプラクティス? どんなBadプラクティスをやったのか? ● Readyを待たない ● 見積もりをしない ● スプリント内でタスクが終わらない ● 仕掛中のユーザーストーリーがたくさんある

Slide 9

Slide 9 text

新規開発とスクラム なぜ、見積もりをしないことにしたのか 見積もりの代わりに何をしたのか 遅れられない! わかるー!

Slide 10

Slide 10 text

© KAKEHASHI Inc. 新規開発とスクラム 新規開発 開発中にも新しい情報がたくさん! 分かっていないことがたくさん! 前もってきっちり決めてもうまくいかない!

Slide 11

Slide 11 text

© KAKEHASHI Inc. 新規開発とスクラム 新規開発とスクラム 調査用のスプリントを実施 わりと好き! 1. 調査する 2. Readyになる 3. 見積もりをする 4. 実装する 5. 繰り返す

Slide 12

Slide 12 text

© KAKEHASHI Inc. 新規開発とスクラム 新規開発とスクラム Readyになるのを待たない これに挑戦したいなー! 1. 調査する 2. Readyになる 3. 見積もりをする 4. 実装する 5. 繰り返す

Slide 13

Slide 13 text

© KAKEHASHI Inc. 新規開発とスクラム どう思う? いいね!やってみよう!

Slide 14

Slide 14 text

© KAKEHASHI Inc. 新規開発とスクラム Readyを待たない・見積もりをしない開発 「分かっていないこと」を解決しながら「新しい情報」にも素早く対応するぞー!

Slide 15

Slide 15 text

© KAKEHASHI Inc. 新規開発とスクラム 全体マップづくり

Slide 16

Slide 16 text

© KAKEHASHI Inc. 新規開発とスクラム 全体マップづくり

Slide 17

Slide 17 text

© KAKEHASHI Inc. 新規開発とスクラム ユーザーストーリー以外のタスク インフラ構築や 技術選定など 全体のテストや 本番環境の準備など

Slide 18

Slide 18 text

© KAKEHASHI Inc. 新規開発とスクラム え?1ヶ月? みじかっ!!! ユーザーストーリー以外のタスク インフラ構築や 技術選定など 全体のテストや 本番環境の準備など

Slide 19

Slide 19 text

© KAKEHASHI Inc. 新規開発とスクラム MVPをスライス

Slide 20

Slide 20 text

© KAKEHASHI Inc. 新規開発とスクラム 全体マップ

Slide 21

Slide 21 text

チーム作りの話 ドリームチーム! どんなチーム作ったの?

Slide 22

Slide 22 text

© KAKEHASHI Inc. 役割について 湯前のチームにおける役割 Engineering Manager(EM) 兼 Scrum Master(SM) EM = 組織の構築・成長に責任を持つ → 人を集めて開発体制をつくる SM = スクラムの推進・改善に責任を持つ → 集めた人で開発を進める・改善する

Slide 23

Slide 23 text

© KAKEHASHI Inc. チームコンセプト こんなチームにしたい “良いチームが良いプロダクトを作る” を体現するドリームチーム ↓ 技術力 × 顧客価値

Slide 24

Slide 24 text

© KAKEHASHI Inc. 採用基準 どんな人をチームに入れるべきか? 新規開発において重要なこと → 開発コストを可能な限り抑えること 1. コミュニケーションが円滑に出来ること(コミュニケーションコスト) 2. フルスタックに活躍出来ること(人件費、コミュニケーションコスト) 3. 技術力が高いこと(技術的負債、安定性、コミュニケーションコスト) 特に開発初期の段階は どっちに進めば良いかわからない・・・

Slide 25

Slide 25 text

© KAKEHASHI Inc. 開発チーム 船に乗った人たち EM/SM Eng Eng PdM

Slide 26

Slide 26 text

© KAKEHASHI Inc. 開発チーム 船に乗った人たち 大丈夫です!! EM/SM Eng Eng PdM 人数を増やさなくて 大丈夫ですか?

Slide 27

Slide 27 text

© KAKEHASHI Inc. 開発チーム 船に乗った人たち うまくいかなかったら どうしよう EM/SM Eng Eng PdM 人数を増やさなくて 大丈夫ですか?

Slide 28

Slide 28 text

© KAKEHASHI Inc. ここまでEngineering Managerとしての話 ここからScrum Masterとしての話

Slide 29

Slide 29 text

© KAKEHASHI Inc. チームコンセプト こんなチームにしたい “良いチームが良いプロダクトを作る” を体現するドリームチーム ↓ 技術力 × 顧客価値

Slide 30

Slide 30 text

© KAKEHASHI Inc. チームコンセプト Scrum Masterとしてやったこと チームの置かれる状況の変化に合わせて チームの動きを変化させていく

Slide 31

Slide 31 text

© KAKEHASHI Inc. 4つのフェーズ リリースまでの4つのフェーズ 立ち上げ期 (4〜5月) リズム形成期 (6〜7月) 機能量産期 (7〜8月) リリース 準備期 (9〜10月) チームの状況を見ながら滑らかに変化

Slide 32

Slide 32 text

© KAKEHASHI Inc. 立ち上げ期 立ち上げ期(4〜5月) 課題 やることが不明瞭 どんな技術を使う? 得られたこと 漏れ・だぶりない調査 ゴールまでの道筋 調査のタスク化 情報の透明性担保 やったこと

Slide 33

Slide 33 text

© KAKEHASHI Inc. 課題 どれぐらいで 開発できる? 得られたこと 間に合わない という理解 おおよその見積もり 目の前の開発推進 やったこと リズム形成期 リズム形成期(6〜7月)

Slide 34

Slide 34 text

© KAKEHASHI Inc. 課題 機能開発以外の タスクが山積み 得られたこと 開発スピード安定 タスクが終わってく 機能開発以外は スクラムマスターが 巻き取る! やったこと 機能量産期 機能量産期(7〜8月)

Slide 35

Slide 35 text

© KAKEHASHI Inc. 課題 予期せぬ不具合や 考慮不足の発生 得られたこと リリース前に 不具合見つけた! バッファを設ける 普段から気になりを 話せるように やったこと リリース準備期 リリース準備期(9〜10月)

Slide 36

Slide 36 text

© KAKEHASHI Inc. 4つのフェーズ リリースまでの4つのフェーズ 立ち上げ期 (4〜5月) リズム形成期 (6〜7月) 機能量産期 (7〜8月) リリース 準備期 (9〜10月) チームの状況を見ながら滑らかに変化

Slide 37

Slide 37 text

Badプラクティスを選んで進めた新規開発 1. Readyを待たない・見積もりをしない 2. スプリント内でタスクが終わらない 3. 仕掛中のユーザーストーリーがたくさんある このパートはモジモジ(文字文字)してるよー!

Slide 38

Slide 38 text

© KAKEHASHI Inc. Badプラクティスを選んで進めた新規開発 Readyを待たない・見積もりをしない 例:土台作り ● 分かっていないことだらけの中で毎週違う課題に飛び込んだ ○ Terraform + AWS、コンテナ実行環境の構築、GitHub Actionsで自動デプロイなど ○ 調査→実装の素早い繰り返しで作り上げた ○ 見積もりが可能になったときには実装が終わってる ● 実装してみて気づいたことにも、その場で対応 ○ 例:ARM64 DockerイメージのビルドはAWS CodeBuildに逃した それによって ● 新しい情報にも対応しつつ、一番速い方法で土台を構築できた

Slide 39

Slide 39 text

© KAKEHASHI Inc. Badプラクティスを選んで進めた新規開発 スプリント内でタスクが終わらない そもそも、スプリント(1週間)という区切りを気にしないことにしてた ● やることをTODOに並べておいて、全力で1つずつ終わらせていくことに集中 ● スプリント(1週間)は、日々状況が変わる新規開発には長すぎる ● デイリースクラムで今日は何をするのがいちばんいいかを毎朝チームでプランニング ● だから、スプリント終わりでタスクが残っていても気にしない それによって ● スプリントという区切りは気にせずに、今日何をするべきかを大切にしていた じゃあスクラムじゃなくていいのでは? ってのには後でふれるからちょっと待ってね

Slide 40

Slide 40 text

© KAKEHASHI Inc. Badプラクティスを選んで進めた新規開発 仕掛中のユーザーストーリーがたくさんある バックエンド開発:2回実装するほうがいいと判断 ● 1回目:技術的に実現可能かどうかを素早く確認するための最小の実装 ○ 1メソッドに全部を詰め込んで動作検証・エラー処理なし・ロギングなし ○ 1回目の実装が終わった段階では、すべてのユーザーストーリーが仕掛中 ● 2回目:本番環境で使えるレベルで実装しなおし ○ どのロジックをどこに置くべきかなどの構造を整備 ○ エラー処理やロギングの設計と実装 それによって ● 実現可能性を早い段階でチェックできた・全体を見ながら本番レベルの実装ができた

Slide 41

Slide 41 text

© KAKEHASHI Inc. Badプラクティスを選んで進めた新規開発 Badプラクティスを選んで進めた新規開発 1. Readyを待たない・見積もりをしない → 飛び込んで素早く実装するため 2. スプリント内でタスクが終わらない → 日次でプランニングをしていたため(スプリントを気にしなかった) 3. 仕掛中のユーザーストーリーがたくさんある → 2回実装することにしたため ただ、Badプラクティスは一歩踏み外すと危ない・・・

Slide 42

Slide 42 text

© KAKEHASHI Inc. Badプラクティスを選んで進めた新規開発 毎週のスプリントレビューで「動くモノ」を見せる これをエンジニア2人は、めちゃくちゃ意識してた ● 開発の区切りとしてのスプリントは気にしなかったけど ● レビューの区切りとしてのスプリントをとても意識していた ● 言葉ではなく動くモノで見せる ○ 何ができていて、何ができていないのかをハッキリさせるため それによって ● 毎週チームで全体マップを見ながら現在地を更新できた ふりかえりも毎週やってたし スクラムはいいなぁってなった

Slide 43

Slide 43 text

© KAKEHASHI Inc. Badプラクティスを選んで進めた新規開発 動くモノ・新しい情報・方針転換 フロントエンドは早い段階で動くモックを見せていた ● プロダクトマネージャが薬局を訪問(※薬局向けのプロダクトなので) ○ 画面のモックを触った感触+実際に見てきた薬剤師さんの業務 ○ 「デザインの方針を変更したほうが薬剤師さんにとって使いやすそう・・・」 ● チームで「それは、やるべき!」 ○ 僕じゃない方のエンジニア「すぐに仮実装を作ってみる!」 ○ 僕「いいぞいいぞー!」 それによって ● リリース前からプロダクトの方針転換ができた!

Slide 44

Slide 44 text

© KAKEHASHI Inc. Badプラクティスを選んで進めた新規開発 遅れ まだまだやることを残して 6月が終わってしまった・・・ ←イマココ

Slide 45

Slide 45 text

再計画まわりの話 怒ってないよ! 怒った?

Slide 46

Slide 46 text

© KAKEHASHI Inc. 計画が常に正しいわけではない 現状の延長線でゴールを考える

Slide 47

Slide 47 text

© KAKEHASHI Inc. 再計画 スケジュールの見直しは大胆に スケジュールの見直しは何度もやるもんじゃない ● 計画づくりに時間がかかる ● ステークホルダーへの説明コストも発生する 見直しは1回で済ます!

Slide 48

Slide 48 text

© KAKEHASHI Inc. 再計画 もっと早くわからなかったのか? 正直、もっと早い段階で見直し必要ありとは思っていた スケジュールの見直しに必要な条件 ● やらなければいけないことが全て洗い出せているか? ● チームのベロシティが安定しているか? ● チームの危機感は十分上がっているか?

Slide 49

Slide 49 text

© KAKEHASHI Inc. 再計画 再計画づくり 1. 全体マップを眺めながら、ストーリーの洗い出し・確認 2. 三点見積もり法(楽観値・最頻値・悲観値)により、機能開発の着地点を算出 3. リリース準備期間も含めて1ヶ月のバッファを取る a. 思わぬ課題が見つかるので厳密な見積もりはあえてしない 4. リリース予定日の肌感のすり合わせ 5. ステークホルダーへ説明

Slide 50

Slide 50 text

© KAKEHASHI Inc. 8月末リリース ↓ 10月中旬リリース この後は大きなスケジュール変更リスクもなく、 10月中旬に無事クローズドβとしてリリースできました 🎉

Slide 51

Slide 51 text

まとめ いろいろあったね ふりかえりだよ

Slide 52

Slide 52 text

© KAKEHASHI Inc. まとめ Badプラクティスも武器にする ● 新規開発をスクラムでどう進めてきたか ● 一番良いと思って信じたやり方は、いわゆるBadプラクティスだった ○ Readyを待たない ○ 見積もりをしない ○ スプリント内でタスクが終わらない ○ 仕掛中のユーザーストーリーがたくさんある ● 状況に合わせて最適化し続ける、現状の延長線上で考える

Slide 53

Slide 53 text

© KAKEHASHI Inc. ふりかえってみて 全体マップはとても有効だった ● 全体マップのおかげで、開発を始める前からMVPを削る話が出来た ● 今どこにいて、あと何をやらなければいけないか、現在地をチーム全員で把握 できた → 結果、全員で助け合えた ● 新規開発をやるなら、特におすすめ

Slide 54

Slide 54 text

© KAKEHASHI Inc. チームのその後 チームにエンジニア2人とメタラー1人がjoinした 種岡さん (RSGT初!) ogijunさん 1/11 14:00〜 “他者と働き、チームで成果 を出す方法 〜人との関係から みるカケハシ〜” 小田中さん 1/11 15:15〜 “スクラムとデッドライン、 壊れゆくチームをつなぎとめ るもの” オンラインで 参加してるよ!

Slide 55

Slide 55 text

No content