ワークフローによって得られる充実感と利点

敬遠されがちな「プロセス」にきちんと向き合いましょう。確立されたワークフローなしでは何も達成できません。

Dan Radigan Dan Radigan
トピック一覧

ソフトウェアチームはプロセスを使用して作業を完了します。そのプロセスを標準化すること、つまりワークフローとして確立することで、明確に構造化され、反復可能になり、拡張性が実現されます。アトラシアンでは、ワークフロー管理に反復型アプローチを採用しています。ゴールをより短期間で達成し、チーム文化を体現できるからです。アトラシアンはアジャイルワークフロー管理のエキスパートを自任しており、お客様がエキスパートになるお手伝いもしたいと考えています。

まずはシンプルなものから、今すぐ始めましょう

チームにワークフローを実装するときには、必ずシンプルなものから始めましょう。数週間かけて過剰なエンジニアリングを行いたいという誘惑と戦ってください。複雑すぎるワークフローは理解しにくく、採用も適応も困難です。ソフトウェアチームには次の基本的なワークフロー状態を使用することをお勧めします。

To Do

まだ開始していない作業

進行中

チームが活発に見ている作業

コードレビュー

完了し、レビュー待ちの作業

完了

完全に終了し、チームの「完了」の定義と一致している作業

課題トラッカーでは、これらのステータスの間で遷移を行います。ワークフローは、これらのトランジションによって構成されています。

アジャイルワークフロー|アトラシアンアジャイルコーチ

ソフトウェアチームによっては、ステータスをより正確に把握するために追加の状態をワークフローに設定することもあります。

QA 待機中

実行済みで、テスターによるレビュー待ちの作業 (詳細についてはアジャイルテストに関する記事をご覧ください)。

マージ準備完了

レビューが完了し、マスターまたはリリースブランチへのマージ準備が完了しているコード。

ワークフローの状態にそれぞれ異なるメンバーが対応する必要はありません。アジャイルチームが成熟するにつれ、開発者が対応する作業が増加します (デザインからデリバリーまで)。自律性のあるチームがさまざまな作業を行えることは、アジリティの証です。

チームのふりかえりでそれぞれの問題点について話し合いましょう。チームの価値観はプロジェクトやテクノロジースタック、作業方法によって少しずつ異なることに注意してください。だからこそ、柔軟なワークフロー設定が可能な課題管理システムを選択することが重要なのです。チームの多くは、それぞれの作業スタイルをあきらめて特定のツールセットに合わせています。それでは全員が不満を募らせることになります。チームメンバーはそのツールの使用を避けるようになり、チーム全体に不満がたまって、多くの場合は混乱が生じます。士気が低下すると、生産性が低下します。この二重苦はなんとしてでも避けたいものです。

アジャイルを初めて導入する、または部門横断型のスキルを持たないチームのワークフローは、「小さなウォーターフォール」になりがちです。たとえば、デザインは模型を使った作業項目から始まります。開発で実装し、テストで品質を確認します。前の状態が完了しないと、次の状態に進むことはできません。このお馴染みの手法がウォーターフォールです。しかし、アジャイルワークフローによってチームを解放すれば、開発はもっと簡単になります。

ワークフローの最適化

基本ワークフローに慣れ、カスタマイズできるようになったら、チームのプロセスの作業タイプに合わせてステータスを作成しましょう。発案、デザイン、開発、コードレビュー、テストは機能的に異なり、個々のステータスとすることができます。作業のフェーズがはっきりわかるような無駄のない一連のステータスを目指してください。

プロジェクトステータスは、組織内の他の部門と共有することもできます。ワークフローを構築するときには、レポートすべき重要な指標と、チームメンバー以外にとっての関心事項について考えましょう。例えば、適切にデザインされたワークフローは次の疑問に対する答えをもたらします。

  • チームはどのような作業を完了したか?
  • 作業のバックログは増加しているか、それともチームのペースと揃っているか?
  • 各ステータスにどれくらいの項目があるか?
  • チームの足を引っ張っているボトルネックはあるか?
  • 平均的なタスクを完了するのにどれくらい時間がかかっているか?
  • 初回で品質基準に合格しなかった作業項目はどれくらいあったか?

ワークフローを最適化するための次のステップは、ワークフローを通じて安定した作業の流れを作ることです。進行中の作業 (WIP) の制限は、ワークフローの特定の状態における課題の最小数と最大数を決定します。これによってワークフローのそれぞれの状態の作業量を、チームを最大限に活用でき、優先順位のやりくりで集中力を失わない程度にすることができます。進行中の作業の制限を適用すると、チームのどのプロセスがパイプライン全体の作業を遅らせているのかがすぐにわかります。チームが進行中の作業の制限によってうまく最適化できるようになると、スループットが増加します(詳細については、WIP 制限に関する記事をご覧ください)。

ワークフローの拡張に関する課題

複数のアジャイルチームを展開している組織では、ワークフローに関する特別な課題があります。チームは多くの場合、固有のプロセスや文化を反映させてワークフローを最適化しようとします。それは当然のことです。しかし、さまざまなチームが異なるプロセスを使用して同じプロジェクトに取り組む場合には悩みの種となります。

アジャイルチームが協力して同じワークフローを共有すると、便利なことがあります。同じワークフローを使用するということは、同じ方法で作業の定義やデリバリーを行うことになるため、アジャイルチーム間での作業のトランジションが容易になります。通常、共通のプロセスの作成では、双方のチームの協調が求められます。これは願ってもない機会です。お互いに学び合い、最終的にワークフローが改善されます。

ヒント

アトラシアンの課題管理システムである Jira により、チームはワークフローを共有し、アジャイルボードでさまざまなプロセス表現を使用できます。この機能により、ワークフローのアセットの共有を犠牲にすることなく、柔軟な可視化を実現できます。

どのようなワークフローであっても、ワークフロー開発プロセスもアジャイルである必要があります。時折ふりかえりで話し合い、チームの文化や構成の変更に伴って適応させましょう。