Kyashに入社して半年くらい経ちました - Konifar’s WIP を読んで Pull Request を細かく分ける開発スタイルをやってみた。

手順としては以下の通り。

  1. 機能追加のベース PR を作る
  2. 機能追加のタスクを詳細に分解する
  3. 分解したタスクをチェックリストに箇条書きする
  4. 個別の PR に分けて、ベース PR に向ける
  5. 個別の PR を各個撃破する
  6. ベース PR が完成、レビューしてもらう

この開発スタイルの特徴

  • 最初にタスクを後はやるだけというレベルまで分解する
    • 考慮漏れ・対応漏れを防げる
  • 分解したタスクは個別の PR に分ける
    • ベース PR を見ればタスクの全体感、対応の方向性を確認してもらいやすい
    • 何が終わって何が終わっていないかわかりやすい
  • 個別の PR ごとに見積もりを行う
    • 個別の PR ごとなら精度高く見積もりできるので機能追加の見積もりが出しやすい
    • 個別の PR の予実で機能追加の見積もりを修正しやすい
  • 個別の PR は 1日 〜 5日 で完了できるように分ける
    • 毎週、進捗を実感できるので達成感がある、精神衛生に良い
    • 完了できない場合は何か問題が起きているシグナル
  • 個別の PR はレビューなしでセルフマージする
    • 個別の PR では全体最適かレビューワーが判断できないため
    • その PR を前提とした次の PR に着手しにくいため
    • 個別の PR を複数メンテするコストが大きいため(develop への追従を各ブランチでやるのは面倒)

@konifar さんとはやり方は違うかもしれないけど、 Pull Request を細かく分ける開発スタイルをやって良かった。 進捗を実感でき、進捗を共有する際に PR の粒度で伝えられるのでコミュニケーションがスムーズで、見積もり精度へのフィードバックをすばやく得られる。