Slide 1

Slide 1 text

適切な問題設定と 小さくリリースするということ 合同勉強会

Slide 2

Slide 2 text

先に読んでおいてほしい
 
 
 What is it?

Slide 3

Slide 3 text

https://speakerdeck.com/soudai/first-step-for-good-development

Slide 4

Slide 4 text

https://speakerdeck.com/soudai/necessary-mindset-for-software-developers

Slide 5

Slide 5 text

“「いい質問だ。定義が『売上』となっているのは、必ず『納品』までを考慮しな ければならないためだよ。 仕掛品や完成品の在庫をどれだけ作っても、『納 品できなければマネジメントが成功したとは言えない』からね」
 確かにそうだ。だが、耳慣れない言葉に、私は思わず聞いていた。「在庫と は?この業界に在庫なんてありませんが?」
 私の言葉に、ジョナサンは悲しそうに首を振る。そして言った。
 「いいや、在庫の山はあるのだよ。残念なことに、それこそ山のようにあるだ ろう。ものづくりをしている業界で、納期遅れが起きている職場で、現場に在 庫が無いなどと考えるのは大きな誤りだ」
 「『在庫』とは、将来納品するために存在する、作りかけの未完成品や納品 前の完成品のことだ。 そのままでは納品できないもの、全てが在庫だ。
 例えばIT業界での『在庫』とは、『書きかけのコード』『未テストのコード』『別の コードの完成を待っているテスト済みのコード』 『完成していても顧客に納品 されていないコード』を指す。もちろん、『完成していても顧客に納品されてい ないドキュメント』も在庫だ」”
 https://gist.github.com/voluntas/9c1d9d51e86a853fed6889f743a12145

Slide 6

Slide 6 text

我々は素早く価値を届けたい
 
 
 What is it?

Slide 7

Slide 7 text

我々は素早く価値を届けたい
 ↓
 そのためには素早くリリースしたい
 What is it?

Slide 8

Slide 8 text

どうやって沢山リリースするか
 
 どうやって価値を素早く届けるか
 What is it?

Slide 9

Slide 9 text

顧客に価値を届ける
 
 そのために必要な話をします
 What is it?

Slide 10

Slide 10 text

1. 自己紹介
 2. 適切な問題設定とタスクへの分解
 3. 失敗できる仕組み
 4. 素早く、小さく、リリースする
 5. まとめ
 あじぇんだ

Slide 11

Slide 11 text

1. 自己紹介
 2. 適切な問題設定とタスクへの分解
 3. 失敗できる仕組み
 4. 素早く、小さく、リリースする
 5. まとめ
 あじぇんだ

Slide 12

Slide 12 text

自己紹介
 曽根 壮大(38歳)
 Have Fun Tech LLC 代表社員
 株式会社リンケージ CTO
 
 そ
 ● 日本PostgreSQLユーザ会 勉強会分科会 担当
 ● 3人の子供がいます(長女、次女、長男)
 ● 技術的にはWeb/LL言語/RDBMSが好きです
 ● コミュニティが好き たけ
 ね
 とも


Slide 13

Slide 13 text

突然の宣伝
 
予防医療のリンケージ
 
 
 ● リモートワークの不安を数値にするストレスチェック ● 女性の健康課題をサポートする ● リモートワーク、ちょっとした心配を相談できる安心をご提供 


Slide 14

Slide 14 text

1. 自己紹介
 2. 適切な問題設定とタスクへの分解
 3. 失敗できる仕組み
 4. 素早く、小さく、リリースする
 5. まとめ
 あじぇんだ

Slide 15

Slide 15 text

問題を解決するために
 
 解決手段としてリリースする
 適切な問題設定とタスクへの分解

Slide 16

Slide 16 text

問題のサイズが大きさに比例して
 
 リリースのサイズも大きくなる
 適切な問題設定とタスクへの分解

Slide 17

Slide 17 text

問題のサイズが大きさに比例して
 
 リリースのサイズも大きくなる
 適切な問題設定とタスクへの分解

Slide 18

Slide 18 text

問題が大きくても
 
 リリースのサイズには関係ない
 適切な問題設定とタスクへの分解

Slide 19

Slide 19 text

適切な問題設定とは?
 
 
 適切な問題設定とタスクへの分解

Slide 20

Slide 20 text

適切な問題設定とは?
 ↓
 ユーザーストーリーにすべて書いてある
 適切な問題設定とタスクへの分解

Slide 21

Slide 21 text

● Why 
 ○ そのタスクはなぜ必要なのか 
 ● What
 ○ そのタスクの実現したいことは成果物はないか 
 ○ 完了の定義
 ● When
 ○ タスクの期限
 ● Where
 ○ ビジョンやゴールはどこか、どこで実行されるか 
 ● Who 
 ○ ステークホルダーは誰か、利用者は誰か 
 ○ 例えば依頼者は誰か、レビューは誰にお願いするか、とか 
 ● How
 ○ どのように実現するか 
 ○ 実装のための制約や方針なども含む 
 ユーザーストーリーに書いてあること

Slide 22

Slide 22 text

もし、チケットそのものが大きいなら
 
 チケットを見直す
 適切な問題設定とタスクへの分解

Slide 23

Slide 23 text

● 最も実現したいことにフォーカスする
 ● 実現したい体験を複数の方法に置き換えてみる
 ● 実現する場所、実装する場所を置き換えてみる
 ● 体験を届けたいペルソナを絞る
 ● 実装上の制約を減らす方法を検討する
 ● 今、やるべきことか検討する
 ユーザーストーリーを見直す

Slide 24

Slide 24 text

つまりユーザーストーリーが
 
 適切か見直すこと
 適切な問題設定とタスクへの分解

Slide 25

Slide 25 text

開発のリソースや実装速度は
 
 一朝一夕では早くはならない
 適切な問題設定とタスクへの分解

Slide 26

Slide 26 text

リリースするために調整するのは
 
 スコープ
 適切な問題設定とタスクへの分解

Slide 27

Slide 27 text

適切なサイズな問題であれば
 
 タスクに分解できる
 適切な問題設定とタスクへの分解

Slide 28

Slide 28 text

1つのチケットが
 
 1回のリリースに紐づく
 適切な問題設定とタスクへの分解

Slide 29

Slide 29 text

1つのチケットが
 
 1回のリリースに紐づく
 適切な問題設定とタスクへの分解

Slide 30

Slide 30 text

1つのチケットで
 
 何回リリースしてもよい
 適切な問題設定とタスクへの分解

Slide 31

Slide 31 text

リリースの単位が
 
 最小になるようにタスクを分解する
 適切な問題設定とタスクへの分解

Slide 32

Slide 32 text

https://speakerdeck.com/soudai/developer-lifehack

Slide 33

Slide 33 text

解決したい問題にフォーカスして
 
 タスクを小さくすると自然と
 
 適切な問題設定のサイズになる
 適切な問題設定とタスクへの分解

Slide 34

Slide 34 text

1. 自己紹介
 2. 適切な問題設定とタスクへの分解
 3. 失敗できる仕組み
 4. 素早く、小さく、リリースする
 5. まとめ
 あじぇんだ

Slide 35

Slide 35 text

何度もリリースしたい
 
 なのになぜ、リリースまとめるのか
 失敗できる仕組み

Slide 36

Slide 36 text

失敗したくない
 
 
 失敗できる仕組み

Slide 37

Slide 37 text

失敗したくない
 ↓
 失敗のリスクがでかい
 失敗できる仕組み

Slide 38

Slide 38 text

● リリースのための準備が多いので1度で済ませたい
 ○ QAやレビューなどの品質担保
 ● リリースの影響範囲が広いでの1回で済ませたい
 ○ リリースのテスト範囲が広い
 ○ APIや画面の複雑度が高い
 ● とにかくリリースが怖い
 リリースをまとめたくなる要因

Slide 39

Slide 39 text

リリースを怖くしない
 ↓
 失敗できる仕組みを作る
 失敗できる仕組み

Slide 40

Slide 40 text

失敗できる仕組みの例 https://speakerdeck.com/soudai/release-safely-2 https://speakerdeck.com/soudai/release-safely

Slide 41

Slide 41 text

ここで時間があれば
 
 上のSlideを紹介する
 失敗できる仕組み

Slide 42

Slide 42 text

1. 自己紹介
 2. 適切な問題設定とタスクへの分解
 3. 失敗できる仕組み
 4. 素早く、小さく、リリースする
 5. まとめ
 あじぇんだ

Slide 43

Slide 43 text

Small is beautiful.
 
 小さいものは美しい
 素早く、小さく、リリースする

Slide 44

Slide 44 text

Small is beautiful. 小さなプログラムという発想 1. 小さなプログラムはわかりやすい 2. 小さなプログラムは保守しやすい 3. 小さなプログラムはシステム リソースに優しい 4. 小さなプログラムは他のツールと組 み合わせやすい https://amzn.to/33QPAdv

Slide 45

Slide 45 text

Make each program do one thing well.
 
 1つのプログラムには
 1つのことをうまくやらせる
 素早く、小さく、リリースする

Slide 46

Slide 46 text

Make each program do one thing well. 一つのことに集中することで プログラムに不要な部分をなくせる。 不要な部分があると、 実行速度が遅くなり、 不必要に複雑になり、 融通が効かない。 https://amzn.to/33QPAdv

Slide 47

Slide 47 text

Build a prototype as soon as possible.
 
 できるだけ早く試作する
 素早く、小さく、リリースする

Slide 48

Slide 48 text

Build a prototype as soon as possible. ソフトウェアには常に改善の余地はあるの はもちろんだし、時間的な制約などでその ソースコードは必ずしも最高の状態が保た れているわけではない。 ほとんどのソフトウェアは妥協の産物だ。 完成することはなく、ただリリースがあるだ けだ。 https://amzn.to/33QPAdv

Slide 49

Slide 49 text

Build a prototype as soon as possible. UNIXの考え方では、なるべくはやく第三のシス テムを構築するために、すばやく試作 することをおすすめしている。 直接、第三のシステムをつくることは できないのだ。 1. 短い機能仕様書を書く (3〜4枚程度) 2. ソフトウェアを書く 3. テストして書き直す。 満足できるまで、これを繰り返す。 4. 詳細なドキュメントを (必要なら)書く https://amzn.to/33QPAdv

Slide 50

Slide 50 text

Unixの哲学を
 
 どうやって実現するか
 素早く、小さく、リリースする

Slide 51

Slide 51 text

リリースしなくても解決できるなら
 
 それが最速で最小の方法
 素早く、小さく、リリースする

Slide 52

Slide 52 text

1. 自己紹介
 2. 適切な問題設定とタスクへの分解
 3. 失敗できる仕組み
 4. 素早く、小さく、リリースする
 5. まとめ
 あじぇんだ

Slide 53

Slide 53 text

仕事は段取り八分の
 
 仕事二分
 まとめ

Slide 54

Slide 54 text

失敗をできる仕組みを作る
 
 やる気の問題にしない
 まとめ

Slide 55

Slide 55 text

仕組みで問題を解決する
 
 
 まとめ

Slide 56

Slide 56 text

まとめ

Slide 57

Slide 57 text

目の前のコードを直すことができるのは
 
 自分たちだけ
 まとめ

Slide 58

Slide 58 text

リリースして価値を提供しましょう
 
 
 まとめ

Slide 59

Slide 59 text

ご清聴ありがとうございました
 
 
 まとめ