先週、アサインされたタスクが結構サクッと進めることができました。この流れを再現できるように、自分なりに工夫したことを書き残しておこうと思います。
前提
前提として、今のチームでは次のようなサイクルで開発をしています:
- タスクのアサイン
- 実装
- レビュー(エンジニア)
- QAエンジニアによるテスト
- もしここで不具合が見つかった場合、修正→QAエンジニアによるテスト→エンジニアによる再レビューの順で対応する
- マージ
一工夫その1: 作業サイクルに基づいて開発計画を立てる
少し前に、実装に手間取ってしまった結果、レビューとQAエンジニアによるテストが後ろにズレて、リリース前に大慌てになった出来事がありました。 この対応として、タスクに着手する前に、先の開発サイクルに基づいて「これくらいのスケジュールで進めよう」という開発計画を立てるようになりました。例えば…
- 実装開始: 3月3日
- レビュー依頼: 3月5日
- QAエンジニアによるテストの依頼: 3月6日
- マージ: 3月7日
こういうさっくりした粒度であっても、ないよりは全然マシでした。毎日の朝会でも進捗の共有がしやすくなりましたし、「予定よりもスムーズに行っているので、次のタスクの着手が早まりそうです」とか、「少し手間取っているので、予定より遅れそうです」といったアラートも出しやすくなりました。
一工夫その2: 検証項目を丁寧に書く
タスクはIssueに書かれていて、「このような機能を実装したい」という要件や、デザインのモックなどが記載されています。 これをもとに開発を進めたのに、QAエンジニアによるテストの段階で、仕様やエッジケースの考慮漏れが原因となるフィードバックを大量にいただくことがありました。
これを防ぐために、検証項目をめちゃくちゃ丁寧に書くようにしました。これによって、
- 仕様を「検証項目」の形で、改めて整理することができる
- 結果として、齟齬の発生を防ぐことに繋がる
- レビュワーが機能のイメージを持ちやすくなる(検証項目を通して、どのような操作が可能かが伝わる)
- エッジケースの考慮漏れなどにレビューの段階で気づいてもらえる
- 当初のIssueから意図的に変更した点について、QAエンジニアに伝えることができる
- 実装中に得た気づきやフィードバックによって変更した点を、当初のIssueに転記しそこねる(結果としてQAエンジニアへの共有が漏れる)ことが何度か起きてしまった
- そのときに、「Issueの仕様との差分は意図的なものですか?」と確認いただいていた…
- 「検証項目」を用意する際に、「ここは当初のIssueから差分があります」と記載することで、QAエンジニアにもれなく伝えることができた
- 実装中に得た気づきやフィードバックによって変更した点を、当初のIssueに転記しそこねる(結果としてQAエンジニアへの共有が漏れる)ことが何度か起きてしまった
...という効果がありました。
こういうポイントを意識するようになってから、QAエンジニアによるフィードバックの数はだいぶ減ってきた(かつ、修正内容も軽微になってきた)という実感があります。これが「サクッと進」んだと感じた理由なのかな、と思いました。
まとめ
…なんというか、こうやってブログに書いてみると全然大したことないというか、「それはそう」みたいな感じはしますネ。 一方で、プロダクト開発において銀の弾丸はなくて、根本から丁寧にやるのが案外一番の近道なのかもしれないな、と感じました。