Money Forward Kyoto Advent Calendar 2020、22日目担当です。
こんにちは! 京都開発拠点でエンジニアリングマネージャ 兼 バックエンドエンジニアをしている大倉(@okeicalm) です。 スクラム開発で マネーフォワード クラウド会計Plus の機能改善を実現するチームのマネジメントを担当しています。
私たちのチームではスクラムの価値観、プラクティスを取り入れながらプロダクトを開発しています。 スクラムガイド2020(pdf) でも以下のように言及されているスウォーミングについて、私たちのチームでも実践していますので、『やってみてどうだったか』についてお話していきます。
開発者が計画を調整できるのは、デイリースクラムのときだけではない。 スプリントの残りの 作業を適応または再計画することについて、より詳細な議論をするために、開発者は一日を通じて頻繁に話し合う。
スウォーミングとは
スウォーミングの概要については、こちらのブログ記事 の解説が大変よくまとまってらっしゃったので引用させて頂きます。
スウォーミング (Swarming) とは,無数の虫が何かの場所や標的に群がって何かを行うことであり,ソフトウェア開発の文脈では,一つのタスクや開発トピックにチームの全員 (全員ではなくても,多人数) で取り組むことを指します. 最近しばしば話題に上がるモブ・プログラミングも概念としてはスウォーミングのひとつといえますが,もっと幅広く,ひとつのユーザーストーリーにチーム全体で取り組むことがスウォーミングという言葉がソフトウェアの文脈で一般的に指す活動です.
スウォーミングの実践
私たちのチームではリソース効率よりもフロー効率を重視して開発を進めており、優先度の高いユーザーストーリー(開発項目)から順番に完了させて行くことを重視しています。
また、私たちのスプリントのタイムボックスは1週間であるためスプリント完了時に仕掛かり(完了しなかった開発項目)を作らないためにはタイムリーに課題を解決していくことが重要となります。 スクラムでは、プロダクトオーナーが優先度を正しくハンドリングできる状態を保つことがプロダクト価値を高めるために重要であると思います。 仕掛かりが残ってしまうと、次のスプリントでは仕掛かりから開発することになります。 その時に本当に優先度の高いものから着手できないリスクが混入してしまうため、避けることが推奨されています。
上記の課題を解決するために私たちのチームが行なっているスウォーミングの実践パターンは以下の通りです。
ここの仕様わからないなぁ
私たちのチームではリファインメントやスプリントプランニングの中でプロダクトオーナーやチームメンバーから情報を出し合い、なぜ作るのか、何を作るのか、ということをすり合わせてから開発しています。
しかし、どうしても開発を始めてみると「これ、どういう仕様にしたら良いんだっけ?」と迷うことがあります。このような場合、プロダクトオーナーやデザイナーを気軽に呼んで話をすることでシュッと合意を形成して開発を前に進めています。
ここの実装わからないなぁ
一人で実装していて、ここの実装わからないなぁ、良い設計が思いつかないなぁ、というタイミングがあると思います。 このような場合、私たちのチームでは気軽にSlackで呼びかけて集まれる人で集まって壁打ち、もしくはそこからペアプロ・モブプロを始めることで解決に導いています。
このPull Request見て欲しい!
Pull Requestのレビューをチームメンバーに依頼していると、どうしてもレビューが滞ってしまうタイミングというのは存在してしまいます。 そんな時、私たちのチームでは優先度の高い、クリティカルパスとなるPull Requestのレビューを依頼している人がメンバーを集めて同期的なレビュー会を開催することでレビュー待ち時間を削減しています。
モブプロしよう!
ユーザーストーリーによっては業務知識、既存コードのノウハウが特定のメンバーに集まっているケースがあります。 ノウハウのあるメンバーが実装して、他のメンバーがPull Requestのレビューをする、という形式では、どうしてもノウハウの共有が進まないですし、レビューコストが高くマージまでのリードタイムが長くなってしまいます。 このような場合、Pull Requestのマージまでの時間の短縮、およびスキルトランスファーの促進を目的としてモブプログラミングで開発を進めています。
Discordの活用
上記のスウォーミングを実施するための鍵となるツールがあります。 それは Discord です。 (私たちのチームではディスコと呼んでいます)
Slackでディスコ集合を呼びかける面々
マネーフォワードではコロナ過においてオンラインとオフラインを組み合わせた働き方をしています。 そのため、オンラインでも良好なコミュニケーションを取り続けるための工夫を私たちのチームでも試行錯誤してきました。
そんな中で出会ったのがDiscordです。
Discordを以下のようなルールで運用することでスウォーミングが起こりやすい環境を整えています。
- 出社したら必ずDiscordにログインする
- 作業Roomや打合せRoomが用意されているので、必要に応じてRoomにjoinする
- 作業Roomで何をやっているかを連絡する
上記の運用により、以下のような状態を作れています。
- 今誰が何をやっているのかが一目でわかる
- 困った時に聞きたい人がいるRoomに入ってすぐに会話を始められる
- 部屋を指定して集合を呼びかければすぐに集まれる
会議室や作業部屋は京都に実在する寺社仏閣やイベント会場の名前になっています。
Zoom も利用はしているのですが、URLを発行して、そこに接続して、という手間がかかる点や、ブレイクアウトルーム間を自由に行き来できるような機能がないことからDiscordの方が快適だなぁ、と感じています。 開発チームでうまく運用できている知見を他のチームにも共有したところ、カスタマーサクセスチームの皆さんもDiscordの利用され始めました。同じワークスペースにいるので部署を越えた交流も始まっています。
スウォーミングの効果
上記の通り、スウォーミングを実施することでチームにとって以下のような効果がありました。
- チームとして課題の解決スピードが上がり、より多くのユーザーストーリーを世に送り出すことができる
- チームメンバー間でのスキルトランスファーが促進される
- チームメンバー間でのコミュニケーションが増え、チームビルディングが促進される
まとめ
私たちのチームで実践してきたスウォーミングについて紹介させて頂きました。 誰しも、時として周りに頼らず、最後まで自分一人で頑張りたいと思う瞬間もあるかもしれません。 しかし、スクラムチームとしてユーザーさんに価値を届けるという目的のためにチームメンバーを積極的に頼っていこう、という価値観がチーム内で共有されているからこそこういうアクションができるのかな、と考えています。 これからも積極的にスウォーミングしてユーザーさんにたくさんの価値を届けられるチームになっていきたいと思います。
23日目は櫻さんが 京都開発拠点におけるインターン生の活躍 について書いてくれますのでお楽しみに!
今年も本家アドベントカレンダーもやっています! https://adventar.org/calendars/5401
京都アドベントカレンダーはこちらです。 https://adventar.org/calendars/5425
京都開発拠点では引き続き積極的に採用を行っております。 ご応募お待ちしております!
【サイトのご案内】
■マネーフォワード採用サイト
■Wantedly
■京都開発拠点
【プロダクトのご紹介】
■お金の見える化サービス 『マネーフォワード ME』 iPhone,iPad Android
■ビジネス向けバックオフィス向け業務効率化ソリューション 『マネーフォワード クラウド』
■おつり貯金アプリ 『しらたま』
■お金の悩みを無料で相談 『マネーフォワード お金の相談』
■だれでも貯まって増える お金の体質改善サービス 『マネーフォワード おかねせんせい』
■金融商品の比較・申し込みサイト 『Money Forward Mall』
■くらしの経済メディア 『MONEY PLUS』