Slide 1

Slide 1 text

どうして手を動かすよりも チーム内のコードレビューを 優先するべきなのか 2024-12-22 PHP Conference Japan 2024

Slide 2

Slide 2 text

開発生産性改善のために 「コードレビュー最優先」 よく耳にするはなし ※コードレビューが必須な開発フローを前提とします

Slide 3

Slide 3 text

「コードレビュー最優先です!」

Slide 4

Slide 4 text

• 今の自分の作業を中断してまで? 「コードレビュー最優先です!」

Slide 5

Slide 5 text

• 今の自分の作業を中断してまで? • ちょっ、これ終わるまで待って 「コードレビュー最優先です!」

Slide 6

Slide 6 text

• 今の自分の作業を中断してまで? • ちょっ、これ終わるまで待って • コンテキストスイッチが...... 「コードレビュー最優先です!」

Slide 7

Slide 7 text

• 今の自分の作業を中断してまで? • ちょっ、これ終わるまで待って • コンテキストスイッチが...... 「コードレビュー最優先です!」 と いう疑問に答えたい

Slide 8

Slide 8 text

我々(開発者)の 仕事とは何か?

Slide 9

Slide 9 text

我々(開発者)の仕事とは?

Slide 10

Slide 10 text

• プルリクエスト(以下、PR)を出すこと? 我々(開発者)の仕事とは?

Slide 11

Slide 11 text

• プルリクエスト(以下、PR)を出すこと? • 開発した機能のテストをすること? 我々(開発者)の仕事とは?

Slide 12

Slide 12 text

• プルリクエスト(以下、PR)を出すこと? • 開発した機能のテストをすること? • チケットを DONE のレーンに持っていくこと? 我々(開発者)の仕事とは?

Slide 13

Slide 13 text

• プルリクエスト(以下、PR)を出すこと? • 開発した機能のテストをすること? • チケットを DONE のレーンに持っていくこと? 我々(開発者)の仕事とは? △

Slide 14

Slide 14 text

• プルリクエスト(以下、PR)を出すこと? • 開発した機能のテストをすること? • チケットを DONE のレーンに持っていくこと? これらは仕事の「過程」にすぎない 我々(開発者)の仕事とは? △

Slide 15

Slide 15 text

突き詰めれば「(誰かにとっての)価値を出すこと」 開発者であれば「機能をリリースすること(※)」 我々(開発者)の仕事とは? ※1...「"リリース作業"をすること」ではない ※2... リリースしたものに価値があか、という別の論点はあるが今回は割愛

Slide 16

Slide 16 text

で、

Slide 17

Slide 17 text

https://pyama.fun/archives/4751 いい話

Slide 18

Slide 18 text

仕事は終わらせてはじめて価値になる

Slide 19

Slide 19 text

• 開発者は機能をリリースして はじめて価値(になる可能性が)がうまれる 仕事は終わらせてはじめて価値になる

Slide 20

Slide 20 text

• 開発者は機能をリリースして はじめて価値(になる可能性が)がうまれる • (結果にだけ着目すると) リリースするまでは仕事をしていないのと同じ状態 仕事は終わらせてはじめて価値になる

Slide 21

Slide 21 text

• マージされていない PR • 誰かの動作確認待ちの機能 • 投げたまま返信をもらえていない確認事項 • etc. ...... これまでどれだけ時間をかけたかに依らず まだ価値になっていない仕事(のようなもの)

Slide 22

Slide 22 text

で、本題

Slide 23

Slide 23 text

どうしてコードレビューを優先するべきなのか

Slide 24

Slide 24 text

「自分の実装の手が止まること」は個の観点 • 自分のタスクを DONE にすることが仕事ではない 他人が待っているものを優先的に終わらせた方がよい • 自分より他人の行動の方がコントロールしにくいから どうしてコードレビューを優先するべきなのか

Slide 25

Slide 25 text

「自分の実装の手が止まること」は個の観点 • 自分のタスクを DONE にすることが仕事ではない 他人が待っているものを優先的に終わらせた方がよい • 自分より他人の行動の方がコントロールしにくいから どうしてコードレビューを優先するべきなのか

Slide 26

Slide 26 text

• プルリクエスト(以下、PR)を出すこと? • 開発した機能のテストをすること? • チケットを DONE のレーンに持っていくこと? これらは仕事の「過程」にすぎない 再掲・我々(開発者)の仕事とは?

Slide 27

Slide 27 text

「自分の実装の手が止まること」は個の観点 • 自分のタスクを DONE にすることが仕事ではない 他人が待っているものを優先的に終わらせた方がよい • 自分より他人の行動の方がコントロールしにくいから どうしてコードレビューを優先するべきなのか

Slide 28

Slide 28 text

自分 同僚 レビュー依頼 作業中 ミーティング 作業中 このようなシチュエーション

Slide 29

Slide 29 text

自分 同僚 ミーティング 自分の作業を優先した場合 コードレビュー 作業中 次の作業

Slide 30

Slide 30 text

自分 同僚 ミーティング 作業再開 コードレビューを優先した場合 コードレビュー 次の作業

Slide 31

Slide 31 text

あなたの作業そのものが価値と期待されているとき • 組織内で充分に分業されている • コード等の成果物にお金が支払われる あなたの作業が価値を生むためのボトルネックのとき • 完了するまで他の人の手が止まってしまう作業 逆に、コードレビューを優先すべきでないとき

Slide 32

Slide 32 text

リリース優先で品質を犠牲にして良いという話ではない • 品質を犠牲にすると近い未来にスピードも犠牲になる • そもそも品質を犠牲にしてスピードを上げられるか? 余談 - リリースすることが仕事だとして

Slide 33

Slide 33 text

リリース優先で品質を犠牲にして良いという話ではない • 品質を犠牲にすると近い未来にスピードも犠牲になる • そもそも品質を犠牲にしてスピードを上げられるか? how は仕事の目的ではないが 職業倫理上 how に責任を持たなければならない 余談 - リリースすることが仕事だとして

Slide 34

Slide 34 text

登壇: 寄稿: 岡田 正平/おかしょい X: @okashoi GitHub: @okashoi