[XP]全員同席・チーム全体・情報満載のワークスペース・いきいきとした仕事の定義と運用事例(2024 Advent Calendar 11日目)
この記事は私をシニアエンジニアにしてくれた「真のアジャイル開発」体験記の11日目の記事です。このアドベントカレンダーは「ある機能開発チームでスクラム, XP, DevOps を一度に実践したら真のアジャイル開発ができた」という内容です。執筆者は全てプログラミングをするパンダです。
全員同席・チーム全体・情報満載のワークスペース・いきいきとした仕事
本記事ではXPの「全員同席」「チーム全体」「情報満載のワークスペース」「いきいきとした仕事」の定義と自分たちのプロジェクトでの運用を紹介します。
これらのプラクティスは現代では自然と実践できているチームも多いのではないでしょうか。チーム開発をうまくやろうというマインドセットも浸透していると考えられるため、各プラクティスの記述は簡単に済ませます。
全員同席
全員同席の定義
全員同席とは、チーム全体がオープンスペースに集まり、一緒に作業を進める形態のことを指します。ただし、これはプライバシーを完全に排除するものではありません。パーソナルスペースもきちんと用意されており、必要に応じて個人が集中できる環境も整えられています。それでも、個室に分かれて作業したり、各人が離れた場所で働く場合と比べて、チーム全体で同じ空間に集まって仕事をする方がコミュニケーションが円滑になる、という考え方に基づいています。
現代ではXP(エクストリームプログラミング)の技術的なプラクティスが注目されることが多いです。しかし、その主要プラクティスの最初に「全員同席」が挙げられていることからも、XPがコミュニケーションを非常に重視していることがうかがえます。
全員同席の運用
自分たちのチームでは「全員同席」をリモート環境下でも実現できています。Gatherを活用してメンバー全員がオンラインで同じ場所に集まることでコミュニケーションの円滑化を図っています。また、「情報満載ワークスペース」については、FigJamを使用したプロダクトバックログやスプリントバックログの管理を通じて実現されています。これにより、リモート環境でも物理的なオープンスペースにいるのと同じような効果を得ることができています。むしろオフラインで出社しているよりコミュニケーションの頻度が増えている実感もありました。
なお、これはXP本に記載されてはいませんが、日本企業の「大部屋方式」を参考にしたプラクティスであると私は考えています。
チーム全体
チーム全体の定義
チーム全体とは、プロジェクトを成功させるために必要なスキルを持つメンバーで構成される、クロスファンクショナルチームの考え方に基づいたものです。このプラクティスは、以下のようなチームマネジメントの観点から成り立っています。
まず、コンテキストスイッチによる思考の断絶を防ぐために、メンバーが他の業務やプロジェクトを兼任することは推奨されません。一つのプロジェクトに専念できる環境を整えることが、効率的で一貫性のある成果につながるからです。また、一つのチームの規模は12名以下の小さいチームにすることが理想的です。これにより、コミュニケーションの複雑さを軽減し、チーム内での意思疎通をスムーズに保つことができます。
さらに、プロジェクトで必要な特定のスキルや専門知識を持つ人材がいる場合は、たとえ一時的であってもチームに参加してもらうことが奨励されます。これにより、機能開発に必要なスキルや知識がチーム内で共有され、プロジェクトの進行が加速されるのです。
「チーム全体」という考え方はチームマネジメントのプラクティスなのです。
チーム全体の運用
このプラクティスはチームマネジメントに関する内容であり、自分はエンジニアリングマネージャー(EM)ではないため軽く言及する程度にとどめておきます。
自分たちのチームメンバーのほとんどは専任ですが、別のプロジェクトを兼任しているエンジニアが一名います。それ以外のメンバーはプロダクトオーナー(PO)、エンジニアリングマネージャー(EM)、バックエンドエンジニア、フロントエンドエンジニアで構成されています。このように、チーム全体としては比較的クロスファンクショナルな形を維持できています。
ただし、プラクティスで述べられているように、必要なスキルを持つ人材が一時的にでもチームに加わることについては、現実的な制約があると感じています。たとえば、インフラ関連の作業を進める際にインフラチームのメンバーに「1週間だけでも参加してほしい」と依頼することは、組織のリソースや優先順位の都合上、簡単ではないでしょう。
しかし、その場合でも短期間の「ペア作業」を通じてインフラの知識を共有してもらうだけでも十分な効果を発揮できると考えています。
情報満載のワークスペース
情報満載のワークスペースの定義
ワークスペースとは仕事を行う場所のことを指します。「情報満載のワークスペース」とは、その場にチームの仕事内容がわかるような情報を配置し、それを見た人が一瞬でチームの状況を把握できるようにすることを目的とした環境のことです。
例えば、開発中の機能(ストーリー)を付箋に書いて壁やボードに貼り付けて一覧化したり、「WIP(作業中)」や「DONE(完了)」といったエリアを設けて進捗を視覚的に示す工夫が挙げられます。また、カンバンボードを作る方法や、チャートを利用して進捗を数値で可視化する手段も考えられます。
情報満載のワークスペースの運用
この考え方は、スクラムにおける作成物である「プロダクトバックログ」や「スプリントバックログ」に対応しています。これらについてはすでにスクラム編で解説したため、ここでは詳しい説明を省略します。
なお、「作業内容の可視化には物理的な付箋が最適だ」といった意見を聞いたこともあります。しかし、自分が所属するチームでは最初からFigJamを使用してデジタルで管理を行っており、現在までの4ヶ月間、不便を感じたことはありません。全員が毎日オフィスに出社する状況ではない現代の働き方を考えると、物理的な方法に戻るよりも、このままデジタルツールを活用し続ける可能性が高いと考えています。
いきいきとした仕事
いきいきとした仕事の定義
いきいきとした仕事とは、長時間労働をやめて必要に応じてしっかり休むというプラクティスを指します。プロダクト開発においては、洞察力が欠かせないため、週に80時間働くよりも40時間だけ働く方が、価値ある仕事に集中できるとされています。
いきいきとした仕事の運用
長時間労働を避けることは、燃え尽き症候群(バーンアウト)の防止にも繋がります。
自分が所属するチームでは18時45分に夕会を設定し、そのタイミングで作業を切り上げて雑談を行う習慣があります。このような取り組みはまさにこのプラクティスに該当するものだと感じています。深夜まで働いてしまって翌日の午前中は何もできない状態に陥るのでは本末転倒です。
プロダクト開発はマラソンに例えられるように、毎日着実に結果を積み重ねることが最短ルートなのです。もちろん、実際のマラソンと同じように一時的にペースを上げる局面があるかもしれません。しかし、そこでスタミナ切れを起こしてゴールに辿り着けなくなってしまっては意味がありません。
また、余裕を持って働くことは緊急事態への対応力にも繋がります。緊急事態が発生した場合には当然ながら一時的にペースを上げる必要があるでしょう。普段から少しだけ余裕を持って働いている場合と、常に疲弊している場合では、緊急事態に対処するモチベーションやエネルギーに大きな差が出るはずです。余裕を持った働き方を実践することは、日常業務だけでなく突発的な事態への対応力を高める上でも重要だといえるでしょう。
次回はペアプログラミングの定義と運用を紹介します。
Happy Coding 🎉