本記事は、エンジニア組織の開発生産性・開発者体験向上の取り組みをシェアしよう! by Findy Advent Calendar 2023 に参加しています。
はじめに
本記事では、バーチャルオフィスの運用改善を通して、開発速度の向上と開発生産性の改善を試みたという内容になっております。
改善前の状態
弊社ではほぼ完全リモートワークを実施しております。
オフィスに出社するのは週1回程度(これも義務ではありません)、リモートワーク時にはバーチャルオフィス環境 Gatherにログインして作業することがルールとなっています。
一般的な企業と同様にコロナ禍の対応でリモートワーク制に移行したものの例に漏れず生産性の低下が課題となり、リモートワーク時代に適応したワークルールを制定したり上述のバーチャルオフィスを導入したりして生産性の向上を図っています。
去年弊社代表がリモートワーク時代のワークルールについての記事を公開しています。ぜひ併せてご覧いただければと思います。
改善前の課題
上記ワークルールの制定、環境の改善によりリモートワーク時のコミュニケーションロスは徐々に改善されていきましたが、それに応じた弊害や新たな課題が発生してきました。
全員が同じスペースに集まると会話の割り込みがしにくい
ワークルール制定時にバーチャルオフィスも模様替えし、中央のスペースにメンバーが自然と集まるような導線を作りました。
弊社にはザッソウ文化1があり、ザッソウを行うために自然と全員が真ん中のザッソウスペースに集まるようになりました。出勤時はプロジェクトごとのスペースで作業するが、ザッソウするために中央のスペースに移動し、以後退勤までここで相談しながら作業する、という流れが出来上がり、ザッソウスペース設置前よりも格段にメンバー間の会話が増えました。
ところがこのザッソウスペースの欠点として、同じチャンネル内で全員が会話することになるので他の誰かが相談している最中は別のメンバー同士で話しかけにくくなってしまいました。ちょっと声かけしたい場合でも現在相談しているメンバーの話を遮る形になるため声掛けに躊躇が生まれてしまいます。社内チャットツールを使って席を移動するようお願いしたりすることになりますが、わざわざチャットツールで呼び出しするのも面倒ですし、そもそもチャットに相手が気づかない可能性もあります。
新たなワークルールへの対応
弊社ではワークルールに沿った行動ができているか、ルールを改善する点がないかをワークルールミーティングと称して定期的にチェックし、ルール準拠や改善のためのアクションプランを立てて行動しています。その中で出てきた新たなルールや課題に対応する必要がありました。
毎日のゴール設定
就業開始時にその日のゴール(ここまで作業を進める、という目標)を設定しようという取り組みが始まりました。これはあるメンバーが個人的に始めたことでしたが良い取り組みだということで全員が真似して実施することになりました。具体的には社内チャットツールにゴール設定、ゴール達成状況、最終的にゴールが達成できたかどうかを投稿しています。この取り組みに加え、チャットだけでなくビジュアル的にゴール達成が可視化できた方がよりモチベーションがあがるんじゃないか?という意見がバーチャルオフィス運用見直しのきっかけになりました。
レビュー速度の向上
弊社はソースコード管理にGithubを使用し、GithubFlowで開発フロー管理を行っています。コードの修正をmasterやdevelopブランチにマージする際はプルリクエストを行います。
プルリクエストは以下のルールに沿ってレビュー、マージされます。
- CIで行うユニットテスト、システムテストを全てpassすること
- プルリクエスト時に設定したレビューア全員のapproveが必要
- 確認事項や質問がある場合、コメントする前にできるだけ対話を行うこと
- 最後にレビューをapproveしたレビューアがプルリクエストをマージすること
特に3.の事項に関して、先に挙げたザッソウスペースにおける割り込み発言のしにくさが原因で確認事項や質問が遅れたり、質問できる状態にないから仕方なくコメントに質問を記載したり...ということをしているとプルリクエストからマージまでの時間がどんどん遅くなっていきます。何か質問や確認事項があったら前レビューアに一度で説明できればマージまでの時間短縮になるよね?という意見が出ました。
バーチャルオフィスの改善
上述した3つの課題を解決するために新たなワークルールの設定などを行いました。その中でバーチャルオフィスのレイアウトを変更や運用の工夫で改善しようとした試みを紹介いたします。
1.会話に割り込みしにくい→バブル機能で解決
Gatherには、同じチャンネル内にいても特定のメンバーと1対1で会話するためのバブルという機能が存在します。他のチャンネル内の会話から自分とバブルの相手を一時的に遠ざけてくれます。
この画像は共有スペースで @TomoProg さんとバブルで会話している様子です。会話相手以外のビデオは半透明になり、音声もかなりボリュームが落とされます。完全に聞こえなくなるわけではないのが特徴で、共有スペースで他のメンバーの音声に邪魔されず直接会話をしていることが自分からもバブル相手以外のメンバーからもわかります。
バブル機能を発見したことで、共有スペースでザッソウが展開されている間に他のメンバーに個別に話しかけやすくなりました。
2.毎日のゴール設定の可視化→ゴール到達席を作成
設定したゴールに到達したかどうかの可視化とちょっとしたモチベーションの向上を目的として、「ゴール未達席」と「ゴール到達席」を用意しました。
下の大きな円卓がゴール未達席、上の豪華な絨毯が引いてある席がゴール達成席です。ゴール達成のご褒美として大きなパンとフラペチーノ®️がおいてあります2。
上に移動するのが誇らしくなれば、ゴール達成のためのモチベーション向上につながりますし、現時点で誰がゴール達成できたか、できていないかの指標にもなり、もし作業が遅れているメンバーがいればヘルプに入ったり困りごとがないかを聞いてみる機会になっています。
なお、私は一度「Gooooooooool!!!」と叫びながらゴール到達席に移動したところ、他メンバーから大変白い目で見られたので以後自重するようにしています。しょんぼり。
3.レビューの迅速化→レビュー専用スペースを作成しレビューファースト開発を確立
レビューの迅速化、特に質問や確認事項の解決スピードアップを図るため、専用のレビュースペースを作成しました。
左から、タスクバラシレビュー席、二割共有レビュー席、プルリクエストレビュー席となっています。
また各テーブルとも上下でチャンネルが分かれており、同時に2組のレビューを行うことが可能です。
各段階でレビューが必要になったら、一言声かけと共に上のレビュー席へ移動します。レビューアとしてリクエストされたメンバーはとりあえず一緒に上についていき、対話しながらレビューを実施します。レビュー席では他の割り込みがない状態になりますのでレビューに集中することが可能となっています。
記事統合時点でのワークルールではレビューが発生したら自分のタスクよりもレビューを優先し、できる限り早くマージまで進めることを求めています。
もちろんレビューアは現在の作業を中断することになるのでレビューア側の負担感は増しますが、プルリクエストに対してレビューが遅延するとエンジニアのモチベーションが下がってしまうのでよろしくないというレポートがあります。3
また開発メンバーはプロジェクトリーダーを含め同じプロジェクトメンバーから分け隔てなくレビューアとしてアサインしています。メンバー全員がレビューイでありレビューアとなり得ます。こうして双方の立場を経験することにより、どのくらいの粒度でプルリクエストを出すとレビューアが楽になるか、適切なレビューを行なってもらえるかが経験的にわかってきます。結果的にプルリクエストが大きくなりにくくなり開発速度、レビュー速度ともに向上することも狙いとしています。
バーチャルオフィスのレイアウト変更からちょっと話は逸れましたが、このレビュー席設置の取り組みは概ねうまく運用できていて、目に見えてプルリクエストからレビュー完了までの速度が向上しました。
おわりに
いかがだったでしょうか。
「リモートワークは生産性を下げる」として世間的には廃止の方向へ向かっていると感じていますが、フルリモートワークでもバーチャルオフィスの運用と工夫次第で生産性の低下を十分食い止めることができると考えています。
IT開発は刻々と進化していきます。それに伴い仕事の進め方、ワークルールの改善も日進月歩で進んでいきます。この変化に合わせてバーチャルオフィスも変化していく必要があるでしょう。
何せ仮想空間なので席替え、引っ越し、レイアウト変更は現実のオフィスより自由度があります。リアルではできないようなオフィスレイアウトで少しでも作業効率、生産性を上げられる要素があれば試していけたら良いと思っています。
それでは今後も良いリモートワークを!アデュー!
-
ザッソウとは「雑」な「相」談の略で、困りごとがあったらいつでも他メンバーに相談しても良い、相談を受けたメンバーは対応できる内容であれば断らないという仕組みで、ワークルールに明記されています。 ↩
-
ごほうびは仮想的なアイテムなので現物は各自でご用意ください。 ↩
-
この記事はコードレビュープロセスの負荷や時間を減らすために取り組んでいる10のTipsから引用させていただきました。 @nipe0324 さんありがとうございます! ↩