KAKEHASHI Tech Blog

カケハシのEngineer Teamによるブログです。

フロー効率を重視した開発のすすめ

こんにちは。 AI在庫管理というプロダクトでフロントエンドの開発を担当している大村です。

AI在庫管理開発チームでは、顧客に素早く価値を提供するためにフロー効率を重視した開発を行っています。

本記事では、なぜフロー効率を高めようとしているのかと、どのような取り組みによってフロー効率を高めているかについて紹介します。

リソース効率とフロー効率

生産性の効率の考え方として「リソース効率」と「フロー効率」があります。

複数人の開発者がチームでソフトウェアを開発するシーンを想定し、リソース効率とフロー効率それぞれを重視した場合の仕事の流れを単純なモデルとして表現してみました。(ここでは仕事の1つ1つをタスクと呼ぶことにします)

これだけ見ると、リソース効率重視の方がムダなくタスクを消化しているように思います。 しかし、ソフトウェア開発の現場では以下のような状況が頻繁に発生します。

他の開発者のレビューが必要な場合

着手可能なタスクに制約がある場合

さらに、これらの状況が複合的に発生することもあり得ます。

このような場合にはフロー効率重視の開発を行うことで仕事の流れがシンプルになり、タスクを順番に素早く完了させることができる可能性があります。

タスクを素早く順番に完了させることができれば、ソフトウェアの変更を小さな粒度で切り出して素早く顧客に提供することに繋がります。

それでは、どうすればフロー効率を重視した開発を行うことができるのでしょうか。私が考えるポイントは以下の2つです。

  • 取り掛かる仕事を優先度順に一列に並べる
  • できる限り全員で同じ仕事に取り掛かる

以降では私たちのチームの具体的な取り組みを紹介していきます。

フロー効率を高めるための取り組み

取り掛かる仕事を優先度順に一列に並べる

フロー効率を重視する場合、チームが常に1つの仕事に取り掛かっている状態を目指します。

そのため、開発に取り掛かる前には必ずチーム全体としての優先順位を決めていきます。優先度順に並べたタスクはバックログとして管理し、開発者全員が常に確認できるようにしておきます。

なお、タスクの担当者は厳密に設定する必要はなく、チーム全体で受け持つものとして暫定的に割り当てる程度に留めるようにしています。

できる限り全員で同じ仕事に取り掛かる

モブプログラミング

開発のフェーズでは積極的にモブプログラミング(以下、モブプロ)をしながら実装していくようにします。 モブプロはテキストベースの非同期コミュニケーションよりもリソース効率は低下しますが、同期的にコミュニケーションをとることで以下のようなメリットが得られると考えています。

  • 実装内容だけでなく、背景や意図を参加者全員で認識合わせできる
  • 参加者からのフィードバックをすぐに反映できる
  • 参加者間の知識の差を埋めやすく、経験の浅いメンバーをフォローしやすい

私が所属するチームでは以下のようなかなり軽めのフローで実践しています。

  1. 担当者がモブプロしたくなった時に他のメンバーに声をかける
  2. その会のドライバーを決める
  3. ドライバーが画面共有しながらコーディングする(参加者も適宜気になったことを話す)
  4. タスクが完了するか時間枠を使い切ったら終了する

モブプロの一般的なプラクティスをどの程度採用するかなど、方法については様々な意見があるかと思います。まずは、同期的にコミュニケーションをとって全員の認識を揃えていくということが重要だと考えています。

モブレビュー

コードレビューのフェーズでもモブプロ同様、複数人でレビュー(モブレビュー)を実施しています。 モブレビューは以下のような流れで行っています。

  1. 担当者がレビューして欲しくなった時に他のメンバーに声をかける
  2. 担当者が画面共有しながら Pull Request のコミットを順番に共有する
  3. 気になる点があった人は都度質問し、議論がまとまったところで Pull Request に記録としてコメントを残す

やり方はシンプルですが、細かい指摘(nits)や個人的意見(imo)を気軽に伝えることができるため、非常に効果を実感しやすくオススメです。

工夫していること

協力して問題解決する場にする

モブプロやモブレビューでは、全員が困っている人を支援して課題解決していく場を目指します。そのため、以下のような点に注意しています。 - どのような場合でもHRTを尊重する - 始める前よりも課題を大きくしたり増やしたりしない

これらを継続することで、モブプロやモブレビューが問題解決につながるという成功体験を積み上げることができ、メンバーが主体的にモブプロやモブレビューを始めることにも繋がっていくのではと考えています。

モブプロやモブレビューを強制しない

以下のようなタスクであれば、モブプロなしで単独で進めています。

  • 開発者間で実装方針の認識があっている
  • 実装内容が複雑でない
  • 他のタスクと独立している

また、ミーティングの都合等でメンバーが全員揃わないことも多々あるため、あくまで可能な範囲での実践に留めるようにしています。

モブプロやモブレビューの時間を固定しない

モブプロをしたくなるタイミングや、レビュー依頼を出すタイミングは手を動かしてみないとわからないことが多いため、予定は確保せず必要な時にいつでも開催するようにしています。

開催する時には、まず相手にコミュニケーションツールでシグナルを送り、相手から応答が来たタイミングで通話を始めるという流れを取っています。(AI在庫管理では Gather というツールを活用しています。)

まとめ

フロー効率を高めるための取り組みについて、チームの事例を元に紹介しました。

  • フロー効率を重視した開発が効果的な場合がある
  • フロー効率を高めるポイントは以下の2つ
    • 取り掛かる仕事を優先度順に一列に並べる
    • できる限り全員で同じ仕事に取り掛かる
  • 具体的な取り組みとしてはモブプロやモブレビューが効果的

この中でも、モブプロやモブレビューは気軽に始めやすいのでぜひ試してみてはいかがでしょうか。

最後まで読んでいただきありがとうございました。